From 931eb2dce062c0dc45ef5e82be5fe0f916e3253f Mon Sep 17 00:00:00 2001 From: Ajay Kannan Date: Fri, 28 Aug 2015 13:08:07 -0700 Subject: [PATCH] Remove extraneous 'site' folder and create shared resource folders. Update 0.0.6/index.html and 0.0.7/index.html to use those shared resources. --- apidocs/allclasses-frame.html | 176 - apidocs/allclasses-noframe.html | 176 - .../com/google/gcloud/AuthCredentials.html | 351 - apidocs/com/google/gcloud/BaseService.html | 269 - .../gcloud/ExceptionHandler.Builder.html | 286 - ...eptionHandler.Interceptor.RetryResult.html | 323 - .../gcloud/ExceptionHandler.Interceptor.html | 263 - .../com/google/gcloud/ExceptionHandler.html | 296 - .../RetryHelper.NonRetriableException.html | 225 - ...RetryHelper.RetriesExhaustedException.html | 226 - .../RetryHelper.RetryHelperException.html | 223 - ...RetryHelper.RetryInterruptedException.html | 266 - apidocs/com/google/gcloud/RetryHelper.html | 304 - .../google/gcloud/RetryParams.Builder.html | 339 - apidocs/com/google/gcloud/RetryParams.html | 549 - apidocs/com/google/gcloud/Service.html | 214 - .../google/gcloud/ServiceOptions.Builder.html | 370 - .../ServiceOptions.HttpTransportFactory.html | 215 - apidocs/com/google/gcloud/ServiceOptions.html | 477 - .../gcloud/class-use/AuthCredentials.html | 191 - .../google/gcloud/class-use/BaseService.html | 115 - .../class-use/ExceptionHandler.Builder.html | 173 - ...eptionHandler.Interceptor.RetryResult.html | 193 - .../ExceptionHandler.Interceptor.html | 157 - .../gcloud/class-use/ExceptionHandler.html | 178 - .../RetryHelper.NonRetriableException.html | 115 - ...RetryHelper.RetriesExhaustedException.html | 115 - .../RetryHelper.RetryHelperException.html | 189 - ...RetryHelper.RetryInterruptedException.html | 157 - .../google/gcloud/class-use/RetryHelper.html | 115 - .../gcloud/class-use/RetryParams.Builder.html | 191 - .../google/gcloud/class-use/RetryParams.html | 190 - .../com/google/gcloud/class-use/Service.html | 207 - .../class-use/ServiceOptions.Builder.html | 227 - .../ServiceOptions.HttpTransportFactory.html | 168 - .../gcloud/class-use/ServiceOptions.html | 274 - .../datastore/BaseDatastoreBatchWriter.html | 526 - .../google/gcloud/datastore/BaseEntity.html | 604 - .../gcloud/datastore/Batch.Response.html | 210 - .../com/google/gcloud/datastore/Batch.html | 405 - .../datastore/BatchOption.ForceWrites.html | 292 - .../google/gcloud/datastore/BatchOption.html | 251 - apidocs/com/google/gcloud/datastore/Blob.html | 453 - .../gcloud/datastore/BlobValue.Builder.html | 334 - .../google/gcloud/datastore/BlobValue.html | 355 - .../datastore/BooleanValue.Builder.html | 334 - .../google/gcloud/datastore/BooleanValue.html | 355 - .../com/google/gcloud/datastore/Cursor.html | 353 - .../gcloud/datastore/DatastoreReader.html | 274 - .../datastore/DatastoreReaderWriter.html | 196 - .../DatastoreService.TransactionCallable.html | 218 - .../gcloud/datastore/DatastoreService.html | 422 - .../DatastoreServiceException.Code.html | 464 - .../datastore/DatastoreServiceException.html | 325 - .../datastore/DatastoreServiceFactory.html | 276 - .../DatastoreServiceOptions.Builder.html | 268 - .../datastore/DatastoreServiceOptions.html | 389 - .../gcloud/datastore/DatastoreWriter.html | 294 - .../com/google/gcloud/datastore/DateTime.html | 418 - .../datastore/DateTimeValue.Builder.html | 334 - .../gcloud/datastore/DateTimeValue.html | 355 - .../gcloud/datastore/DoubleValue.Builder.html | 368 - .../google/gcloud/datastore/DoubleValue.html | 355 - .../gcloud/datastore/Entity.Builder.html | 503 - .../com/google/gcloud/datastore/Entity.html | 350 - .../gcloud/datastore/EntityValue.Builder.html | 334 - .../google/gcloud/datastore/EntityValue.html | 355 - .../gcloud/datastore/FullEntity.Builder.html | 505 - .../google/gcloud/datastore/FullEntity.html | 341 - .../gcloud/datastore/GqlQuery.Builder.html | 531 - .../com/google/gcloud/datastore/GqlQuery.html | 459 - .../datastore/IncompleteKey.Builder.html | 306 - .../gcloud/datastore/IncompleteKey.html | 442 - .../google/gcloud/datastore/Key.Builder.html | 332 - apidocs/com/google/gcloud/datastore/Key.html | 632 - .../google/gcloud/datastore/KeyFactory.html | 408 - .../gcloud/datastore/KeyValue.Builder.html | 368 - .../com/google/gcloud/datastore/KeyValue.html | 355 - .../gcloud/datastore/ListValue.Builder.html | 364 - .../google/gcloud/datastore/ListValue.html | 384 - .../gcloud/datastore/LongValue.Builder.html | 334 - .../google/gcloud/datastore/LongValue.html | 355 - .../gcloud/datastore/NullValue.Builder.html | 332 - .../google/gcloud/datastore/NullValue.html | 355 - .../google/gcloud/datastore/PathElement.html | 419 - .../gcloud/datastore/ProjectionEntity.html | 336 - .../gcloud/datastore/Query.ResultType.html | 362 - .../com/google/gcloud/datastore/Query.html | 444 - .../google/gcloud/datastore/QueryResults.html | 244 - .../com/google/gcloud/datastore/RawValue.html | 276 - .../gcloud/datastore/StringValue.Builder.html | 334 - .../google/gcloud/datastore/StringValue.html | 355 - .../StructuredQuery.CompositeFilter.html | 306 - .../StructuredQuery.EntityQueryBuilder.html | 360 - .../datastore/StructuredQuery.Filter.html | 236 - .../StructuredQuery.KeyQueryBuilder.html | 373 - .../StructuredQuery.OrderBy.Direction.html | 323 - .../datastore/StructuredQuery.OrderBy.html | 360 - .../StructuredQuery.Projection.Aggregate.html | 311 - .../datastore/StructuredQuery.Projection.html | 343 - ...redQuery.ProjectionEntityQueryBuilder.html | 446 - .../StructuredQuery.PropertyFilter.html | 930 - .../gcloud/datastore/StructuredQuery.html | 552 - .../datastore/Transaction.Response.html | 210 - .../google/gcloud/datastore/Transaction.html | 544 - .../TransactionOption.ForceWrites.html | 292 - ...ransactionOption.IsolationLevel.Level.html | 323 - .../TransactionOption.IsolationLevel.html | 303 - .../gcloud/datastore/TransactionOption.html | 281 - .../com/google/gcloud/datastore/Value.html | 418 - .../google/gcloud/datastore/ValueType.html | 462 - .../class-use/BaseDatastoreBatchWriter.html | 115 - .../datastore/class-use/BaseEntity.html | 171 - .../datastore/class-use/Batch.Response.html | 159 - .../gcloud/datastore/class-use/Batch.html | 159 - .../class-use/BatchOption.ForceWrites.html | 157 - .../datastore/class-use/BatchOption.html | 172 - .../gcloud/datastore/class-use/Blob.html | 237 - .../class-use/BlobValue.Builder.html | 161 - .../gcloud/datastore/class-use/BlobValue.html | 161 - .../class-use/BooleanValue.Builder.html | 161 - .../datastore/class-use/BooleanValue.html | 161 - .../gcloud/datastore/class-use/Cursor.html | 195 - .../datastore/class-use/DatastoreReader.html | 171 - .../class-use/DatastoreReaderWriter.html | 178 - .../DatastoreService.TransactionCallable.html | 161 - .../datastore/class-use/DatastoreService.html | 175 - .../DatastoreServiceException.Code.html | 189 - .../class-use/DatastoreServiceException.html | 158 - .../class-use/DatastoreServiceFactory.html | 159 - .../DatastoreServiceOptions.Builder.html | 169 - .../class-use/DatastoreServiceOptions.html | 198 - .../datastore/class-use/DatastoreWriter.html | 183 - .../gcloud/datastore/class-use/DateTime.html | 241 - .../class-use/DateTimeValue.Builder.html | 161 - .../datastore/class-use/DateTimeValue.html | 161 - .../class-use/DoubleValue.Builder.html | 161 - .../datastore/class-use/DoubleValue.html | 161 - .../datastore/class-use/Entity.Builder.html | 170 - .../gcloud/datastore/class-use/Entity.html | 284 - .../class-use/EntityValue.Builder.html | 165 - .../datastore/class-use/EntityValue.html | 161 - .../class-use/FullEntity.Builder.html | 165 - .../datastore/class-use/FullEntity.html | 273 - .../datastore/class-use/GqlQuery.Builder.html | 263 - .../gcloud/datastore/class-use/GqlQuery.html | 161 - .../class-use/IncompleteKey.Builder.html | 167 - .../datastore/class-use/IncompleteKey.html | 281 - .../datastore/class-use/Key.Builder.html | 199 - .../gcloud/datastore/class-use/Key.html | 403 - .../datastore/class-use/KeyFactory.html | 165 - .../datastore/class-use/KeyValue.Builder.html | 161 - .../gcloud/datastore/class-use/KeyValue.html | 161 - .../class-use/ListValue.Builder.html | 180 - .../gcloud/datastore/class-use/ListValue.html | 166 - .../class-use/LongValue.Builder.html | 161 - .../gcloud/datastore/class-use/LongValue.html | 161 - .../class-use/NullValue.Builder.html | 165 - .../gcloud/datastore/class-use/NullValue.html | 161 - .../datastore/class-use/PathElement.html | 163 - .../datastore/class-use/ProjectionEntity.html | 183 - .../datastore/class-use/Query.ResultType.html | 199 - .../gcloud/datastore/class-use/Query.html | 200 - .../datastore/class-use/QueryResults.html | 165 - .../gcloud/datastore/class-use/RawValue.html | 115 - .../class-use/StringValue.Builder.html | 161 - .../datastore/class-use/StringValue.html | 161 - .../StructuredQuery.CompositeFilter.html | 158 - .../StructuredQuery.EntityQueryBuilder.html | 159 - .../class-use/StructuredQuery.Filter.html | 193 - .../StructuredQuery.KeyQueryBuilder.html | 163 - .../StructuredQuery.OrderBy.Direction.html | 182 - .../class-use/StructuredQuery.OrderBy.html | 174 - .../StructuredQuery.Projection.Aggregate.html | 180 - .../class-use/StructuredQuery.Projection.html | 212 - ...redQuery.ProjectionEntityQueryBuilder.html | 187 - .../StructuredQuery.PropertyFilter.html | 365 - .../datastore/class-use/StructuredQuery.html | 169 - .../class-use/Transaction.Response.html | 159 - .../datastore/class-use/Transaction.html | 159 - .../TransactionOption.ForceWrites.html | 157 - ...ransactionOption.IsolationLevel.Level.html | 181 - .../TransactionOption.IsolationLevel.html | 161 - .../class-use/TransactionOption.html | 184 - .../gcloud/datastore/class-use/Value.html | 335 - .../gcloud/datastore/class-use/ValueType.html | 170 - .../gcloud/datastore/package-frame.html | 103 - .../gcloud/datastore/package-summary.html | 564 - .../google/gcloud/datastore/package-tree.html | 289 - .../google/gcloud/datastore/package-use.html | 445 - .../gcloud/examples/DatastoreExample.html | 267 - .../gcloud/examples/StorageExample.html | 293 - .../examples/class-use/DatastoreExample.html | 115 - .../examples/class-use/StorageExample.html | 115 - .../google/gcloud/examples/package-frame.html | 21 - .../gcloud/examples/package-summary.html | 141 - .../google/gcloud/examples/package-tree.html | 129 - .../google/gcloud/examples/package-use.html | 115 - apidocs/com/google/gcloud/package-frame.html | 45 - .../com/google/gcloud/package-summary.html | 249 - apidocs/com/google/gcloud/package-tree.html | 177 - apidocs/com/google/gcloud/package-use.html | 269 - ...storeRpc.DatastoreRpcException.Reason.html | 436 - .../DatastoreRpc.DatastoreRpcException.html | 347 - .../com/google/gcloud/spi/DatastoreRpc.html | 309 - .../gcloud/spi/DatastoreRpcFactory.html | 184 - .../google/gcloud/spi/DefaultStorageRpc.html | 659 - .../google/gcloud/spi/ServiceRpcFactory.html | 217 - .../google/gcloud/spi/ServiceRpcProvider.html | 269 - .../gcloud/spi/StorageRpc.BatchRequest.html | 298 - .../gcloud/spi/StorageRpc.BatchResponse.html | 298 - .../google/gcloud/spi/StorageRpc.Option.html | 492 - .../google/gcloud/spi/StorageRpc.Tuple.html | 256 - apidocs/com/google/gcloud/spi/StorageRpc.html | 552 - .../google/gcloud/spi/StorageRpcFactory.html | 184 - ...storeRpc.DatastoreRpcException.Reason.html | 175 - .../DatastoreRpc.DatastoreRpcException.html | 175 - .../gcloud/spi/class-use/DatastoreRpc.html | 155 - .../spi/class-use/DatastoreRpcFactory.html | 115 - .../spi/class-use/DefaultStorageRpc.html | 115 - .../spi/class-use/ServiceRpcFactory.html | 194 - .../spi/class-use/ServiceRpcProvider.html | 115 - .../class-use/StorageRpc.BatchRequest.html | 159 - .../class-use/StorageRpc.BatchResponse.html | 159 - .../spi/class-use/StorageRpc.Option.html | 391 - .../spi/class-use/StorageRpc.Tuple.html | 245 - .../gcloud/spi/class-use/StorageRpc.html | 168 - .../spi/class-use/StorageRpcFactory.html | 115 - .../com/google/gcloud/spi/package-frame.html | 41 - .../google/gcloud/spi/package-summary.html | 218 - .../com/google/gcloud/spi/package-tree.html | 169 - .../com/google/gcloud/spi/package-use.html | 195 - .../com/google/gcloud/storage/Acl.Domain.html | 292 - .../gcloud/storage/Acl.Entity.Type.html | 359 - .../com/google/gcloud/storage/Acl.Entity.html | 319 - .../com/google/gcloud/storage/Acl.Group.html | 292 - .../google/gcloud/storage/Acl.Project.html | 307 - .../google/gcloud/storage/Acl.RawEntity.html | 224 - .../com/google/gcloud/storage/Acl.Role.html | 335 - .../com/google/gcloud/storage/Acl.User.html | 318 - apidocs/com/google/gcloud/storage/Acl.html | 355 - .../gcloud/storage/BatchRequest.Builder.html | 284 - .../google/gcloud/storage/BatchRequest.html | 321 - .../gcloud/storage/BatchResponse.Result.html | 369 - .../google/gcloud/storage/BatchResponse.html | 355 - .../google/gcloud/storage/Blob.Builder.html | 369 - apidocs/com/google/gcloud/storage/Blob.html | 631 - .../gcloud/storage/BlobReadChannel.html | 257 - .../gcloud/storage/BlobWriteChannel.html | 196 - .../gcloud/storage/Bucket.AgeDeleteRule.html | 292 - .../google/gcloud/storage/Bucket.Builder.html | 356 - .../Bucket.CreatedBeforeDeleteRule.html | 292 - .../storage/Bucket.DeleteRule.Type.html | 359 - .../gcloud/storage/Bucket.DeleteRule.html | 289 - .../storage/Bucket.IsLiveDeleteRule.html | 292 - .../storage/Bucket.Location.Option.html | 335 - .../gcloud/storage/Bucket.Location.html | 354 - .../Bucket.NumNewerVersionsDeleteRule.html | 292 - .../storage/Bucket.StorageClass.Option.html | 323 - .../gcloud/storage/Bucket.StorageClass.html | 307 - apidocs/com/google/gcloud/storage/Bucket.html | 562 - .../google/gcloud/storage/Cors.Builder.html | 278 - .../google/gcloud/storage/Cors.Method.html | 371 - .../google/gcloud/storage/Cors.Origin.html | 326 - apidocs/com/google/gcloud/storage/Cors.html | 355 - .../com/google/gcloud/storage/ListResult.html | 337 - .../StorageService.BlobListOption.html | 321 - .../StorageService.BlobSourceOption.html | 321 - .../StorageService.BlobTargetOption.html | 347 - .../StorageService.BucketListOption.html | 308 - .../StorageService.BucketSourceOption.html | 295 - .../StorageService.BucketTargetOption.html | 321 - ...StorageService.ComposeRequest.Builder.html | 330 - ...rageService.ComposeRequest.SourceBlob.html | 245 - .../StorageService.ComposeRequest.html | 326 - .../StorageService.CopyRequest.Builder.html | 314 - .../storage/StorageService.CopyRequest.html | 350 - .../storage/StorageService.PredefinedAcl.html | 395 - .../google/gcloud/storage/StorageService.html | 590 - .../storage/StorageServiceException.html | 306 - .../gcloud/storage/StorageServiceFactory.html | 276 - .../StorageServiceOptions.Builder.html | 255 - .../gcloud/storage/StorageServiceOptions.html | 359 - .../gcloud/storage/class-use/Acl.Domain.html | 115 - .../storage/class-use/Acl.Entity.Type.html | 170 - .../gcloud/storage/class-use/Acl.Entity.html | 206 - .../gcloud/storage/class-use/Acl.Group.html | 115 - .../gcloud/storage/class-use/Acl.Project.html | 115 - .../storage/class-use/Acl.RawEntity.html | 115 - .../gcloud/storage/class-use/Acl.Role.html | 182 - .../gcloud/storage/class-use/Acl.User.html | 161 - .../google/gcloud/storage/class-use/Acl.html | 186 - .../class-use/BatchRequest.Builder.html | 180 - .../storage/class-use/BatchRequest.html | 172 - .../class-use/BatchResponse.Result.html | 194 - .../storage/class-use/BatchResponse.html | 159 - .../storage/class-use/Blob.Builder.html | 211 - .../google/gcloud/storage/class-use/Blob.html | 320 - .../storage/class-use/BlobReadChannel.html | 161 - .../storage/class-use/BlobWriteChannel.html | 160 - .../class-use/Bucket.AgeDeleteRule.html | 115 - .../storage/class-use/Bucket.Builder.html | 201 - .../Bucket.CreatedBeforeDeleteRule.html | 115 - .../class-use/Bucket.DeleteRule.Type.html | 170 - .../storage/class-use/Bucket.DeleteRule.html | 195 - .../class-use/Bucket.IsLiveDeleteRule.html | 115 - .../class-use/Bucket.Location.Option.html | 166 - .../storage/class-use/Bucket.Location.html | 186 - .../Bucket.NumNewerVersionsDeleteRule.html | 115 - .../class-use/Bucket.StorageClass.Option.html | 166 - .../class-use/Bucket.StorageClass.html | 182 - .../gcloud/storage/class-use/Bucket.html | 225 - .../storage/class-use/Cors.Builder.html | 177 - .../gcloud/storage/class-use/Cors.Method.html | 192 - .../gcloud/storage/class-use/Cors.Origin.html | 193 - .../google/gcloud/storage/class-use/Cors.html | 183 - .../gcloud/storage/class-use/ListResult.html | 172 - .../StorageService.BlobListOption.html | 185 - .../StorageService.BlobSourceOption.html | 251 - .../StorageService.BlobTargetOption.html | 244 - .../StorageService.BucketListOption.html | 180 - .../StorageService.BucketSourceOption.html | 184 - .../StorageService.BucketTargetOption.html | 192 - ...StorageService.ComposeRequest.Builder.html | 180 - ...rageService.ComposeRequest.SourceBlob.html | 157 - .../StorageService.ComposeRequest.html | 183 - .../StorageService.CopyRequest.Builder.html | 174 - .../class-use/StorageService.CopyRequest.html | 184 - .../StorageService.PredefinedAcl.html | 187 - .../storage/class-use/StorageService.html | 159 - .../class-use/StorageServiceException.html | 396 - .../class-use/StorageServiceFactory.html | 159 - .../StorageServiceOptions.Builder.html | 165 - .../class-use/StorageServiceOptions.html | 209 - .../google/gcloud/storage/package-frame.html | 79 - .../gcloud/storage/package-summary.html | 415 - .../google/gcloud/storage/package-tree.html | 250 - .../google/gcloud/storage/package-use.html | 324 - apidocs/constant-values.html | 200 - apidocs/deprecated-list.html | 140 - apidocs/index-all.html | 2717 --- apidocs/index.html | 75 - apidocs/overview-frame.html | 25 - apidocs/overview-summary.html | 149 - apidocs/overview-tree.html | 460 - apidocs/package-list | 5 - apidocs/resources/background.gif | Bin 2313 -> 0 bytes apidocs/resources/tab.gif | Bin 291 -> 0 bytes apidocs/resources/titlebar.gif | Bin 10701 -> 0 bytes apidocs/resources/titlebar_end.gif | Bin 849 -> 0 bytes apidocs/serialized-form.html | 1702 -- apidocs/stylesheet.css | 474 - changelog.html | 425 - checkstyle.html | 1286 -- checkstyle.rss | 1272 - .../com.google.gcloud.AuthCredentials.html | 393 - cobertura/com.google.gcloud.BaseService.html | 85 - .../com.google.gcloud.ExceptionHandler.html | 504 - cobertura/com.google.gcloud.RetryHelper.html | 469 - cobertura/com.google.gcloud.RetryParams.html | 544 - cobertura/com.google.gcloud.Service.html | 66 - .../com.google.gcloud.ServiceOptions.html | 549 - ...ud.datastore.BaseDatastoreBatchWriter.html | 370 - ...om.google.gcloud.datastore.BaseEntity.html | 719 - .../com.google.gcloud.datastore.BaseKey.html | 349 - .../com.google.gcloud.datastore.Batch.html | 133 - ...com.google.gcloud.datastore.BatchImpl.html | 169 - ...m.google.gcloud.datastore.BatchOption.html | 135 - .../com.google.gcloud.datastore.Blob.html | 306 - ...com.google.gcloud.datastore.BlobValue.html | 179 - ....google.gcloud.datastore.BooleanValue.html | 180 - .../com.google.gcloud.datastore.Cursor.html | 232 - ...gcloud.datastore.DatastoreBatchWriter.html | 186 - ...ogle.gcloud.datastore.DatastoreHelper.html | 177 - ...ogle.gcloud.datastore.DatastoreReader.html | 142 - ...cloud.datastore.DatastoreReaderWriter.html | 72 - ...gle.gcloud.datastore.DatastoreService.html | 243 - ...d.datastore.DatastoreServiceException.html | 292 - ...oud.datastore.DatastoreServiceFactory.html | 108 - ...gcloud.datastore.DatastoreServiceImpl.html | 662 - ...oud.datastore.DatastoreServiceOptions.html | 361 - ...ogle.gcloud.datastore.DatastoreWriter.html | 158 - .../com.google.gcloud.datastore.DateTime.html | 223 - ...google.gcloud.datastore.DateTimeValue.html | 180 - ...m.google.gcloud.datastore.DoubleValue.html | 180 - .../com.google.gcloud.datastore.Entity.html | 202 - ...m.google.gcloud.datastore.EntityValue.html | 193 - ...om.google.gcloud.datastore.FullEntity.html | 170 - .../com.google.gcloud.datastore.GqlQuery.html | 717 - ...google.gcloud.datastore.IncompleteKey.html | 195 - .../com.google.gcloud.datastore.Key.html | 397 - ...om.google.gcloud.datastore.KeyFactory.html | 154 - .../com.google.gcloud.datastore.KeyValue.html | 180 - ...com.google.gcloud.datastore.ListValue.html | 280 - ...com.google.gcloud.datastore.LongValue.html | 180 - ...com.google.gcloud.datastore.NullValue.html | 191 - ...m.google.gcloud.datastore.PathElement.html | 245 - ...gle.gcloud.datastore.ProjectionEntity.html | 182 - .../com.google.gcloud.datastore.Query.html | 436 - ....google.gcloud.datastore.QueryResults.html | 108 - ...gle.gcloud.datastore.QueryResultsImpl.html | 196 - .../com.google.gcloud.datastore.RawValue.html | 186 - ....google.gcloud.datastore.Serializable.html | 139 - ...m.google.gcloud.datastore.StringValue.html | 179 - ...ogle.gcloud.datastore.StructuredQuery.html | 1672 -- ...m.google.gcloud.datastore.Transaction.html | 281 - ...ogle.gcloud.datastore.TransactionImpl.html | 242 - ...le.gcloud.datastore.TransactionOption.html | 240 - ...com.google.gcloud.datastore.Validator.html | 140 - .../com.google.gcloud.datastore.Value.html | 446 - ....google.gcloud.datastore.ValueBuilder.html | 108 - ...ogle.gcloud.datastore.ValueMarshaller.html | 88 - ...com.google.gcloud.datastore.ValueType.html | 226 - .../com.google.gcloud.spi.DatastoreRpc.html | 243 - ...google.gcloud.spi.DatastoreRpcFactory.html | 70 - ...google.gcloud.spi.DefaultDatastoreRpc.html | 282 - ...m.google.gcloud.spi.DefaultStorageRpc.html | 894 - ...m.google.gcloud.spi.ServiceRpcFactory.html | 76 - ....google.gcloud.spi.ServiceRpcProvider.html | 96 - .../com.google.gcloud.spi.StorageRpc.html | 334 - ...m.google.gcloud.spi.StorageRpcFactory.html | 68 - cobertura/com.google.gcloud.storage.Acl.html | 499 - ...om.google.gcloud.storage.BatchRequest.html | 227 - ...m.google.gcloud.storage.BatchResponse.html | 315 - cobertura/com.google.gcloud.storage.Blob.html | 855 - ...google.gcloud.storage.BlobReadChannel.html | 108 - ...le.gcloud.storage.BlobReadChannelImpl.html | 251 - ...oogle.gcloud.storage.BlobWriteChannel.html | 88 - ....gcloud.storage.BlobWriterChannelImpl.html | 250 - .../com.google.gcloud.storage.Bucket.html | 1280 - cobertura/com.google.gcloud.storage.Cors.html | 439 - .../com.google.gcloud.storage.ListResult.html | 179 - .../com.google.gcloud.storage.Option.html | 156 - ....google.gcloud.storage.StorageService.html | 987 - ...cloud.storage.StorageServiceException.html | 118 - ....gcloud.storage.StorageServiceFactory.html | 108 - ...gle.gcloud.storage.StorageServiceImpl.html | 860 - ....gcloud.storage.StorageServiceOptions.html | 227 - cobertura/coverage.xml | 19272 ---------------- cobertura/css/help.css | 22 - cobertura/css/main.css | 131 - cobertura/css/sortabletable.css | 50 - cobertura/css/source-viewer.css | 73 - cobertura/css/tooltip.css | 49 - cobertura/frame-packages.html | 29 - ...urcefiles-com.google.gcloud.datastore.html | 173 - .../frame-sourcefiles-com.google.gcloud.html | 41 - ...ame-sourcefiles-com.google.gcloud.spi.html | 44 - ...sourcefiles-com.google.gcloud.storage.html | 71 - cobertura/frame-sourcefiles.html | 269 - ...e-summary-com.google.gcloud.datastore.html | 226 - .../frame-summary-com.google.gcloud.html | 76 - .../frame-summary-com.google.gcloud.spi.html | 65 - ...ame-summary-com.google.gcloud.storage.html | 157 - cobertura/frame-summary.html | 33 - cobertura/help.html | 31 - cobertura/images/blank.png | Bin 144 -> 0 bytes cobertura/images/downsimple.png | Bin 201 -> 0 bytes cobertura/images/upsimple.png | Bin 201 -> 0 bytes cobertura/index.html | 25 - cobertura/js/customsorttypes.js | 65 - cobertura/js/popup.js | 8 - cobertura/js/sortabletable.js | 455 - cobertura/js/stringbuilder.js | 79 - css/apache-maven-fluido-1.3.1.min.css | 9 - css/github.min.css | 1 + css/normalize.css | 527 + css/print.css | 23 - css/site.css | 1318 +- dependencies.html | 1386 -- dev-activity.html | 188 - distribution-management.html | 180 - file-activity.html | 427 - images/accessories-text-editor.png | Bin 746 -> 0 bytes images/add.gif | Bin 397 -> 0 bytes images/apache-maven-project-2.png | Bin 33442 -> 0 bytes images/application-certificate.png | Bin 923 -> 0 bytes images/close.gif | Bin 279 -> 0 bytes images/contact-new.png | Bin 736 -> 0 bytes images/document-properties.png | Bin 577 -> 0 bytes images/drive-harddisk.png | Bin 700 -> 0 bytes images/fix.gif | Bin 366 -> 0 bytes images/icon_error_sml.gif | Bin 633 -> 0 bytes images/icon_help_sml.gif | Bin 1072 -> 0 bytes images/icon_info_sml.gif | Bin 638 -> 0 bytes images/icon_success_sml.gif | Bin 604 -> 0 bytes images/icon_warning_sml.gif | Bin 625 -> 0 bytes images/image-x-generic.png | Bin 662 -> 0 bytes images/internet-web-browser.png | Bin 1017 -> 0 bytes images/logos/build-by-maven-black.png | Bin 2294 -> 0 bytes images/logos/build-by-maven-white.png | Bin 2260 -> 0 bytes images/logos/maven-feather.png | Bin 3330 -> 0 bytes images/network-server.png | Bin 536 -> 0 bytes images/package-x-generic.png | Bin 717 -> 0 bytes images/profiles/pre-release.png | Bin 32607 -> 0 bytes images/profiles/retired.png | Bin 22003 -> 0 bytes images/profiles/sandbox.png | Bin 33010 -> 0 bytes images/remove.gif | Bin 607 -> 0 bytes images/rss.png | Bin 474 -> 0 bytes images/update.gif | Bin 1090 -> 0 bytes images/window-new.png | Bin 583 -> 0 bytes img/icon-arrow-bullet.svg | 7 + img/icon-dropdown-faq.svg | 7 + img/icon-dropdown.svg | 7 + img/icon-lang-java-duke-white.svg | 49 + img/icon-lang-java-duke.svg | 49 + img/icon-lang-nodejs.svg | 16 + img/icon-lang-python.svg | 21 + img/icon-lang-ruby.svg | 23 + img/icon-link-github.svg | 19 + img/icon-link-package-manager.svg | 19 + img/icon-link-stackoverflow.svg | 16 + img/icon-menu.svg | 11 + img/icon-table-check.svg | 7 + img/lang-bg.png | Bin 0 -> 966 bytes img/logo-full.svg | 112 + img/logo.svg | 25 + index.html | 2 +- integration.html | 184 - issue-tracking.html | 181 - js/apache-maven-fluido-1.3.1.min.js | 21 - js/main.js | 7 + js/plugins.js | 24 + js/vendor/jquery-1.10.2.min.js | 6 + js/vendor/modernizr-2.6.2.min.js | 4 + js/vendor/prettify.js | 30 + license.html | 382 - project-info.html | 206 - project-reports.html | 196 - project-summary.html | 223 - source-repository.html | 194 - surefire-report.html | 1604 -- team-list.html | 198 - 533 files changed, 2305 insertions(+), 149500 deletions(-) delete mode 100644 apidocs/allclasses-frame.html delete mode 100644 apidocs/allclasses-noframe.html delete mode 100644 apidocs/com/google/gcloud/AuthCredentials.html delete mode 100644 apidocs/com/google/gcloud/BaseService.html delete mode 100644 apidocs/com/google/gcloud/ExceptionHandler.Builder.html delete mode 100644 apidocs/com/google/gcloud/ExceptionHandler.Interceptor.RetryResult.html delete mode 100644 apidocs/com/google/gcloud/ExceptionHandler.Interceptor.html delete mode 100644 apidocs/com/google/gcloud/ExceptionHandler.html delete mode 100644 apidocs/com/google/gcloud/RetryHelper.NonRetriableException.html delete mode 100644 apidocs/com/google/gcloud/RetryHelper.RetriesExhaustedException.html delete mode 100644 apidocs/com/google/gcloud/RetryHelper.RetryHelperException.html delete mode 100644 apidocs/com/google/gcloud/RetryHelper.RetryInterruptedException.html delete mode 100644 apidocs/com/google/gcloud/RetryHelper.html delete mode 100644 apidocs/com/google/gcloud/RetryParams.Builder.html delete mode 100644 apidocs/com/google/gcloud/RetryParams.html delete mode 100644 apidocs/com/google/gcloud/Service.html delete mode 100644 apidocs/com/google/gcloud/ServiceOptions.Builder.html delete mode 100644 apidocs/com/google/gcloud/ServiceOptions.HttpTransportFactory.html delete mode 100644 apidocs/com/google/gcloud/ServiceOptions.html delete mode 100644 apidocs/com/google/gcloud/class-use/AuthCredentials.html delete mode 100644 apidocs/com/google/gcloud/class-use/BaseService.html delete mode 100644 apidocs/com/google/gcloud/class-use/ExceptionHandler.Builder.html delete mode 100644 apidocs/com/google/gcloud/class-use/ExceptionHandler.Interceptor.RetryResult.html delete mode 100644 apidocs/com/google/gcloud/class-use/ExceptionHandler.Interceptor.html delete mode 100644 apidocs/com/google/gcloud/class-use/ExceptionHandler.html delete mode 100644 apidocs/com/google/gcloud/class-use/RetryHelper.NonRetriableException.html delete mode 100644 apidocs/com/google/gcloud/class-use/RetryHelper.RetriesExhaustedException.html delete mode 100644 apidocs/com/google/gcloud/class-use/RetryHelper.RetryHelperException.html delete mode 100644 apidocs/com/google/gcloud/class-use/RetryHelper.RetryInterruptedException.html delete mode 100644 apidocs/com/google/gcloud/class-use/RetryHelper.html delete mode 100644 apidocs/com/google/gcloud/class-use/RetryParams.Builder.html delete mode 100644 apidocs/com/google/gcloud/class-use/RetryParams.html delete mode 100644 apidocs/com/google/gcloud/class-use/Service.html delete mode 100644 apidocs/com/google/gcloud/class-use/ServiceOptions.Builder.html delete mode 100644 apidocs/com/google/gcloud/class-use/ServiceOptions.HttpTransportFactory.html delete mode 100644 apidocs/com/google/gcloud/class-use/ServiceOptions.html delete mode 100644 apidocs/com/google/gcloud/datastore/BaseDatastoreBatchWriter.html delete mode 100644 apidocs/com/google/gcloud/datastore/BaseEntity.html delete mode 100644 apidocs/com/google/gcloud/datastore/Batch.Response.html delete mode 100644 apidocs/com/google/gcloud/datastore/Batch.html delete mode 100644 apidocs/com/google/gcloud/datastore/BatchOption.ForceWrites.html delete mode 100644 apidocs/com/google/gcloud/datastore/BatchOption.html delete mode 100644 apidocs/com/google/gcloud/datastore/Blob.html delete mode 100644 apidocs/com/google/gcloud/datastore/BlobValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/BlobValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/BooleanValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/BooleanValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/Cursor.html delete mode 100644 apidocs/com/google/gcloud/datastore/DatastoreReader.html delete mode 100644 apidocs/com/google/gcloud/datastore/DatastoreReaderWriter.html delete mode 100644 apidocs/com/google/gcloud/datastore/DatastoreService.TransactionCallable.html delete mode 100644 apidocs/com/google/gcloud/datastore/DatastoreService.html delete mode 100644 apidocs/com/google/gcloud/datastore/DatastoreServiceException.Code.html delete mode 100644 apidocs/com/google/gcloud/datastore/DatastoreServiceException.html delete mode 100644 apidocs/com/google/gcloud/datastore/DatastoreServiceFactory.html delete mode 100644 apidocs/com/google/gcloud/datastore/DatastoreServiceOptions.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/DatastoreServiceOptions.html delete mode 100644 apidocs/com/google/gcloud/datastore/DatastoreWriter.html delete mode 100644 apidocs/com/google/gcloud/datastore/DateTime.html delete mode 100644 apidocs/com/google/gcloud/datastore/DateTimeValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/DateTimeValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/DoubleValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/DoubleValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/Entity.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/Entity.html delete mode 100644 apidocs/com/google/gcloud/datastore/EntityValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/EntityValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/FullEntity.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/FullEntity.html delete mode 100644 apidocs/com/google/gcloud/datastore/GqlQuery.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/GqlQuery.html delete mode 100644 apidocs/com/google/gcloud/datastore/IncompleteKey.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/IncompleteKey.html delete mode 100644 apidocs/com/google/gcloud/datastore/Key.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/Key.html delete mode 100644 apidocs/com/google/gcloud/datastore/KeyFactory.html delete mode 100644 apidocs/com/google/gcloud/datastore/KeyValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/KeyValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/ListValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/ListValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/LongValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/LongValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/NullValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/NullValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/PathElement.html delete mode 100644 apidocs/com/google/gcloud/datastore/ProjectionEntity.html delete mode 100644 apidocs/com/google/gcloud/datastore/Query.ResultType.html delete mode 100644 apidocs/com/google/gcloud/datastore/Query.html delete mode 100644 apidocs/com/google/gcloud/datastore/QueryResults.html delete mode 100644 apidocs/com/google/gcloud/datastore/RawValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/StringValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/StringValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/StructuredQuery.CompositeFilter.html delete mode 100644 apidocs/com/google/gcloud/datastore/StructuredQuery.EntityQueryBuilder.html delete mode 100644 apidocs/com/google/gcloud/datastore/StructuredQuery.Filter.html delete mode 100644 apidocs/com/google/gcloud/datastore/StructuredQuery.KeyQueryBuilder.html delete mode 100644 apidocs/com/google/gcloud/datastore/StructuredQuery.OrderBy.Direction.html delete mode 100644 apidocs/com/google/gcloud/datastore/StructuredQuery.OrderBy.html delete mode 100644 apidocs/com/google/gcloud/datastore/StructuredQuery.Projection.Aggregate.html delete mode 100644 apidocs/com/google/gcloud/datastore/StructuredQuery.Projection.html delete mode 100644 apidocs/com/google/gcloud/datastore/StructuredQuery.ProjectionEntityQueryBuilder.html delete mode 100644 apidocs/com/google/gcloud/datastore/StructuredQuery.PropertyFilter.html delete mode 100644 apidocs/com/google/gcloud/datastore/StructuredQuery.html delete mode 100644 apidocs/com/google/gcloud/datastore/Transaction.Response.html delete mode 100644 apidocs/com/google/gcloud/datastore/Transaction.html delete mode 100644 apidocs/com/google/gcloud/datastore/TransactionOption.ForceWrites.html delete mode 100644 apidocs/com/google/gcloud/datastore/TransactionOption.IsolationLevel.Level.html delete mode 100644 apidocs/com/google/gcloud/datastore/TransactionOption.IsolationLevel.html delete mode 100644 apidocs/com/google/gcloud/datastore/TransactionOption.html delete mode 100644 apidocs/com/google/gcloud/datastore/Value.html delete mode 100644 apidocs/com/google/gcloud/datastore/ValueType.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/BaseDatastoreBatchWriter.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/BaseEntity.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/Batch.Response.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/Batch.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/BatchOption.ForceWrites.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/BatchOption.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/Blob.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/BlobValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/BlobValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/BooleanValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/BooleanValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/Cursor.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/DatastoreReader.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/DatastoreReaderWriter.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/DatastoreService.TransactionCallable.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/DatastoreService.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceException.Code.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceException.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceFactory.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceOptions.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceOptions.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/DatastoreWriter.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/DateTime.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/DateTimeValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/DateTimeValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/DoubleValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/DoubleValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/Entity.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/Entity.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/EntityValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/EntityValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/FullEntity.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/FullEntity.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/GqlQuery.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/GqlQuery.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/IncompleteKey.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/IncompleteKey.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/Key.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/Key.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/KeyFactory.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/KeyValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/KeyValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/ListValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/ListValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/LongValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/LongValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/NullValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/NullValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/PathElement.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/ProjectionEntity.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/Query.ResultType.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/Query.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/QueryResults.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/RawValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/StringValue.Builder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/StringValue.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.CompositeFilter.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.EntityQueryBuilder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.Filter.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.KeyQueryBuilder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.OrderBy.Direction.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.OrderBy.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.Projection.Aggregate.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.Projection.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.ProjectionEntityQueryBuilder.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.PropertyFilter.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/Transaction.Response.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/Transaction.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/TransactionOption.ForceWrites.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/TransactionOption.IsolationLevel.Level.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/TransactionOption.IsolationLevel.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/TransactionOption.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/Value.html delete mode 100644 apidocs/com/google/gcloud/datastore/class-use/ValueType.html delete mode 100644 apidocs/com/google/gcloud/datastore/package-frame.html delete mode 100644 apidocs/com/google/gcloud/datastore/package-summary.html delete mode 100644 apidocs/com/google/gcloud/datastore/package-tree.html delete mode 100644 apidocs/com/google/gcloud/datastore/package-use.html delete mode 100644 apidocs/com/google/gcloud/examples/DatastoreExample.html delete mode 100644 apidocs/com/google/gcloud/examples/StorageExample.html delete mode 100644 apidocs/com/google/gcloud/examples/class-use/DatastoreExample.html delete mode 100644 apidocs/com/google/gcloud/examples/class-use/StorageExample.html delete mode 100644 apidocs/com/google/gcloud/examples/package-frame.html delete mode 100644 apidocs/com/google/gcloud/examples/package-summary.html delete mode 100644 apidocs/com/google/gcloud/examples/package-tree.html delete mode 100644 apidocs/com/google/gcloud/examples/package-use.html delete mode 100644 apidocs/com/google/gcloud/package-frame.html delete mode 100644 apidocs/com/google/gcloud/package-summary.html delete mode 100644 apidocs/com/google/gcloud/package-tree.html delete mode 100644 apidocs/com/google/gcloud/package-use.html delete mode 100644 apidocs/com/google/gcloud/spi/DatastoreRpc.DatastoreRpcException.Reason.html delete mode 100644 apidocs/com/google/gcloud/spi/DatastoreRpc.DatastoreRpcException.html delete mode 100644 apidocs/com/google/gcloud/spi/DatastoreRpc.html delete mode 100644 apidocs/com/google/gcloud/spi/DatastoreRpcFactory.html delete mode 100644 apidocs/com/google/gcloud/spi/DefaultStorageRpc.html delete mode 100644 apidocs/com/google/gcloud/spi/ServiceRpcFactory.html delete mode 100644 apidocs/com/google/gcloud/spi/ServiceRpcProvider.html delete mode 100644 apidocs/com/google/gcloud/spi/StorageRpc.BatchRequest.html delete mode 100644 apidocs/com/google/gcloud/spi/StorageRpc.BatchResponse.html delete mode 100644 apidocs/com/google/gcloud/spi/StorageRpc.Option.html delete mode 100644 apidocs/com/google/gcloud/spi/StorageRpc.Tuple.html delete mode 100644 apidocs/com/google/gcloud/spi/StorageRpc.html delete mode 100644 apidocs/com/google/gcloud/spi/StorageRpcFactory.html delete mode 100644 apidocs/com/google/gcloud/spi/class-use/DatastoreRpc.DatastoreRpcException.Reason.html delete mode 100644 apidocs/com/google/gcloud/spi/class-use/DatastoreRpc.DatastoreRpcException.html delete mode 100644 apidocs/com/google/gcloud/spi/class-use/DatastoreRpc.html delete mode 100644 apidocs/com/google/gcloud/spi/class-use/DatastoreRpcFactory.html delete mode 100644 apidocs/com/google/gcloud/spi/class-use/DefaultStorageRpc.html delete mode 100644 apidocs/com/google/gcloud/spi/class-use/ServiceRpcFactory.html delete mode 100644 apidocs/com/google/gcloud/spi/class-use/ServiceRpcProvider.html delete mode 100644 apidocs/com/google/gcloud/spi/class-use/StorageRpc.BatchRequest.html delete mode 100644 apidocs/com/google/gcloud/spi/class-use/StorageRpc.BatchResponse.html delete mode 100644 apidocs/com/google/gcloud/spi/class-use/StorageRpc.Option.html delete mode 100644 apidocs/com/google/gcloud/spi/class-use/StorageRpc.Tuple.html delete mode 100644 apidocs/com/google/gcloud/spi/class-use/StorageRpc.html delete mode 100644 apidocs/com/google/gcloud/spi/class-use/StorageRpcFactory.html delete mode 100644 apidocs/com/google/gcloud/spi/package-frame.html delete mode 100644 apidocs/com/google/gcloud/spi/package-summary.html delete mode 100644 apidocs/com/google/gcloud/spi/package-tree.html delete mode 100644 apidocs/com/google/gcloud/spi/package-use.html delete mode 100644 apidocs/com/google/gcloud/storage/Acl.Domain.html delete mode 100644 apidocs/com/google/gcloud/storage/Acl.Entity.Type.html delete mode 100644 apidocs/com/google/gcloud/storage/Acl.Entity.html delete mode 100644 apidocs/com/google/gcloud/storage/Acl.Group.html delete mode 100644 apidocs/com/google/gcloud/storage/Acl.Project.html delete mode 100644 apidocs/com/google/gcloud/storage/Acl.RawEntity.html delete mode 100644 apidocs/com/google/gcloud/storage/Acl.Role.html delete mode 100644 apidocs/com/google/gcloud/storage/Acl.User.html delete mode 100644 apidocs/com/google/gcloud/storage/Acl.html delete mode 100644 apidocs/com/google/gcloud/storage/BatchRequest.Builder.html delete mode 100644 apidocs/com/google/gcloud/storage/BatchRequest.html delete mode 100644 apidocs/com/google/gcloud/storage/BatchResponse.Result.html delete mode 100644 apidocs/com/google/gcloud/storage/BatchResponse.html delete mode 100644 apidocs/com/google/gcloud/storage/Blob.Builder.html delete mode 100644 apidocs/com/google/gcloud/storage/Blob.html delete mode 100644 apidocs/com/google/gcloud/storage/BlobReadChannel.html delete mode 100644 apidocs/com/google/gcloud/storage/BlobWriteChannel.html delete mode 100644 apidocs/com/google/gcloud/storage/Bucket.AgeDeleteRule.html delete mode 100644 apidocs/com/google/gcloud/storage/Bucket.Builder.html delete mode 100644 apidocs/com/google/gcloud/storage/Bucket.CreatedBeforeDeleteRule.html delete mode 100644 apidocs/com/google/gcloud/storage/Bucket.DeleteRule.Type.html delete mode 100644 apidocs/com/google/gcloud/storage/Bucket.DeleteRule.html delete mode 100644 apidocs/com/google/gcloud/storage/Bucket.IsLiveDeleteRule.html delete mode 100644 apidocs/com/google/gcloud/storage/Bucket.Location.Option.html delete mode 100644 apidocs/com/google/gcloud/storage/Bucket.Location.html delete mode 100644 apidocs/com/google/gcloud/storage/Bucket.NumNewerVersionsDeleteRule.html delete mode 100644 apidocs/com/google/gcloud/storage/Bucket.StorageClass.Option.html delete mode 100644 apidocs/com/google/gcloud/storage/Bucket.StorageClass.html delete mode 100644 apidocs/com/google/gcloud/storage/Bucket.html delete mode 100644 apidocs/com/google/gcloud/storage/Cors.Builder.html delete mode 100644 apidocs/com/google/gcloud/storage/Cors.Method.html delete mode 100644 apidocs/com/google/gcloud/storage/Cors.Origin.html delete mode 100644 apidocs/com/google/gcloud/storage/Cors.html delete mode 100644 apidocs/com/google/gcloud/storage/ListResult.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageService.BlobListOption.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageService.BlobSourceOption.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageService.BlobTargetOption.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageService.BucketListOption.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageService.BucketSourceOption.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageService.BucketTargetOption.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageService.ComposeRequest.Builder.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageService.ComposeRequest.SourceBlob.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageService.ComposeRequest.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageService.CopyRequest.Builder.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageService.CopyRequest.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageService.PredefinedAcl.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageService.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageServiceException.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageServiceFactory.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageServiceOptions.Builder.html delete mode 100644 apidocs/com/google/gcloud/storage/StorageServiceOptions.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Acl.Domain.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Acl.Entity.Type.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Acl.Entity.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Acl.Group.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Acl.Project.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Acl.RawEntity.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Acl.Role.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Acl.User.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Acl.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/BatchRequest.Builder.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/BatchRequest.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/BatchResponse.Result.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/BatchResponse.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Blob.Builder.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Blob.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/BlobReadChannel.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/BlobWriteChannel.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Bucket.AgeDeleteRule.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Bucket.Builder.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Bucket.CreatedBeforeDeleteRule.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Bucket.DeleteRule.Type.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Bucket.DeleteRule.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Bucket.IsLiveDeleteRule.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Bucket.Location.Option.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Bucket.Location.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Bucket.NumNewerVersionsDeleteRule.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Bucket.StorageClass.Option.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Bucket.StorageClass.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Bucket.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Cors.Builder.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Cors.Method.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Cors.Origin.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/Cors.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/ListResult.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageService.BlobListOption.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageService.BlobSourceOption.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageService.BlobTargetOption.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageService.BucketListOption.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageService.BucketSourceOption.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageService.BucketTargetOption.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageService.ComposeRequest.Builder.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageService.ComposeRequest.SourceBlob.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageService.ComposeRequest.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageService.CopyRequest.Builder.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageService.CopyRequest.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageService.PredefinedAcl.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageService.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageServiceException.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageServiceFactory.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageServiceOptions.Builder.html delete mode 100644 apidocs/com/google/gcloud/storage/class-use/StorageServiceOptions.html delete mode 100644 apidocs/com/google/gcloud/storage/package-frame.html delete mode 100644 apidocs/com/google/gcloud/storage/package-summary.html delete mode 100644 apidocs/com/google/gcloud/storage/package-tree.html delete mode 100644 apidocs/com/google/gcloud/storage/package-use.html delete mode 100644 apidocs/constant-values.html delete mode 100644 apidocs/deprecated-list.html delete mode 100644 apidocs/index-all.html delete mode 100644 apidocs/index.html delete mode 100644 apidocs/overview-frame.html delete mode 100644 apidocs/overview-summary.html delete mode 100644 apidocs/overview-tree.html delete mode 100644 apidocs/package-list delete mode 100644 apidocs/resources/background.gif delete mode 100644 apidocs/resources/tab.gif delete mode 100644 apidocs/resources/titlebar.gif delete mode 100644 apidocs/resources/titlebar_end.gif delete mode 100644 apidocs/serialized-form.html delete mode 100644 apidocs/stylesheet.css delete mode 100644 changelog.html delete mode 100644 checkstyle.html delete mode 100644 checkstyle.rss delete mode 100644 cobertura/com.google.gcloud.AuthCredentials.html delete mode 100644 cobertura/com.google.gcloud.BaseService.html delete mode 100644 cobertura/com.google.gcloud.ExceptionHandler.html delete mode 100644 cobertura/com.google.gcloud.RetryHelper.html delete mode 100644 cobertura/com.google.gcloud.RetryParams.html delete mode 100644 cobertura/com.google.gcloud.Service.html delete mode 100644 cobertura/com.google.gcloud.ServiceOptions.html delete mode 100644 cobertura/com.google.gcloud.datastore.BaseDatastoreBatchWriter.html delete mode 100644 cobertura/com.google.gcloud.datastore.BaseEntity.html delete mode 100644 cobertura/com.google.gcloud.datastore.BaseKey.html delete mode 100644 cobertura/com.google.gcloud.datastore.Batch.html delete mode 100644 cobertura/com.google.gcloud.datastore.BatchImpl.html delete mode 100644 cobertura/com.google.gcloud.datastore.BatchOption.html delete mode 100644 cobertura/com.google.gcloud.datastore.Blob.html delete mode 100644 cobertura/com.google.gcloud.datastore.BlobValue.html delete mode 100644 cobertura/com.google.gcloud.datastore.BooleanValue.html delete mode 100644 cobertura/com.google.gcloud.datastore.Cursor.html delete mode 100644 cobertura/com.google.gcloud.datastore.DatastoreBatchWriter.html delete mode 100644 cobertura/com.google.gcloud.datastore.DatastoreHelper.html delete mode 100644 cobertura/com.google.gcloud.datastore.DatastoreReader.html delete mode 100644 cobertura/com.google.gcloud.datastore.DatastoreReaderWriter.html delete mode 100644 cobertura/com.google.gcloud.datastore.DatastoreService.html delete mode 100644 cobertura/com.google.gcloud.datastore.DatastoreServiceException.html delete mode 100644 cobertura/com.google.gcloud.datastore.DatastoreServiceFactory.html delete mode 100644 cobertura/com.google.gcloud.datastore.DatastoreServiceImpl.html delete mode 100644 cobertura/com.google.gcloud.datastore.DatastoreServiceOptions.html delete mode 100644 cobertura/com.google.gcloud.datastore.DatastoreWriter.html delete mode 100644 cobertura/com.google.gcloud.datastore.DateTime.html delete mode 100644 cobertura/com.google.gcloud.datastore.DateTimeValue.html delete mode 100644 cobertura/com.google.gcloud.datastore.DoubleValue.html delete mode 100644 cobertura/com.google.gcloud.datastore.Entity.html delete mode 100644 cobertura/com.google.gcloud.datastore.EntityValue.html delete mode 100644 cobertura/com.google.gcloud.datastore.FullEntity.html delete mode 100644 cobertura/com.google.gcloud.datastore.GqlQuery.html delete mode 100644 cobertura/com.google.gcloud.datastore.IncompleteKey.html delete mode 100644 cobertura/com.google.gcloud.datastore.Key.html delete mode 100644 cobertura/com.google.gcloud.datastore.KeyFactory.html delete mode 100644 cobertura/com.google.gcloud.datastore.KeyValue.html delete mode 100644 cobertura/com.google.gcloud.datastore.ListValue.html delete mode 100644 cobertura/com.google.gcloud.datastore.LongValue.html delete mode 100644 cobertura/com.google.gcloud.datastore.NullValue.html delete mode 100644 cobertura/com.google.gcloud.datastore.PathElement.html delete mode 100644 cobertura/com.google.gcloud.datastore.ProjectionEntity.html delete mode 100644 cobertura/com.google.gcloud.datastore.Query.html delete mode 100644 cobertura/com.google.gcloud.datastore.QueryResults.html delete mode 100644 cobertura/com.google.gcloud.datastore.QueryResultsImpl.html delete mode 100644 cobertura/com.google.gcloud.datastore.RawValue.html delete mode 100644 cobertura/com.google.gcloud.datastore.Serializable.html delete mode 100644 cobertura/com.google.gcloud.datastore.StringValue.html delete mode 100644 cobertura/com.google.gcloud.datastore.StructuredQuery.html delete mode 100644 cobertura/com.google.gcloud.datastore.Transaction.html delete mode 100644 cobertura/com.google.gcloud.datastore.TransactionImpl.html delete mode 100644 cobertura/com.google.gcloud.datastore.TransactionOption.html delete mode 100644 cobertura/com.google.gcloud.datastore.Validator.html delete mode 100644 cobertura/com.google.gcloud.datastore.Value.html delete mode 100644 cobertura/com.google.gcloud.datastore.ValueBuilder.html delete mode 100644 cobertura/com.google.gcloud.datastore.ValueMarshaller.html delete mode 100644 cobertura/com.google.gcloud.datastore.ValueType.html delete mode 100644 cobertura/com.google.gcloud.spi.DatastoreRpc.html delete mode 100644 cobertura/com.google.gcloud.spi.DatastoreRpcFactory.html delete mode 100644 cobertura/com.google.gcloud.spi.DefaultDatastoreRpc.html delete mode 100644 cobertura/com.google.gcloud.spi.DefaultStorageRpc.html delete mode 100644 cobertura/com.google.gcloud.spi.ServiceRpcFactory.html delete mode 100644 cobertura/com.google.gcloud.spi.ServiceRpcProvider.html delete mode 100644 cobertura/com.google.gcloud.spi.StorageRpc.html delete mode 100644 cobertura/com.google.gcloud.spi.StorageRpcFactory.html delete mode 100644 cobertura/com.google.gcloud.storage.Acl.html delete mode 100644 cobertura/com.google.gcloud.storage.BatchRequest.html delete mode 100644 cobertura/com.google.gcloud.storage.BatchResponse.html delete mode 100644 cobertura/com.google.gcloud.storage.Blob.html delete mode 100644 cobertura/com.google.gcloud.storage.BlobReadChannel.html delete mode 100644 cobertura/com.google.gcloud.storage.BlobReadChannelImpl.html delete mode 100644 cobertura/com.google.gcloud.storage.BlobWriteChannel.html delete mode 100644 cobertura/com.google.gcloud.storage.BlobWriterChannelImpl.html delete mode 100644 cobertura/com.google.gcloud.storage.Bucket.html delete mode 100644 cobertura/com.google.gcloud.storage.Cors.html delete mode 100644 cobertura/com.google.gcloud.storage.ListResult.html delete mode 100644 cobertura/com.google.gcloud.storage.Option.html delete mode 100644 cobertura/com.google.gcloud.storage.StorageService.html delete mode 100644 cobertura/com.google.gcloud.storage.StorageServiceException.html delete mode 100644 cobertura/com.google.gcloud.storage.StorageServiceFactory.html delete mode 100644 cobertura/com.google.gcloud.storage.StorageServiceImpl.html delete mode 100644 cobertura/com.google.gcloud.storage.StorageServiceOptions.html delete mode 100644 cobertura/coverage.xml delete mode 100644 cobertura/css/help.css delete mode 100644 cobertura/css/main.css delete mode 100644 cobertura/css/sortabletable.css delete mode 100644 cobertura/css/source-viewer.css delete mode 100644 cobertura/css/tooltip.css delete mode 100644 cobertura/frame-packages.html delete mode 100644 cobertura/frame-sourcefiles-com.google.gcloud.datastore.html delete mode 100644 cobertura/frame-sourcefiles-com.google.gcloud.html delete mode 100644 cobertura/frame-sourcefiles-com.google.gcloud.spi.html delete mode 100644 cobertura/frame-sourcefiles-com.google.gcloud.storage.html delete mode 100644 cobertura/frame-sourcefiles.html delete mode 100644 cobertura/frame-summary-com.google.gcloud.datastore.html delete mode 100644 cobertura/frame-summary-com.google.gcloud.html delete mode 100644 cobertura/frame-summary-com.google.gcloud.spi.html delete mode 100644 cobertura/frame-summary-com.google.gcloud.storage.html delete mode 100644 cobertura/frame-summary.html delete mode 100644 cobertura/help.html delete mode 100644 cobertura/images/blank.png delete mode 100644 cobertura/images/downsimple.png delete mode 100644 cobertura/images/upsimple.png delete mode 100644 cobertura/index.html delete mode 100644 cobertura/js/customsorttypes.js delete mode 100644 cobertura/js/popup.js delete mode 100644 cobertura/js/sortabletable.js delete mode 100644 cobertura/js/stringbuilder.js delete mode 100644 css/apache-maven-fluido-1.3.1.min.css create mode 100644 css/github.min.css create mode 100644 css/normalize.css delete mode 100644 css/print.css delete mode 100644 dependencies.html delete mode 100644 dev-activity.html delete mode 100644 distribution-management.html delete mode 100644 file-activity.html delete mode 100644 images/accessories-text-editor.png delete mode 100644 images/add.gif delete mode 100644 images/apache-maven-project-2.png delete mode 100644 images/application-certificate.png delete mode 100644 images/close.gif delete mode 100644 images/contact-new.png delete mode 100644 images/document-properties.png delete mode 100644 images/drive-harddisk.png delete mode 100644 images/fix.gif delete mode 100644 images/icon_error_sml.gif delete mode 100644 images/icon_help_sml.gif delete mode 100644 images/icon_info_sml.gif delete mode 100644 images/icon_success_sml.gif delete mode 100644 images/icon_warning_sml.gif delete mode 100644 images/image-x-generic.png delete mode 100644 images/internet-web-browser.png delete mode 100644 images/logos/build-by-maven-black.png delete mode 100644 images/logos/build-by-maven-white.png delete mode 100644 images/logos/maven-feather.png delete mode 100644 images/network-server.png delete mode 100644 images/package-x-generic.png delete mode 100644 images/profiles/pre-release.png delete mode 100644 images/profiles/retired.png delete mode 100644 images/profiles/sandbox.png delete mode 100644 images/remove.gif delete mode 100644 images/rss.png delete mode 100644 images/update.gif delete mode 100644 images/window-new.png create mode 100644 img/icon-arrow-bullet.svg create mode 100644 img/icon-dropdown-faq.svg create mode 100644 img/icon-dropdown.svg create mode 100644 img/icon-lang-java-duke-white.svg create mode 100644 img/icon-lang-java-duke.svg create mode 100644 img/icon-lang-nodejs.svg create mode 100644 img/icon-lang-python.svg create mode 100644 img/icon-lang-ruby.svg create mode 100644 img/icon-link-github.svg create mode 100644 img/icon-link-package-manager.svg create mode 100644 img/icon-link-stackoverflow.svg create mode 100644 img/icon-menu.svg create mode 100644 img/icon-table-check.svg create mode 100644 img/lang-bg.png create mode 100644 img/logo-full.svg create mode 100644 img/logo.svg delete mode 100644 integration.html delete mode 100644 issue-tracking.html delete mode 100644 js/apache-maven-fluido-1.3.1.min.js create mode 100644 js/main.js create mode 100644 js/plugins.js create mode 100644 js/vendor/jquery-1.10.2.min.js create mode 100644 js/vendor/modernizr-2.6.2.min.js create mode 100644 js/vendor/prettify.js delete mode 100644 license.html delete mode 100644 project-info.html delete mode 100644 project-reports.html delete mode 100644 project-summary.html delete mode 100644 source-repository.html delete mode 100644 surefire-report.html delete mode 100644 team-list.html diff --git a/apidocs/allclasses-frame.html b/apidocs/allclasses-frame.html deleted file mode 100644 index 76b66e4aadcd..000000000000 --- a/apidocs/allclasses-frame.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - -All Classes (GCloud Java 0.0.4 API) - - - - -

All Classes

-
- -
- - diff --git a/apidocs/allclasses-noframe.html b/apidocs/allclasses-noframe.html deleted file mode 100644 index fd985eb5bd4c..000000000000 --- a/apidocs/allclasses-noframe.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - -All Classes (GCloud Java 0.0.4 API) - - - - -

All Classes

-
- -
- - diff --git a/apidocs/com/google/gcloud/AuthCredentials.html b/apidocs/com/google/gcloud/AuthCredentials.html deleted file mode 100644 index 4654eb6a79fb..000000000000 --- a/apidocs/com/google/gcloud/AuthCredentials.html +++ /dev/null @@ -1,351 +0,0 @@ - - - - - - -AuthCredentials (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Class AuthCredentials

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        AuthCredentials

        -
        public AuthCredentials()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        httpRequestInitializer

        -
        protected abstract com.google.api.client.http.HttpRequestInitializer httpRequestInitializer(com.google.api.client.http.HttpTransport transport,
        -                                                                       Set<String> scopes)
        -
      • -
      - - - -
        -
      • -

        createForAppEngine

        -
        public static AuthCredentials createForAppEngine()
        -
      • -
      - - - - - - - -
        -
      • -

        createApplicationDefaults

        -
        public static AuthCredentials createApplicationDefaults()
        -                                                 throws IOException
        -
        Returns the Application Default Credentials. - -

        - Returns the Application Default Credentials which are credentials that identify and authorize - the whole application. This is the built-in service account if running on Google Compute Engine - or the credentials file from the path in the environment variable - GOOGLE_APPLICATION_CREDENTIALS. -

        -
        Returns:
        the credentials instance.
        -
        Throws:
        -
        IOException - if the credentials cannot be created in the current environment.
        -
      • -
      - - - - - - - - -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/BaseService.html b/apidocs/com/google/gcloud/BaseService.html deleted file mode 100644 index 90b61058fd67..000000000000 --- a/apidocs/com/google/gcloud/BaseService.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - -BaseService (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Class BaseService<O extends ServiceOptions>

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - - - -
        -
      • -

        BaseService

        -
        protected BaseService(O options)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/ExceptionHandler.Builder.html b/apidocs/com/google/gcloud/ExceptionHandler.Builder.html deleted file mode 100644 index a0e07295efb0..000000000000 --- a/apidocs/com/google/gcloud/ExceptionHandler.Builder.html +++ /dev/null @@ -1,286 +0,0 @@ - - - - - - -ExceptionHandler.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Class ExceptionHandler.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    ExceptionHandler
    -
    -
    -
    -
    public static class ExceptionHandler.Builder
    -extends Object
    -
    ExceptionHandler builder.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        interceptor

        -
        public ExceptionHandler.Builder interceptor(ExceptionHandler.Interceptor... interceptors)
        -
        Adds the exception handler interceptors. Call order will be maintained.
        -
        Parameters:
        interceptors - the interceptors for this exception handler
        -
        Returns:
        the Builder for chaining
        -
      • -
      - - - -
        -
      • -

        retryOn

        -
        @SafeVarargs
        -public final ExceptionHandler.Builder retryOn(Class<? extends Exception>... exceptions)
        -
        Add the exceptions to ignore/retry-on.
        -
        Parameters:
        exceptions - retry should continue when such exceptions are thrown
        -
        Returns:
        the Builder for chaining
        -
      • -
      - - - -
        -
      • -

        abortOn

        -
        @SafeVarargs
        -public final ExceptionHandler.Builder abortOn(Class<? extends Exception>... exceptions)
        -
        Adds the exceptions to abort on.
        -
        Parameters:
        exceptions - retry should abort when such exceptions are thrown
        -
        Returns:
        the Builder for chaining
        -
      • -
      - - - -
        -
      • -

        build

        -
        public ExceptionHandler build()
        -
        Returns a new ExceptionHandler instance.
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/ExceptionHandler.Interceptor.RetryResult.html b/apidocs/com/google/gcloud/ExceptionHandler.Interceptor.RetryResult.html deleted file mode 100644 index 64fecc246183..000000000000 --- a/apidocs/com/google/gcloud/ExceptionHandler.Interceptor.RetryResult.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - -ExceptionHandler.Interceptor.RetryResult (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Enum ExceptionHandler.Interceptor.RetryResult

-
-
- -
- -
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static ExceptionHandler.Interceptor.RetryResult[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (ExceptionHandler.Interceptor.RetryResult c : ExceptionHandler.Interceptor.RetryResult.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in the order they are declared
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static ExceptionHandler.Interceptor.RetryResult valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/ExceptionHandler.Interceptor.html b/apidocs/com/google/gcloud/ExceptionHandler.Interceptor.html deleted file mode 100644 index a0b1e83879e4..000000000000 --- a/apidocs/com/google/gcloud/ExceptionHandler.Interceptor.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - -ExceptionHandler.Interceptor (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Interface ExceptionHandler.Interceptor

-
-
-
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/ExceptionHandler.html b/apidocs/com/google/gcloud/ExceptionHandler.html deleted file mode 100644 index 46aa7516fe66..000000000000 --- a/apidocs/com/google/gcloud/ExceptionHandler.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - -ExceptionHandler (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Class ExceptionHandler

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getRetriableExceptions

        -
        public Set<Class<? extends Exception>> getRetriableExceptions()
        -
      • -
      - - - -
        -
      • -

        getNonRetriableExceptions

        -
        public Set<Class<? extends Exception>> getNonRetriableExceptions()
        -
      • -
      - - - -
        -
      • -

        getDefaultInstance

        -
        public static ExceptionHandler getDefaultInstance()
        -
        Returns an instance which retry any checked exception and abort on any runtime exception.
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/RetryHelper.NonRetriableException.html b/apidocs/com/google/gcloud/RetryHelper.NonRetriableException.html deleted file mode 100644 index a46dafb9a952..000000000000 --- a/apidocs/com/google/gcloud/RetryHelper.NonRetriableException.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - -RetryHelper.NonRetriableException (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Class RetryHelper.NonRetriableException

-
-
- -
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/RetryHelper.RetriesExhaustedException.html b/apidocs/com/google/gcloud/RetryHelper.RetriesExhaustedException.html deleted file mode 100644 index 113ade9bbba4..000000000000 --- a/apidocs/com/google/gcloud/RetryHelper.RetriesExhaustedException.html +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - -RetryHelper.RetriesExhaustedException (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Class RetryHelper.RetriesExhaustedException

-
-
- -
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/RetryHelper.RetryHelperException.html b/apidocs/com/google/gcloud/RetryHelper.RetryHelperException.html deleted file mode 100644 index 0de1cd52f7c0..000000000000 --- a/apidocs/com/google/gcloud/RetryHelper.RetryHelperException.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - -RetryHelper.RetryHelperException (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Class RetryHelper.RetryHelperException

-
-
- -
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/RetryHelper.RetryInterruptedException.html b/apidocs/com/google/gcloud/RetryHelper.RetryInterruptedException.html deleted file mode 100644 index 3557c2009c09..000000000000 --- a/apidocs/com/google/gcloud/RetryHelper.RetryInterruptedException.html +++ /dev/null @@ -1,266 +0,0 @@ - - - - - - -RetryHelper.RetryInterruptedException (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Class RetryHelper.RetryInterruptedException

-
-
- -
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    Serializable
    -
    -
    -
    Enclosing class:
    -
    RetryHelper<V>
    -
    -
    -
    -
    public static final class RetryHelper.RetryInterruptedException
    -extends RetryHelper.RetryHelperException
    -
    Thrown when a RetryHelper failed to complete its work due to interruption. Throwing this - exception also sets the thread interrupt flag.
    -
    See Also:
    Serialized Form
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/RetryHelper.html b/apidocs/com/google/gcloud/RetryHelper.html deleted file mode 100644 index d73baa3ce186..000000000000 --- a/apidocs/com/google/gcloud/RetryHelper.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - -RetryHelper (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Class RetryHelper<V>

-
-
- -
-
    -
  • -
    Type Parameters:
    V - return value of the closure that is being run with retries
    -
    -
    -
    public class RetryHelper<V>
    -extends Object
    -
    Utility class for retrying operations. For more details about the parameters, see - RetryParams. If the request is never successful, a RetryHelper.RetriesExhaustedException will - be thrown.
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/RetryParams.Builder.html b/apidocs/com/google/gcloud/RetryParams.Builder.html deleted file mode 100644 index 61535dfce8bd..000000000000 --- a/apidocs/com/google/gcloud/RetryParams.Builder.html +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - -RetryParams.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Class RetryParams.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    RetryParams
    -
    -
    -
    -
    public static final class RetryParams.Builder
    -extends Object
    -
    RetryParams builder.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        retryMinAttempts

        -
        public RetryParams.Builder retryMinAttempts(int retryMinAttempts)
        -
        Sets retryMinAttempts.
        -
        Parameters:
        retryMinAttempts - the retryMinAttempts to set
        -
        Returns:
        the Builder for chaining
        -
      • -
      - - - -
        -
      • -

        retryMaxAttempts

        -
        public RetryParams.Builder retryMaxAttempts(int retryMaxAttempts)
        -
        Sets retryMaxAttempts.
        -
        Parameters:
        retryMaxAttempts - the retryMaxAttempts to set
        -
        Returns:
        the Builder for chaining
        -
      • -
      - - - -
        -
      • -

        initialRetryDelayMillis

        -
        public RetryParams.Builder initialRetryDelayMillis(long initialRetryDelayMillis)
        -
        Sets initialRetryDelayMillis.
        -
        Parameters:
        initialRetryDelayMillis - the initialRetryDelayMillis to set
        -
        Returns:
        the Builder for chaining
        -
      • -
      - - - -
        -
      • -

        maxRetryDelayMillis

        -
        public RetryParams.Builder maxRetryDelayMillis(long maxRetryDelayMillis)
        -
        Sets maxRetryDelayMillis.
        -
        Parameters:
        maxRetryDelayMillis - the maxRetryDelayMillis to set
        -
        Returns:
        the Builder for chaining
        -
      • -
      - - - -
        -
      • -

        retryDelayBackoffFactor

        -
        public RetryParams.Builder retryDelayBackoffFactor(double retryDelayBackoffFactor)
        -
        Sets retryDelayBackoffFactor.
        -
        Parameters:
        retryDelayBackoffFactor - the retryDelayBackoffFactor to set
        -
        Returns:
        the Builder for chaining
        -
      • -
      - - - -
        -
      • -

        totalRetryPeriodMillis

        -
        public RetryParams.Builder totalRetryPeriodMillis(long totalRetryPeriodMillis)
        -
        Sets totalRetryPeriodMillis.
        -
        Parameters:
        totalRetryPeriodMillis - the totalRetryPeriodMillis to set
        -
        Returns:
        the Builder for chaining
        -
      • -
      - - - -
        -
      • -

        build

        -
        public RetryParams build()
        -
        Create an instance of RetryParams with the parameters set in this builder.
        -
        Returns:
        a new instance of RetryParams
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/RetryParams.html b/apidocs/com/google/gcloud/RetryParams.html deleted file mode 100644 index 5d0ce64d766b..000000000000 --- a/apidocs/com/google/gcloud/RetryParams.html +++ /dev/null @@ -1,549 +0,0 @@ - - - - - - -RetryParams (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Class RetryParams

-
-
- -
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    Serializable
    -
    -
    -
    -
    public final class RetryParams
    -extends Object
    -implements Serializable
    -
    Parameters for configuring retries with an exponential backoff. Initial request is executed - immediately. If the request fails but passes the ExceptionHandler criteria the calling - thread sleeps for initialRetryDelayMillis. Each subsequent failure the sleep interval is - calculated as: -

    - retryDelayBackoffFactor ^ attempts * initialRetryDelayMillis but would be upper-bounded - to maxRetryDelayMillis -

    - This proceeds until either the request is successful, retryMaxAttempts are made, or both - retryMinAttempts are made and totalRetryPeriodMillis have elapsed. To construct - RetryParams, first create a RetryParams.Builder. The builder is mutable and each - of the parameters can be set (any unset parameters will fallback to the defaults). The - Builder can be then used to create an immutable RetryParams object. For default - RetryParams use getDefaultInstance(). Default settings are subject to change - release to release. If you require specific settings, explicitly create an instance of - RetryParams with all the required settings.
    -
    See Also:
    RetryHelper, -Serialized Form
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        DEFAULT_RETRY_MIN_ATTEMPTS

        -
        public static final int DEFAULT_RETRY_MIN_ATTEMPTS
        -
        See Also:
        Constant Field Values
        -
      • -
      - - - -
        -
      • -

        DEFAULT_RETRY_MAX_ATTEMPTS

        -
        public static final int DEFAULT_RETRY_MAX_ATTEMPTS
        -
        See Also:
        Constant Field Values
        -
      • -
      - - - -
        -
      • -

        DEFAULT_INITIAL_RETRY_DELAY_MILLIS

        -
        public static final long DEFAULT_INITIAL_RETRY_DELAY_MILLIS
        -
        See Also:
        Constant Field Values
        -
      • -
      - - - -
        -
      • -

        DEFAULT_MAX_RETRY_DELAY_MILLIS

        -
        public static final long DEFAULT_MAX_RETRY_DELAY_MILLIS
        -
        See Also:
        Constant Field Values
        -
      • -
      - - - -
        -
      • -

        DEFAULT_RETRY_DELAY_BACKOFF_FACTOR

        -
        public static final double DEFAULT_RETRY_DELAY_BACKOFF_FACTOR
        -
        See Also:
        Constant Field Values
        -
      • -
      - - - -
        -
      • -

        DEFAULT_TOTAL_RETRY_PERIOD_MILLIS

        -
        public static final long DEFAULT_TOTAL_RETRY_PERIOD_MILLIS
        -
        See Also:
        Constant Field Values
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getDefaultInstance

        -
        public static RetryParams getDefaultInstance()
        -
        Returns an instance with the default parameters.
        -
      • -
      - - - -
        -
      • -

        noRetries

        -
        public static RetryParams noRetries()
        -
      • -
      - - - -
        -
      • -

        getRetryMinAttempts

        -
        public int getRetryMinAttempts()
        -
        Returns the retryMinAttempts.
        -
      • -
      - - - -
        -
      • -

        getRetryMaxAttempts

        -
        public int getRetryMaxAttempts()
        -
        Returns the retryMaxAttempts.
        -
      • -
      - - - -
        -
      • -

        getInitialRetryDelayMillis

        -
        public long getInitialRetryDelayMillis()
        -
        Returns the initialRetryDelayMillis.
        -
      • -
      - - - -
        -
      • -

        getMaxRetryDelayMillis

        -
        public long getMaxRetryDelayMillis()
        -
        Returns the maxRetryDelayMillis.
        -
      • -
      - - - -
        -
      • -

        getRetryDelayBackoffFactor

        -
        public double getRetryDelayBackoffFactor()
        -
        Returns the maxRetryDelayBackoffFactor.
        -
      • -
      - - - -
        -
      • -

        getTotalRetryPeriodMillis

        -
        public long getTotalRetryPeriodMillis()
        -
        Returns the totalRetryPeriodMillis.
        -
      • -
      - - - -
        -
      • -

        hashCode

        -
        public int hashCode()
        -
        -
        Overrides:
        -
        hashCode in class Object
        -
        -
      • -
      - - - -
        -
      • -

        equals

        -
        public boolean equals(Object obj)
        -
        -
        Overrides:
        -
        equals in class Object
        -
        -
      • -
      - - - - - - - - -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/Service.html b/apidocs/com/google/gcloud/Service.html deleted file mode 100644 index f1d63fc62830..000000000000 --- a/apidocs/com/google/gcloud/Service.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - -Service (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Interface Service<O extends ServiceOptions>

-
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      Ooptions() 
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        options

        -
        O options()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/ServiceOptions.Builder.html b/apidocs/com/google/gcloud/ServiceOptions.Builder.html deleted file mode 100644 index f14b2a696a29..000000000000 --- a/apidocs/com/google/gcloud/ServiceOptions.Builder.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - -ServiceOptions.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Class ServiceOptions.Builder<R,O extends ServiceOptions<R,O>,B extends ServiceOptions.Builder<R,O,B>>

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/ServiceOptions.HttpTransportFactory.html b/apidocs/com/google/gcloud/ServiceOptions.HttpTransportFactory.html deleted file mode 100644 index 80132668a3fa..000000000000 --- a/apidocs/com/google/gcloud/ServiceOptions.HttpTransportFactory.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - -ServiceOptions.HttpTransportFactory (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Interface ServiceOptions.HttpTransportFactory

-
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      com.google.api.client.http.HttpTransportcreate() 
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        create

        -
        com.google.api.client.http.HttpTransport create()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/ServiceOptions.html b/apidocs/com/google/gcloud/ServiceOptions.html deleted file mode 100644 index a1b43ae1b2bc..000000000000 --- a/apidocs/com/google/gcloud/ServiceOptions.html +++ /dev/null @@ -1,477 +0,0 @@ - - - - - - -ServiceOptions (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud
-

Class ServiceOptions<R,O extends ServiceOptions<R,O>>

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/AuthCredentials.html b/apidocs/com/google/gcloud/class-use/AuthCredentials.html deleted file mode 100644 index 007bc5bf5447..000000000000 --- a/apidocs/com/google/gcloud/class-use/AuthCredentials.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.AuthCredentials (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.AuthCredentials

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/BaseService.html b/apidocs/com/google/gcloud/class-use/BaseService.html deleted file mode 100644 index 99c3b5d15942..000000000000 --- a/apidocs/com/google/gcloud/class-use/BaseService.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.BaseService (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.BaseService

-
-
No usage of com.google.gcloud.BaseService
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/ExceptionHandler.Builder.html b/apidocs/com/google/gcloud/class-use/ExceptionHandler.Builder.html deleted file mode 100644 index e3c00605b45e..000000000000 --- a/apidocs/com/google/gcloud/class-use/ExceptionHandler.Builder.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.ExceptionHandler.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.ExceptionHandler.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/ExceptionHandler.Interceptor.RetryResult.html b/apidocs/com/google/gcloud/class-use/ExceptionHandler.Interceptor.RetryResult.html deleted file mode 100644 index ee25e1f392a5..000000000000 --- a/apidocs/com/google/gcloud/class-use/ExceptionHandler.Interceptor.RetryResult.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.ExceptionHandler.Interceptor.RetryResult (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.ExceptionHandler.Interceptor.RetryResult

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/ExceptionHandler.Interceptor.html b/apidocs/com/google/gcloud/class-use/ExceptionHandler.Interceptor.html deleted file mode 100644 index 76e8ffd9a2f1..000000000000 --- a/apidocs/com/google/gcloud/class-use/ExceptionHandler.Interceptor.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.ExceptionHandler.Interceptor (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.ExceptionHandler.Interceptor

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/ExceptionHandler.html b/apidocs/com/google/gcloud/class-use/ExceptionHandler.html deleted file mode 100644 index 5b6511819ad8..000000000000 --- a/apidocs/com/google/gcloud/class-use/ExceptionHandler.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.ExceptionHandler (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.ExceptionHandler

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/RetryHelper.NonRetriableException.html b/apidocs/com/google/gcloud/class-use/RetryHelper.NonRetriableException.html deleted file mode 100644 index d88f2e49c0c0..000000000000 --- a/apidocs/com/google/gcloud/class-use/RetryHelper.NonRetriableException.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.RetryHelper.NonRetriableException (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.RetryHelper.NonRetriableException

-
-
No usage of com.google.gcloud.RetryHelper.NonRetriableException
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/RetryHelper.RetriesExhaustedException.html b/apidocs/com/google/gcloud/class-use/RetryHelper.RetriesExhaustedException.html deleted file mode 100644 index 5a60bbd6febb..000000000000 --- a/apidocs/com/google/gcloud/class-use/RetryHelper.RetriesExhaustedException.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.RetryHelper.RetriesExhaustedException (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.RetryHelper.RetriesExhaustedException

-
-
No usage of com.google.gcloud.RetryHelper.RetriesExhaustedException
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/RetryHelper.RetryHelperException.html b/apidocs/com/google/gcloud/class-use/RetryHelper.RetryHelperException.html deleted file mode 100644 index a8fa6829b66a..000000000000 --- a/apidocs/com/google/gcloud/class-use/RetryHelper.RetryHelperException.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.RetryHelper.RetryHelperException (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.RetryHelper.RetryHelperException

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/RetryHelper.RetryInterruptedException.html b/apidocs/com/google/gcloud/class-use/RetryHelper.RetryInterruptedException.html deleted file mode 100644 index f4ffdfb9cb48..000000000000 --- a/apidocs/com/google/gcloud/class-use/RetryHelper.RetryInterruptedException.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.RetryHelper.RetryInterruptedException (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.RetryHelper.RetryInterruptedException

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/RetryHelper.html b/apidocs/com/google/gcloud/class-use/RetryHelper.html deleted file mode 100644 index df51df430776..000000000000 --- a/apidocs/com/google/gcloud/class-use/RetryHelper.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.RetryHelper (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.RetryHelper

-
-
No usage of com.google.gcloud.RetryHelper
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/RetryParams.Builder.html b/apidocs/com/google/gcloud/class-use/RetryParams.Builder.html deleted file mode 100644 index 9532668836b6..000000000000 --- a/apidocs/com/google/gcloud/class-use/RetryParams.Builder.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.RetryParams.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.RetryParams.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/RetryParams.html b/apidocs/com/google/gcloud/class-use/RetryParams.html deleted file mode 100644 index 34da27bb2ded..000000000000 --- a/apidocs/com/google/gcloud/class-use/RetryParams.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.RetryParams (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.RetryParams

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/Service.html b/apidocs/com/google/gcloud/class-use/Service.html deleted file mode 100644 index 87d8ff3448e6..000000000000 --- a/apidocs/com/google/gcloud/class-use/Service.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.Service (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.Service

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/ServiceOptions.Builder.html b/apidocs/com/google/gcloud/class-use/ServiceOptions.Builder.html deleted file mode 100644 index 4a28d25b2a68..000000000000 --- a/apidocs/com/google/gcloud/class-use/ServiceOptions.Builder.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.ServiceOptions.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.ServiceOptions.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/ServiceOptions.HttpTransportFactory.html b/apidocs/com/google/gcloud/class-use/ServiceOptions.HttpTransportFactory.html deleted file mode 100644 index e4028566a5c1..000000000000 --- a/apidocs/com/google/gcloud/class-use/ServiceOptions.HttpTransportFactory.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.ServiceOptions.HttpTransportFactory (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.ServiceOptions.HttpTransportFactory

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/class-use/ServiceOptions.html b/apidocs/com/google/gcloud/class-use/ServiceOptions.html deleted file mode 100644 index 50b4b2c00a03..000000000000 --- a/apidocs/com/google/gcloud/class-use/ServiceOptions.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.ServiceOptions (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.ServiceOptions

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/BaseDatastoreBatchWriter.html b/apidocs/com/google/gcloud/datastore/BaseDatastoreBatchWriter.html deleted file mode 100644 index 4d22bb287bbb..000000000000 --- a/apidocs/com/google/gcloud/datastore/BaseDatastoreBatchWriter.html +++ /dev/null @@ -1,526 +0,0 @@ - - - - - - -BaseDatastoreBatchWriter (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class BaseDatastoreBatchWriter

-
-
- -
-
    -
  • -
    -
    -
    public abstract class BaseDatastoreBatchWriter
    -extends Object
    -
    Base class for DatastoreBatchWriter.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BaseDatastoreBatchWriter

        -
        protected BaseDatastoreBatchWriter(String name)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        addWithDeferredIdAllocation

        -
        public final void addWithDeferredIdAllocation(FullEntity<?>... entities)
        -
        Datastore add operation. - This method will also allocate id for any entity with an incomplete key. - As oppose to DatastoreWriter.add(FullEntity), this method will defer any necessary id allocation - to submit time.
        -
      • -
      - - - -
        -
      • -

        add

        -
        public final Entity add(FullEntity<?> entity)
        -
        Description copied from interface: DatastoreWriter
        -
        Datastore add operation. - This method will automatically allocate an id if necessary.
        -
        Parameters:
        entity - the entity to add
        -
        Returns:
        an Entity with the same properties and a key that is either newly allocated - or the same one if key is already complete
        -
      • -
      - - - -
        -
      • -

        add

        -
        public final List<Entity> add(FullEntity<?>... entities)
        -
        Datastore add operation. - This method will automatically allocate id for any entity with an incomplete key. - For entities with complete keys that were marked for deletion in this writer the operation - will be changed to put(com.google.gcloud.datastore.Entity...).
        -
        Returns:
        a list of Entity ordered by input with the same properties and a key that - is either newly allocated or the same one if was already complete
        See Also:
        DatastoreWriter.add(FullEntity)
        -
      • -
      - - - -
        -
      • -

        update

        -
        @SafeVarargs
        -public final void update(Entity... entities)
        -
        A Datastore update operation. - The operation will fail if an entity with the same key does not already exist. - This operation will be converted to put(com.google.gcloud.datastore.Entity...) operation for entities that were already - added or put in this writer
        -
      • -
      - - - -
        -
      • -

        put

        -
        @SafeVarargs
        -public final void put(Entity... entities)
        -
        A Datastore put (a.k.a upsert) operation. - The operation will add or modify the entities. - This operation will also remove from this writer any prior writes for the same entities.
        -
      • -
      - - - -
        -
      • -

        delete

        -
        public final void delete(Key... keys)
        -
        A datastore delete operation. - It is OK request a deletion of a non-existing entity. - This operation will also remove from this batch any prior writes for entities with the same - keys
        -
      • -
      - - - -
        -
      • -

        active

        -
        public boolean active()
        -
        Returns true if still active (write operations were not sent to the Datastore).
        -
      • -
      - - - -
        -
      • -

        name

        -
        protected String name()
        -
      • -
      - - - - - - - - - - - - - - - - - - - -
        -
      • -

        toDelete

        -
        protected Set<Key> toDelete()
        -
      • -
      - - - -
        -
      • -

        deactivate

        -
        protected void deactivate()
        -
      • -
      - - - -
        -
      • -

        validateActive

        -
        protected void validateActive()
        -
      • -
      - - - - - - - -
        -
      • -

        toMutationPb

        -
        protected com.google.api.services.datastore.DatastoreV1.Mutation.Builder toMutationPb()
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/BaseEntity.html b/apidocs/com/google/gcloud/datastore/BaseEntity.html deleted file mode 100644 index 996ae6480508..000000000000 --- a/apidocs/com/google/gcloud/datastore/BaseEntity.html +++ /dev/null @@ -1,604 +0,0 @@ - - - - - - -BaseEntity (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class BaseEntity<K extends IncompleteKey>

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/Batch.Response.html b/apidocs/com/google/gcloud/datastore/Batch.Response.html deleted file mode 100644 index c009185ba69e..000000000000 --- a/apidocs/com/google/gcloud/datastore/Batch.Response.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - -Batch.Response (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Interface Batch.Response

-
-
-
-
    -
  • -
    -
    Enclosing interface:
    -
    Batch
    -
    -
    -
    -
    public static interface Batch.Response
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      List<Key>generatedKeys() 
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        generatedKeys

        -
        List<Key> generatedKeys()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/Batch.html b/apidocs/com/google/gcloud/datastore/Batch.html deleted file mode 100644 index 9978ba830f03..000000000000 --- a/apidocs/com/google/gcloud/datastore/Batch.html +++ /dev/null @@ -1,405 +0,0 @@ - - - - - - -Batch (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Interface Batch

-
-
-
-
    -
  • -
    -
    -
    public interface Batch
    -
    An interface to represent a batch of write operations. - Any write operation that is applied on a batch will only be sent - to the Datastore upon submit(). - A usage example: -
     Entity entity1 = datastore.get(key1);
    -   Batch batch = datastore.newBatch();
    -   Entity entity2 = Entity.builder(key2).set("name", "John").build();
    -   entity1 = Entity.builder(entity1).clear().setNull("bla").build();
    -   Entity entity3 = Entity.builder(key3).set("title", "title").build();
    -   batch.update(entity1);
    -   batch.add(entity2, entity3);
    -   batch.submit();
    -  
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - - - - - - - - - -
        -
      • -

        addWithDeferredIdAllocation

        -
        void addWithDeferredIdAllocation(FullEntity<?>... entity)
        -
        Datastore add operation. - This method will also allocate id for any entity with an incomplete key. - As oppose to DatastoreWriter.add(FullEntity), this method will defer any necessary id allocation - to submit time.
        -
        Throws:
        -
        IllegalArgumentException - if any of the given entities is missing a key
        -
        DatastoreServiceException - if a given entity with a - complete key was already added to this writer or if not active
        -
      • -
      - - - -
        -
      • -

        add

        -
        List<Entity> add(FullEntity<?>... entity)
        -
        Datastore add operation. - This method will automatically allocate id for any entity with an incomplete key. - For entities with complete keys that were marked for deletion in this writer the operation - will be changed to put(com.google.gcloud.datastore.Entity...).
        -
        -
        Specified by:
        -
        add in interface DatastoreWriter
        -
        Returns:
        a list of Entity ordered by input with the same properties and a key that - is either newly allocated or the same one if was already complete
        -
        Throws:
        -
        DatastoreServiceException - if a given entity with the - same complete key was already added to this writer, if writer is not active or - if id allocation for an entity with an incomplete key failed.
        See Also:
        DatastoreWriter.add(FullEntity)
        -
      • -
      - - - -
        -
      • -

        update

        -
        void update(Entity... entity)
        -
        A Datastore update operation. - The operation will fail if an entity with the same key does not already exist. - This operation will be converted to put(com.google.gcloud.datastore.Entity...) operation for entities that were already - added or put in this writer
        -
        -
        Specified by:
        -
        update in interface DatastoreWriter
        -
        Throws:
        -
        DatastoreServiceException - if an entity is marked for - deletion in this writer or if not active
        -
      • -
      - - - -
        -
      • -

        delete

        -
        void delete(Key... key)
        -
        A datastore delete operation. - It is OK request a deletion of a non-existing entity. - This operation will also remove from this batch any prior writes for entities with the same - keys
        -
        -
        Specified by:
        -
        delete in interface DatastoreWriter
        -
        Throws:
        -
        DatastoreServiceException - if not active
        -
      • -
      - - - -
        -
      • -

        put

        -
        void put(Entity... entity)
        -
        A Datastore put (a.k.a upsert) operation. - The operation will add or modify the entities. - This operation will also remove from this writer any prior writes for the same entities.
        -
        -
        Specified by:
        -
        put in interface DatastoreWriter
        -
        Throws:
        -
        DatastoreServiceException - if not active
        -
      • -
      - - - -
        -
      • -

        active

        -
        boolean active()
        -
        Returns true if still active (write operations were not sent to the Datastore).
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/BatchOption.ForceWrites.html b/apidocs/com/google/gcloud/datastore/BatchOption.ForceWrites.html deleted file mode 100644 index cd20d6ad7ff0..000000000000 --- a/apidocs/com/google/gcloud/datastore/BatchOption.ForceWrites.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - -BatchOption.ForceWrites (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class BatchOption.ForceWrites

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BatchOption.ForceWrites

        -
        public BatchOption.ForceWrites(boolean force)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        force

        -
        public boolean force()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/BatchOption.html b/apidocs/com/google/gcloud/datastore/BatchOption.html deleted file mode 100644 index 4e8b202df7cc..000000000000 --- a/apidocs/com/google/gcloud/datastore/BatchOption.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - -BatchOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class BatchOption

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/Blob.html b/apidocs/com/google/gcloud/datastore/Blob.html deleted file mode 100644 index 491dd561f35c..000000000000 --- a/apidocs/com/google/gcloud/datastore/Blob.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - - - -Blob (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class Blob

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        toString

        -
        public String toString()
        -
      • -
      - - - -
        -
      • -

        hashCode

        -
        public int hashCode()
        -
        -
        Overrides:
        -
        hashCode in class Object
        -
        -
      • -
      - - - -
        -
      • -

        equals

        -
        public boolean equals(Object obj)
        -
        -
        Overrides:
        -
        equals in class Object
        -
        -
      • -
      - - - -
        -
      • -

        length

        -
        public int length()
        -
        Returns the size of this blob.
        -
      • -
      - - - -
        -
      • -

        toByteArray

        -
        public byte[] toByteArray()
        -
        Returns a copy as byte array.
        -
      • -
      - - - -
        -
      • -

        asReadOnlyByteBuffer

        -
        public ByteBuffer asReadOnlyByteBuffer()
        -
        Returns a read-only ByteBuffer for this blob content.
        -
      • -
      - - - - - - - - - - - -
        -
      • -

        copyTo

        -
        public void copyTo(byte[] target)
        -
        Copies bytes into a buffer.
        -
        Throws:
        -
        IndexOutOfBoundsException - if an offset or size is negative or too large
        -
      • -
      - - - -
        -
      • -

        copyFrom

        -
        public static Blob copyFrom(byte[] bytes)
        -
      • -
      - - - - - - - - - - - -
        -
      • -

        toPb

        -
        protected com.google.api.services.datastore.DatastoreV1.Value toPb()
        -
      • -
      - - - -
        -
      • -

        fromPb

        -
        protected Object fromPb(byte[] bytesPb)
        -                 throws com.google.protobuf.InvalidProtocolBufferException
        -
        Throws:
        -
        com.google.protobuf.InvalidProtocolBufferException
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/BlobValue.Builder.html b/apidocs/com/google/gcloud/datastore/BlobValue.Builder.html deleted file mode 100644 index 2b89d0c6d372..000000000000 --- a/apidocs/com/google/gcloud/datastore/BlobValue.Builder.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - -BlobValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class BlobValue.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    BlobValue
    -
    -
    -
    -
    public static final class BlobValue.Builder
    -extends Object
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - - - - - -
        -
      • -

        getValueType

        -
        public ValueType getValueType()
        -
      • -
      - - - - - -
        -
      • -

        mergeFrom

        -
        public B mergeFrom(P other)
        -
      • -
      - - - -
        -
      • -

        getIndexed

        -
        public Boolean getIndexed()
        -
      • -
      - - - -
        -
      • -

        indexed

        -
        public B indexed(boolean indexed)
        -
      • -
      - - - -
        -
      • -

        getMeaning

        -
        public Integer getMeaning()
        -
      • -
      - - - -
        -
      • -

        meaning

        -
        public B meaning(Integer meaning)
        -
      • -
      - - - -
        -
      • -

        get

        -
        public V get()
        -
      • -
      - - - - - -
        -
      • -

        set

        -
        public B set(V value)
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/BlobValue.html b/apidocs/com/google/gcloud/datastore/BlobValue.html deleted file mode 100644 index f6b9fdc95590..000000000000 --- a/apidocs/com/google/gcloud/datastore/BlobValue.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - -BlobValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class BlobValue

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/BooleanValue.Builder.html b/apidocs/com/google/gcloud/datastore/BooleanValue.Builder.html deleted file mode 100644 index 1223bf0aec6a..000000000000 --- a/apidocs/com/google/gcloud/datastore/BooleanValue.Builder.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - -BooleanValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class BooleanValue.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    BooleanValue
    -
    -
    -
    -
    public static final class BooleanValue.Builder
    -extends Object
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - - - - - -
        -
      • -

        getValueType

        -
        public ValueType getValueType()
        -
      • -
      - - - - - -
        -
      • -

        mergeFrom

        -
        public B mergeFrom(P other)
        -
      • -
      - - - -
        -
      • -

        getIndexed

        -
        public Boolean getIndexed()
        -
      • -
      - - - -
        -
      • -

        indexed

        -
        public B indexed(boolean indexed)
        -
      • -
      - - - -
        -
      • -

        getMeaning

        -
        public Integer getMeaning()
        -
      • -
      - - - -
        -
      • -

        meaning

        -
        public B meaning(Integer meaning)
        -
      • -
      - - - -
        -
      • -

        get

        -
        public V get()
        -
      • -
      - - - - - -
        -
      • -

        set

        -
        public B set(V value)
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/BooleanValue.html b/apidocs/com/google/gcloud/datastore/BooleanValue.html deleted file mode 100644 index 160cd696895e..000000000000 --- a/apidocs/com/google/gcloud/datastore/BooleanValue.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - -BooleanValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class BooleanValue

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/Cursor.html b/apidocs/com/google/gcloud/datastore/Cursor.html deleted file mode 100644 index 8a2cb85cb792..000000000000 --- a/apidocs/com/google/gcloud/datastore/Cursor.html +++ /dev/null @@ -1,353 +0,0 @@ - - - - - - -Cursor (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class Cursor

-
-
- -
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    Serializable
    -
    -
    -
    -
    public final class Cursor
    -extends Object
    -
    A Google Cloud Datastore cursor. - The cursor can be used to as a starting point or an ending point for a Query
    -
    See Also:
    Serialized Form
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        hashCode

        -
        public int hashCode()
        -
        -
        Overrides:
        -
        hashCode in class Object
        -
        -
      • -
      - - - -
        -
      • -

        equals

        -
        public boolean equals(Object obj)
        -
        -
        Overrides:
        -
        equals in class Object
        -
        -
      • -
      - - - -
        -
      • -

        toString

        -
        public String toString()
        -
      • -
      - - - -
        -
      • -

        toUrlSafe

        -
        public String toUrlSafe()
        -
        Returns the cursor in an encoded form that can be used as part of a URL.
        -
      • -
      - - - -
        -
      • -

        fromUrlSafe

        -
        public static Cursor fromUrlSafe(String urlSafe)
        -
        Create a Cursor given its URL safe encoded form.
        -
      • -
      - - - -
        -
      • -

        copyFrom

        -
        public static Cursor copyFrom(byte[] bytes)
        -
      • -
      - - - -
        -
      • -

        toPb

        -
        protected com.google.api.services.datastore.DatastoreV1.Value toPb()
        -
      • -
      - - - -
        -
      • -

        fromPb

        -
        protected Object fromPb(byte[] bytesPb)
        -                 throws com.google.protobuf.InvalidProtocolBufferException
        -
        Throws:
        -
        com.google.protobuf.InvalidProtocolBufferException
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/DatastoreReader.html b/apidocs/com/google/gcloud/datastore/DatastoreReader.html deleted file mode 100644 index 97c8c9b3eecd..000000000000 --- a/apidocs/com/google/gcloud/datastore/DatastoreReader.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - -DatastoreReader (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Interface DatastoreReader

-
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      List<Entity>fetch(Key... keys) -
      Returns a list with a value for each given key (ordered by input).
      -
      Iterator<Entity>get(Key... key) -
      Returns an Entity for each given Key that exists in the Datastore.
      -
      Entityget(Key key) -
      Returns an Entity for the given Key or null if does not exists.
      -
      <T> QueryResults<T>run(Query<T> query) -
      Submit a Query and returns its result.
      -
      -
    • -
    -
  • -
-
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/DatastoreReaderWriter.html b/apidocs/com/google/gcloud/datastore/DatastoreReaderWriter.html deleted file mode 100644 index a6309c79994b..000000000000 --- a/apidocs/com/google/gcloud/datastore/DatastoreReaderWriter.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - -DatastoreReaderWriter (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Interface DatastoreReaderWriter

-
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/DatastoreService.TransactionCallable.html b/apidocs/com/google/gcloud/datastore/DatastoreService.TransactionCallable.html deleted file mode 100644 index a634f33b7b9e..000000000000 --- a/apidocs/com/google/gcloud/datastore/DatastoreService.TransactionCallable.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - -DatastoreService.TransactionCallable (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Interface DatastoreService.TransactionCallable<T>

-
-
-
-
    -
  • -
    Type Parameters:
    T - the type of the return value
    -
    -
    Enclosing interface:
    -
    DatastoreService
    -
    -
    -
    -
    public static interface DatastoreService.TransactionCallable<T>
    -
    An Callback for running with a Transactional - DatastoreReaderWriter. - The associated transaction will be committed after a successful return from the run - method. Any propagated exception will cause the transaction to be rolled-back.
    -
  • -
-
-
-
    -
  • - - -
  • -
-
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/DatastoreService.html b/apidocs/com/google/gcloud/datastore/DatastoreService.html deleted file mode 100644 index 965c0eafe2e6..000000000000 --- a/apidocs/com/google/gcloud/datastore/DatastoreService.html +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - -DatastoreService (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Interface DatastoreService

-
-
-
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/DatastoreServiceException.Code.html b/apidocs/com/google/gcloud/datastore/DatastoreServiceException.Code.html deleted file mode 100644 index 386845cb696b..000000000000 --- a/apidocs/com/google/gcloud/datastore/DatastoreServiceException.Code.html +++ /dev/null @@ -1,464 +0,0 @@ - - - - - - -DatastoreServiceException.Code (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Enum DatastoreServiceException.Code

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/DatastoreServiceException.html b/apidocs/com/google/gcloud/datastore/DatastoreServiceException.html deleted file mode 100644 index 7e93f6558b74..000000000000 --- a/apidocs/com/google/gcloud/datastore/DatastoreServiceException.html +++ /dev/null @@ -1,325 +0,0 @@ - - - - - - -DatastoreServiceException (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class DatastoreServiceException

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/DatastoreServiceFactory.html b/apidocs/com/google/gcloud/datastore/DatastoreServiceFactory.html deleted file mode 100644 index 78f47b2a98db..000000000000 --- a/apidocs/com/google/gcloud/datastore/DatastoreServiceFactory.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - -DatastoreServiceFactory (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class DatastoreServiceFactory

-
-
- -
-
    -
  • -
    -
    -
    public abstract class DatastoreServiceFactory
    -extends Object
    -
    A base class for DatasoreService factories.
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/DatastoreServiceOptions.Builder.html b/apidocs/com/google/gcloud/datastore/DatastoreServiceOptions.Builder.html deleted file mode 100644 index c9881c2b3993..000000000000 --- a/apidocs/com/google/gcloud/datastore/DatastoreServiceOptions.Builder.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - -DatastoreServiceOptions.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class DatastoreServiceOptions.Builder

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/DatastoreServiceOptions.html b/apidocs/com/google/gcloud/datastore/DatastoreServiceOptions.html deleted file mode 100644 index 7de4468abed8..000000000000 --- a/apidocs/com/google/gcloud/datastore/DatastoreServiceOptions.html +++ /dev/null @@ -1,389 +0,0 @@ - - - - - - -DatastoreServiceOptions (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class DatastoreServiceOptions

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/DatastoreWriter.html b/apidocs/com/google/gcloud/datastore/DatastoreWriter.html deleted file mode 100644 index bbfbb4395da4..000000000000 --- a/apidocs/com/google/gcloud/datastore/DatastoreWriter.html +++ /dev/null @@ -1,294 +0,0 @@ - - - - - - -DatastoreWriter (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Interface DatastoreWriter

-
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      List<Entity>add(FullEntity<?>... entity) -
      Datastore add operation.
      -
      Entityadd(FullEntity<?> entity) -
      Datastore add operation.
      -
      voiddelete(Key... key) -
      A datastore delete operation.
      -
      voidput(Entity... entity) -
      A Datastore put (a.k.a upsert) operation.
      -
      voidupdate(Entity... entity) -
      A Datastore update operation.
      -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        add

        -
        Entity add(FullEntity<?> entity)
        -
        Datastore add operation. - This method will automatically allocate an id if necessary.
        -
        Parameters:
        entity - the entity to add
        -
        Returns:
        an Entity with the same properties and a key that is either newly allocated - or the same one if key is already complete
        -
        Throws:
        -
        DatastoreServiceException - upon failure
        -
        IllegalArgumentException - if the given entity is missing a key
        -
      • -
      - - - -
        -
      • -

        add

        -
        List<Entity> add(FullEntity<?>... entity)
        -
        Datastore add operation. - This method will automatically allocate id for any entity with an incomplete key.
        -
        Returns:
        a list of Entity ordered by input with the same properties and a key that - is either newly allocated or the same one if was already complete
        -
        Throws:
        -
        DatastoreServiceException - upon failure
        -
        IllegalArgumentException - if any of the given entities is missing a key
        See Also:
        add(FullEntity)
        -
      • -
      - - - -
        -
      • -

        update

        -
        void update(Entity... entity)
        -
        A Datastore update operation. - The operation will fail if an entity with the same key does not already exist.
        -
      • -
      - - - -
        -
      • -

        put

        -
        void put(Entity... entity)
        -
        A Datastore put (a.k.a upsert) operation. - The operation will add or modify the entities.
        -
      • -
      - - - -
        -
      • -

        delete

        -
        void delete(Key... key)
        -
        A datastore delete operation. - It is OK request a deletion of a non-existing entity.
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/DateTime.html b/apidocs/com/google/gcloud/datastore/DateTime.html deleted file mode 100644 index e1bd37e959fa..000000000000 --- a/apidocs/com/google/gcloud/datastore/DateTime.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - - - -DateTime (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class DateTime

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        toString

        -
        public String toString()
        -
      • -
      - - - -
        -
      • -

        hashCode

        -
        public int hashCode()
        -
        -
        Overrides:
        -
        hashCode in class Object
        -
        -
      • -
      - - - - - - - -
        -
      • -

        equals

        -
        public boolean equals(Object obj)
        -
        -
        Overrides:
        -
        equals in class Object
        -
        -
      • -
      - - - -
        -
      • -

        timestampMicroseconds

        -
        public long timestampMicroseconds()
        -
      • -
      - - - -
        -
      • -

        timestampMillis

        -
        public long timestampMillis()
        -
      • -
      - - - -
        -
      • -

        toDate

        -
        public Date toDate()
        -
      • -
      - - - -
        -
      • -

        toCalendar

        -
        public Calendar toCalendar()
        -
      • -
      - - - -
        -
      • -

        now

        -
        public static DateTime now()
        -
      • -
      - - - -
        -
      • -

        copyFrom

        -
        public static DateTime copyFrom(Date date)
        -
      • -
      - - - - - - - -
        -
      • -

        toPb

        -
        protected com.google.api.services.datastore.DatastoreV1.Value toPb()
        -
      • -
      - - - -
        -
      • -

        fromPb

        -
        protected Object fromPb(byte[] bytesPb)
        -                 throws com.google.protobuf.InvalidProtocolBufferException
        -
        Throws:
        -
        com.google.protobuf.InvalidProtocolBufferException
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/DateTimeValue.Builder.html b/apidocs/com/google/gcloud/datastore/DateTimeValue.Builder.html deleted file mode 100644 index b73e75b476fd..000000000000 --- a/apidocs/com/google/gcloud/datastore/DateTimeValue.Builder.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - -DateTimeValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class DateTimeValue.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    DateTimeValue
    -
    -
    -
    -
    public static final class DateTimeValue.Builder
    -extends Object
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - - - - - -
        -
      • -

        getValueType

        -
        public ValueType getValueType()
        -
      • -
      - - - - - -
        -
      • -

        mergeFrom

        -
        public B mergeFrom(P other)
        -
      • -
      - - - -
        -
      • -

        getIndexed

        -
        public Boolean getIndexed()
        -
      • -
      - - - -
        -
      • -

        indexed

        -
        public B indexed(boolean indexed)
        -
      • -
      - - - -
        -
      • -

        getMeaning

        -
        public Integer getMeaning()
        -
      • -
      - - - -
        -
      • -

        meaning

        -
        public B meaning(Integer meaning)
        -
      • -
      - - - -
        -
      • -

        get

        -
        public V get()
        -
      • -
      - - - - - -
        -
      • -

        set

        -
        public B set(V value)
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/DateTimeValue.html b/apidocs/com/google/gcloud/datastore/DateTimeValue.html deleted file mode 100644 index 2da8686883a1..000000000000 --- a/apidocs/com/google/gcloud/datastore/DateTimeValue.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - -DateTimeValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class DateTimeValue

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/DoubleValue.Builder.html b/apidocs/com/google/gcloud/datastore/DoubleValue.Builder.html deleted file mode 100644 index 6484bd7f43fc..000000000000 --- a/apidocs/com/google/gcloud/datastore/DoubleValue.Builder.html +++ /dev/null @@ -1,368 +0,0 @@ - - - - - - -DoubleValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class DoubleValue.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    DoubleValue
    -
    -
    -
    -
    public static final class DoubleValue.Builder
    -extends Object
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DoubleValue.Builder

        -
        public DoubleValue.Builder()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - - - - - -
        -
      • -

        getValueType

        -
        public ValueType getValueType()
        -
      • -
      - - - - - -
        -
      • -

        mergeFrom

        -
        public B mergeFrom(P other)
        -
      • -
      - - - -
        -
      • -

        getIndexed

        -
        public Boolean getIndexed()
        -
      • -
      - - - -
        -
      • -

        indexed

        -
        public B indexed(boolean indexed)
        -
      • -
      - - - -
        -
      • -

        getMeaning

        -
        public Integer getMeaning()
        -
      • -
      - - - -
        -
      • -

        meaning

        -
        public B meaning(Integer meaning)
        -
      • -
      - - - -
        -
      • -

        get

        -
        public V get()
        -
      • -
      - - - - - -
        -
      • -

        set

        -
        public B set(V value)
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/DoubleValue.html b/apidocs/com/google/gcloud/datastore/DoubleValue.html deleted file mode 100644 index a1db04ee3f59..000000000000 --- a/apidocs/com/google/gcloud/datastore/DoubleValue.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - -DoubleValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class DoubleValue

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/Entity.Builder.html b/apidocs/com/google/gcloud/datastore/Entity.Builder.html deleted file mode 100644 index e4dd5b99a48b..000000000000 --- a/apidocs/com/google/gcloud/datastore/Entity.Builder.html +++ /dev/null @@ -1,503 +0,0 @@ - - - - - - -Entity.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class Entity.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Entity
    -
    -
    -
    -
    public static final class Entity.Builder
    -extends Object
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - - - - - -
        -
      • -

        build

        -
        public Entity build()
        -
      • -
      - - - -
        -
      • -

        key

        -
        protected K key()
        -
      • -
      - - - - - - - -
        -
      • -

        fill

        -
        protected B fill(com.google.api.services.datastore.DatastoreV1.Entity entityPb)
        -
      • -
      - - - -
        -
      • -

        properties

        -
        protected B properties(Map<String,Value<?>> properties)
        -
      • -
      - - - -
        -
      • -

        clear

        -
        public B clear()
        -
        Clears all the properties.
        -
      • -
      - - - -
        -
      • -

        remove

        -
        public B remove(String name)
        -
        Removes a property with the given name.
        -
      • -
      - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    Value value)
        -
      • -
      - - - - - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    long value)
        -
      • -
      - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    double value)
        -
      • -
      - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    boolean value)
        -
      • -
      - - - - - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    Key value)
        -
      • -
      - - - - - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    List<? extends Value<?>> values)
        -
      • -
      - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    Value<?> value,
        -    Value<?>... other)
        -
      • -
      - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    Blob value)
        -
      • -
      - - - -
        -
      • -

        setNull

        -
        public B setNull(String name)
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/Entity.html b/apidocs/com/google/gcloud/datastore/Entity.html deleted file mode 100644 index afa96c719ec8..000000000000 --- a/apidocs/com/google/gcloud/datastore/Entity.html +++ /dev/null @@ -1,350 +0,0 @@ - - - - - - -Entity (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class Entity

-
-
- -
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    Serializable
    -
    -
    -
    -
    public final class Entity
    -extends FullEntity<Key>
    -
    An entity is the Google Cloud Datastore persistent data object for a specific key. - An entity will always have a complete Key.
    -
    See Also:
    Serialized Form
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/EntityValue.Builder.html b/apidocs/com/google/gcloud/datastore/EntityValue.Builder.html deleted file mode 100644 index f13f91d502c0..000000000000 --- a/apidocs/com/google/gcloud/datastore/EntityValue.Builder.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - -EntityValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class EntityValue.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    EntityValue
    -
    -
    -
    -
    public static final class EntityValue.Builder
    -extends Object
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - - - - - - - - - -
        -
      • -

        getValueType

        -
        public ValueType getValueType()
        -
      • -
      - - - - - -
        -
      • -

        mergeFrom

        -
        public B mergeFrom(P other)
        -
      • -
      - - - -
        -
      • -

        getIndexed

        -
        public Boolean getIndexed()
        -
      • -
      - - - -
        -
      • -

        getMeaning

        -
        public Integer getMeaning()
        -
      • -
      - - - -
        -
      • -

        meaning

        -
        public B meaning(Integer meaning)
        -
      • -
      - - - -
        -
      • -

        get

        -
        public V get()
        -
      • -
      - - - - - -
        -
      • -

        set

        -
        public B set(V value)
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/EntityValue.html b/apidocs/com/google/gcloud/datastore/EntityValue.html deleted file mode 100644 index 1019ca8ade37..000000000000 --- a/apidocs/com/google/gcloud/datastore/EntityValue.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - -EntityValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class EntityValue

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/FullEntity.Builder.html b/apidocs/com/google/gcloud/datastore/FullEntity.Builder.html deleted file mode 100644 index 56034fd3bfcf..000000000000 --- a/apidocs/com/google/gcloud/datastore/FullEntity.Builder.html +++ /dev/null @@ -1,505 +0,0 @@ - - - - - - -FullEntity.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class FullEntity.Builder<K extends IncompleteKey>

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - - - - - -
        -
      • -

        key

        -
        protected K key()
        -
      • -
      - - - - - - - -
        -
      • -

        fill

        -
        protected B fill(com.google.api.services.datastore.DatastoreV1.Entity entityPb)
        -
      • -
      - - - -
        -
      • -

        properties

        -
        protected B properties(Map<String,Value<?>> properties)
        -
      • -
      - - - - - -
        -
      • -

        key

        -
        public B key(K key)
        -
      • -
      - - - -
        -
      • -

        clear

        -
        public B clear()
        -
        Clears all the properties.
        -
      • -
      - - - -
        -
      • -

        remove

        -
        public B remove(String name)
        -
        Removes a property with the given name.
        -
      • -
      - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    Value value)
        -
      • -
      - - - - - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    long value)
        -
      • -
      - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    double value)
        -
      • -
      - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    boolean value)
        -
      • -
      - - - - - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    Key value)
        -
      • -
      - - - - - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    List<? extends Value<?>> values)
        -
      • -
      - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    Value<?> value,
        -    Value<?>... other)
        -
      • -
      - - - -
        -
      • -

        set

        -
        public B set(String name,
        -    Blob value)
        -
      • -
      - - - -
        -
      • -

        setNull

        -
        public B setNull(String name)
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/FullEntity.html b/apidocs/com/google/gcloud/datastore/FullEntity.html deleted file mode 100644 index 19ee5d87c0fb..000000000000 --- a/apidocs/com/google/gcloud/datastore/FullEntity.html +++ /dev/null @@ -1,341 +0,0 @@ - - - - - - -FullEntity (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class FullEntity<K extends IncompleteKey>

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/GqlQuery.Builder.html b/apidocs/com/google/gcloud/datastore/GqlQuery.Builder.html deleted file mode 100644 index d77453d8d585..000000000000 --- a/apidocs/com/google/gcloud/datastore/GqlQuery.Builder.html +++ /dev/null @@ -1,531 +0,0 @@ - - - - - - -GqlQuery.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class GqlQuery.Builder<V>

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    GqlQuery<V>
    -
    -
    -
    -
    public static final class GqlQuery.Builder<V>
    -extends Object
    -
    A GQL query builder.
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/GqlQuery.html b/apidocs/com/google/gcloud/datastore/GqlQuery.html deleted file mode 100644 index 1a3d016e88cb..000000000000 --- a/apidocs/com/google/gcloud/datastore/GqlQuery.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - - - -GqlQuery (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class GqlQuery<V>

-
-
- -
-
    -
  • -
    Type Parameters:
    V - the type of the result values this query will produce
    -
    -
    All Implemented Interfaces:
    -
    Serializable
    -
    -
    -
    -
    public final class GqlQuery<V>
    -extends Query<V>
    -
    A Google Cloud Datastore GQL. - -

    A usage example:

    - -

    When the type of the results is known the preferred usage would be: -

    Query<Entity> query =
    -       Query.gqlQueryBuilder(Query.ResultType.ENTITY, "select * from kind").build();
    -   QueryResults<Entity> results = datastore.run(query);
    -   while (results.hasNext()) {
    -     Entity entity = results.next();
    -     ...
    -   }
    -  
    - -

    When the type of the results is unknown you can use this approach: -

    Query<?> query = Query.gqlQueryBuilder("select __key__ from kind").build();
    -   QueryResults<?> results = datastore.run(query);
    -   if (Key.class.isAssignableFrom(results.resultClass())) {
    -     QueryResults<Key> keys = (QueryResults<Key>) results;
    -     while (keys.hasNext()) {
    -       Key key = keys.next();
    -       ...
    -     }
    -   }
    -  
    -
    See Also:
    GQL Reference, -Serialized Form
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        queryString

        -
        public String queryString()
        -
      • -
      - - - -
        -
      • -

        allowLiteral

        -
        public boolean allowLiteral()
        -
      • -
      - - - -
        -
      • -

        namedBindings

        -
        public Map<String,Object> namedBindings()
        -
        Returns an immutable map of named bindings.
        -
      • -
      - - - -
        -
      • -

        numberArgs

        -
        public List<Object> numberArgs()
        -
        Returns an immutable list of positional bindings (using original order).
        -
      • -
      - - - -
        -
      • -

        hashCode

        -
        public int hashCode()
        -
        -
        Overrides:
        -
        hashCode in class Object
        -
        -
      • -
      - - - -
        -
      • -

        equals

        -
        public boolean equals(Object obj)
        -
        -
        Overrides:
        -
        equals in class Object
        -
        -
      • -
      - - - -
        -
      • -

        toPb

        -
        protected com.google.api.services.datastore.DatastoreV1.GqlQuery toPb()
        -
      • -
      - - - -
        -
      • -

        populatePb

        -
        protected void populatePb(com.google.api.services.datastore.DatastoreV1.RunQueryRequest.Builder requestPb)
        -
        -
        Specified by:
        -
        populatePb in class Query<V>
        -
        -
      • -
      - - - -
        -
      • -

        nextQuery

        -
        protected GqlQuery<V> nextQuery(com.google.api.services.datastore.DatastoreV1.QueryResultBatch responsePb)
        -
        -
        Specified by:
        -
        nextQuery in class Query<V>
        -
        -
      • -
      - - - -
        -
      • -

        fromPb

        -
        protected Object fromPb(Query.ResultType<V> resultType,
        -            String namespace,
        -            byte[] bytesPb)
        -                 throws com.google.protobuf.InvalidProtocolBufferException
        -
        -
        Specified by:
        -
        fromPb in class Query<V>
        -
        Throws:
        -
        com.google.protobuf.InvalidProtocolBufferException
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/IncompleteKey.Builder.html b/apidocs/com/google/gcloud/datastore/IncompleteKey.Builder.html deleted file mode 100644 index fc1feb319880..000000000000 --- a/apidocs/com/google/gcloud/datastore/IncompleteKey.Builder.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - -IncompleteKey.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class IncompleteKey.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    IncompleteKey
    -
    -
    -
    -
    public static class IncompleteKey.Builder
    -extends Object
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/IncompleteKey.html b/apidocs/com/google/gcloud/datastore/IncompleteKey.html deleted file mode 100644 index 54ff5ca6546c..000000000000 --- a/apidocs/com/google/gcloud/datastore/IncompleteKey.html +++ /dev/null @@ -1,442 +0,0 @@ - - - - - - -IncompleteKey (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class IncompleteKey

-
-
- -
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    Serializable
    -
    -
    -
    Direct Known Subclasses:
    -
    Key
    -
    -
    -
    -
    public class IncompleteKey
    -extends Object
    -
    An incomplete key (without a name or id). - This class is immutable.
    -
    See Also:
    Serialized Form
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/Key.Builder.html b/apidocs/com/google/gcloud/datastore/Key.Builder.html deleted file mode 100644 index 91c362bc50cf..000000000000 --- a/apidocs/com/google/gcloud/datastore/Key.Builder.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - -Key.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class Key.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Key
    -
    -
    -
    -
    public static final class Key.Builder
    -extends Object
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/Key.html b/apidocs/com/google/gcloud/datastore/Key.html deleted file mode 100644 index e5b6f903805d..000000000000 --- a/apidocs/com/google/gcloud/datastore/Key.html +++ /dev/null @@ -1,632 +0,0 @@ - - - - - - -Key (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class Key

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        hasId

        -
        public boolean hasId()
        -
      • -
      - - - -
        -
      • -

        id

        -
        public Long id()
        -
        Returns the key's id or null if it has a name instead.
        -
      • -
      - - - -
        -
      • -

        hasName

        -
        public boolean hasName()
        -
      • -
      - - - -
        -
      • -

        name

        -
        public String name()
        -
        Returns the key's name or null if it has an id instead.
        -
      • -
      - - - -
        -
      • -

        nameOrId

        -
        public Object nameOrId()
        -
        Returns the key's id (as Long) or name (as String). - Never null.
        -
      • -
      - - - -
        -
      • -

        toUrlSafe

        -
        public String toUrlSafe()
        -
        Returns the key in an encoded form that can be used as part of a URL.
        -
      • -
      - - - -
        -
      • -

        fromUrlSafe

        -
        public static Key fromUrlSafe(String urlSafe)
        -
        Create a Key given its URL safe encoded form.
        -
        Throws:
        -
        IllegalArgumentException - when decoding fails
        -
      • -
      - - - -
        -
      • -

        fromPb

        -
        protected Object fromPb(byte[] bytesPb)
        -                 throws com.google.protobuf.InvalidProtocolBufferException
        -
        -
        Overrides:
        -
        fromPb in class IncompleteKey
        -
        Throws:
        -
        com.google.protobuf.InvalidProtocolBufferException
        -
      • -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        -
      • -

        projectId

        -
        public String projectId()
        -
        Returns the key's projectId.
        -
      • -
      - - - -
        -
      • -

        namespace

        -
        public String namespace()
        -
        Returns the key's namespace or null if not provided.
        -
      • -
      - - - -
        -
      • -

        ancestors

        -
        public List<PathElement> ancestors()
        -
        Returns an immutable list with the key's ancestors.
        -
      • -
      - - - -
        -
      • -

        kind

        -
        public String kind()
        -
        Returns the key's kind.
        -
      • -
      - - - -
        -
      • -

        hashCode

        -
        public int hashCode()
        -
        -
        Overrides:
        -
        hashCode in class Object
        -
        -
      • -
      - - - -
        -
      • -

        equals

        -
        public boolean equals(Object obj)
        -
        -
        Overrides:
        -
        equals in class Object
        -
        -
      • -
      - - - -
        -
      • -

        toPb

        -
        protected com.google.api.services.datastore.DatastoreV1.Key toPb()
        -
      • -
      - - - - - - - - -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/KeyFactory.html b/apidocs/com/google/gcloud/datastore/KeyFactory.html deleted file mode 100644 index 6f0c9d50fec0..000000000000 --- a/apidocs/com/google/gcloud/datastore/KeyFactory.html +++ /dev/null @@ -1,408 +0,0 @@ - - - - - - -KeyFactory (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class KeyFactory

-
-
- -
-
    -
  • -
    -
    -
    public final class KeyFactory
    -extends Object
    -
    An helper for creating keys for a specific DatastoreService, - using its associated projectId and namespace.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        KeyFactory

        -
        public KeyFactory(String projectId)
        -
      • -
      - - - -
        -
      • -

        KeyFactory

        -
        public KeyFactory(String projectId,
        -          String namespace)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/KeyValue.Builder.html b/apidocs/com/google/gcloud/datastore/KeyValue.Builder.html deleted file mode 100644 index 651715a78e5d..000000000000 --- a/apidocs/com/google/gcloud/datastore/KeyValue.Builder.html +++ /dev/null @@ -1,368 +0,0 @@ - - - - - - -KeyValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class KeyValue.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    KeyValue
    -
    -
    -
    -
    public static final class KeyValue.Builder
    -extends Object
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        KeyValue.Builder

        -
        public KeyValue.Builder()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        build

        -
        public KeyValue build()
        -
      • -
      - - - -
        -
      • -

        getValueType

        -
        public ValueType getValueType()
        -
      • -
      - - - - - -
        -
      • -

        mergeFrom

        -
        public B mergeFrom(P other)
        -
      • -
      - - - -
        -
      • -

        getIndexed

        -
        public Boolean getIndexed()
        -
      • -
      - - - -
        -
      • -

        indexed

        -
        public B indexed(boolean indexed)
        -
      • -
      - - - -
        -
      • -

        getMeaning

        -
        public Integer getMeaning()
        -
      • -
      - - - -
        -
      • -

        meaning

        -
        public B meaning(Integer meaning)
        -
      • -
      - - - -
        -
      • -

        get

        -
        public V get()
        -
      • -
      - - - - - -
        -
      • -

        set

        -
        public B set(V value)
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/KeyValue.html b/apidocs/com/google/gcloud/datastore/KeyValue.html deleted file mode 100644 index 9f716017c40a..000000000000 --- a/apidocs/com/google/gcloud/datastore/KeyValue.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - -KeyValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class KeyValue

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/ListValue.Builder.html b/apidocs/com/google/gcloud/datastore/ListValue.Builder.html deleted file mode 100644 index 064639a45e00..000000000000 --- a/apidocs/com/google/gcloud/datastore/ListValue.Builder.html +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - -ListValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class ListValue.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    ListValue
    -
    -
    -
    -
    public static final class ListValue.Builder
    -extends Object
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/ListValue.html b/apidocs/com/google/gcloud/datastore/ListValue.html deleted file mode 100644 index cfb099fe2d47..000000000000 --- a/apidocs/com/google/gcloud/datastore/ListValue.html +++ /dev/null @@ -1,384 +0,0 @@ - - - - - - -ListValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class ListValue

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/LongValue.Builder.html b/apidocs/com/google/gcloud/datastore/LongValue.Builder.html deleted file mode 100644 index ef1e9190885d..000000000000 --- a/apidocs/com/google/gcloud/datastore/LongValue.Builder.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - -LongValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class LongValue.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    LongValue
    -
    -
    -
    -
    public static final class LongValue.Builder
    -extends Object
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - - - - - -
        -
      • -

        getValueType

        -
        public ValueType getValueType()
        -
      • -
      - - - - - -
        -
      • -

        mergeFrom

        -
        public B mergeFrom(P other)
        -
      • -
      - - - -
        -
      • -

        getIndexed

        -
        public Boolean getIndexed()
        -
      • -
      - - - -
        -
      • -

        indexed

        -
        public B indexed(boolean indexed)
        -
      • -
      - - - -
        -
      • -

        getMeaning

        -
        public Integer getMeaning()
        -
      • -
      - - - -
        -
      • -

        meaning

        -
        public B meaning(Integer meaning)
        -
      • -
      - - - -
        -
      • -

        get

        -
        public V get()
        -
      • -
      - - - - - -
        -
      • -

        set

        -
        public B set(V value)
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/LongValue.html b/apidocs/com/google/gcloud/datastore/LongValue.html deleted file mode 100644 index 03ebac71ba92..000000000000 --- a/apidocs/com/google/gcloud/datastore/LongValue.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - -LongValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class LongValue

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/NullValue.Builder.html b/apidocs/com/google/gcloud/datastore/NullValue.Builder.html deleted file mode 100644 index e4856915e5bb..000000000000 --- a/apidocs/com/google/gcloud/datastore/NullValue.Builder.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - -NullValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class NullValue.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    NullValue
    -
    -
    -
    -
    public static final class NullValue.Builder
    -extends Object
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - - - - - - - - - -
        -
      • -

        getValueType

        -
        public ValueType getValueType()
        -
      • -
      - - - - - -
        -
      • -

        mergeFrom

        -
        public B mergeFrom(P other)
        -
      • -
      - - - -
        -
      • -

        getIndexed

        -
        public Boolean getIndexed()
        -
      • -
      - - - -
        -
      • -

        indexed

        -
        public B indexed(boolean indexed)
        -
      • -
      - - - -
        -
      • -

        getMeaning

        -
        public Integer getMeaning()
        -
      • -
      - - - -
        -
      • -

        meaning

        -
        public B meaning(Integer meaning)
        -
      • -
      - - - -
        -
      • -

        get

        -
        public V get()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/NullValue.html b/apidocs/com/google/gcloud/datastore/NullValue.html deleted file mode 100644 index f408fecc544c..000000000000 --- a/apidocs/com/google/gcloud/datastore/NullValue.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - -NullValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class NullValue

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/PathElement.html b/apidocs/com/google/gcloud/datastore/PathElement.html deleted file mode 100644 index aad11cd7e202..000000000000 --- a/apidocs/com/google/gcloud/datastore/PathElement.html +++ /dev/null @@ -1,419 +0,0 @@ - - - - - - -PathElement (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class PathElement

-
-
- -
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    Serializable
    -
    -
    -
    -
    public final class PathElement
    -extends Object
    -
    Represents a single element in a key's path.
    -
    See Also:
    Serialized Form
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        kind

        -
        public String kind()
        -
      • -
      - - - -
        -
      • -

        hasId

        -
        public boolean hasId()
        -
      • -
      - - - -
        -
      • -

        id

        -
        public Long id()
        -
      • -
      - - - -
        -
      • -

        hasName

        -
        public boolean hasName()
        -
      • -
      - - - -
        -
      • -

        name

        -
        public String name()
        -
      • -
      - - - -
        -
      • -

        nameOrId

        -
        public Object nameOrId()
        -
      • -
      - - - -
        -
      • -

        hashCode

        -
        public int hashCode()
        -
        -
        Overrides:
        -
        hashCode in class Object
        -
        -
      • -
      - - - -
        -
      • -

        equals

        -
        public boolean equals(Object obj)
        -
        -
        Overrides:
        -
        equals in class Object
        -
        -
      • -
      - - - -
        -
      • -

        toPb

        -
        protected com.google.api.services.datastore.DatastoreV1.Key.PathElement toPb()
        -
      • -
      - - - -
        -
      • -

        fromPb

        -
        protected Object fromPb(byte[] bytesPb)
        -                 throws com.google.protobuf.InvalidProtocolBufferException
        -
        Throws:
        -
        com.google.protobuf.InvalidProtocolBufferException
        -
      • -
      - - - - - - - - - - - - - - - - -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/ProjectionEntity.html b/apidocs/com/google/gcloud/datastore/ProjectionEntity.html deleted file mode 100644 index f2f90300a217..000000000000 --- a/apidocs/com/google/gcloud/datastore/ProjectionEntity.html +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - -ProjectionEntity (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class ProjectionEntity

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/Query.ResultType.html b/apidocs/com/google/gcloud/datastore/Query.ResultType.html deleted file mode 100644 index 0fa71d6b1909..000000000000 --- a/apidocs/com/google/gcloud/datastore/Query.ResultType.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - -Query.ResultType (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class Query.ResultType<V>

-
-
- -
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    Serializable
    -
    -
    -
    Enclosing class:
    -
    Query<V>
    -
    -
    -
    -
    public abstract static class Query.ResultType<V>
    -extends Object
    -implements Serializable
    -
    This class represents the expected type of the result. - ENTITY: A full entity represented by Entity. - PROJECTION_ENTITY: A projection entity, represented by ProjectionEntity. - KEY: An entity's Key.
    -
    See Also:
    Serialized Form
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/Query.html b/apidocs/com/google/gcloud/datastore/Query.html deleted file mode 100644 index 6d170eb0ec59..000000000000 --- a/apidocs/com/google/gcloud/datastore/Query.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - - - -Query (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class Query<V>

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/QueryResults.html b/apidocs/com/google/gcloud/datastore/QueryResults.html deleted file mode 100644 index 1a62cd728b39..000000000000 --- a/apidocs/com/google/gcloud/datastore/QueryResults.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - -QueryResults (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Interface QueryResults<V>

-
-
-
-
    -
  • -
    Type Parameters:
    V - the type of the results value.
    -
    -
    All Superinterfaces:
    -
    Iterator<V>
    -
    -
    -
    -
    public interface QueryResults<V>
    -extends Iterator<V>
    -
    The result of a Google Cloud Datastore query submission. - When result is not typed it is possible to cast it to its appropriate type according to - the resultClass() value. - Results are loaded lazily therefore it is possible to get a DatastoreServiceException - upon hasNext or next calls.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        resultClass

        -
        Class<?> resultClass()
        -
        Returns the actual class of the result's values.
        -
      • -
      - - - -
        -
      • -

        cursorAfter

        -
        Cursor cursorAfter()
        -
        Returns the Cursor for point after the value returned in the last Iterator.next() call. - Not currently implemented (depends on v1beta3).
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/RawValue.html b/apidocs/com/google/gcloud/datastore/RawValue.html deleted file mode 100644 index e0c9e75d97d0..000000000000 --- a/apidocs/com/google/gcloud/datastore/RawValue.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - -RawValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class RawValue

-
-
- -
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    Serializable
    -
    -
    -
    -
    public final class RawValue
    -extends Value<com.google.api.services.datastore.DatastoreV1.Value>
    -
    See Also:
    Serialized Form
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/StringValue.Builder.html b/apidocs/com/google/gcloud/datastore/StringValue.Builder.html deleted file mode 100644 index 8393d1b00403..000000000000 --- a/apidocs/com/google/gcloud/datastore/StringValue.Builder.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - -StringValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class StringValue.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    StringValue
    -
    -
    -
    -
    public static final class StringValue.Builder
    -extends Object
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - - - - - -
        -
      • -

        getValueType

        -
        public ValueType getValueType()
        -
      • -
      - - - - - -
        -
      • -

        mergeFrom

        -
        public B mergeFrom(P other)
        -
      • -
      - - - -
        -
      • -

        getIndexed

        -
        public Boolean getIndexed()
        -
      • -
      - - - -
        -
      • -

        indexed

        -
        public B indexed(boolean indexed)
        -
      • -
      - - - -
        -
      • -

        getMeaning

        -
        public Integer getMeaning()
        -
      • -
      - - - -
        -
      • -

        meaning

        -
        public B meaning(Integer meaning)
        -
      • -
      - - - -
        -
      • -

        get

        -
        public V get()
        -
      • -
      - - - - - -
        -
      • -

        set

        -
        public B set(V value)
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/StringValue.html b/apidocs/com/google/gcloud/datastore/StringValue.html deleted file mode 100644 index 374a2b65cd84..000000000000 --- a/apidocs/com/google/gcloud/datastore/StringValue.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - -StringValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class StringValue

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/StructuredQuery.CompositeFilter.html b/apidocs/com/google/gcloud/datastore/StructuredQuery.CompositeFilter.html deleted file mode 100644 index 7a72748ceddd..000000000000 --- a/apidocs/com/google/gcloud/datastore/StructuredQuery.CompositeFilter.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - -StructuredQuery.CompositeFilter (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class StructuredQuery.CompositeFilter

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/StructuredQuery.EntityQueryBuilder.html b/apidocs/com/google/gcloud/datastore/StructuredQuery.EntityQueryBuilder.html deleted file mode 100644 index 080a387518f4..000000000000 --- a/apidocs/com/google/gcloud/datastore/StructuredQuery.EntityQueryBuilder.html +++ /dev/null @@ -1,360 +0,0 @@ - - - - - - -StructuredQuery.EntityQueryBuilder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class StructuredQuery.EntityQueryBuilder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    StructuredQuery<V>
    -
    -
    -
    -
    public static final class StructuredQuery.EntityQueryBuilder
    -extends Object
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/StructuredQuery.Filter.html b/apidocs/com/google/gcloud/datastore/StructuredQuery.Filter.html deleted file mode 100644 index 60dcc0ed4247..000000000000 --- a/apidocs/com/google/gcloud/datastore/StructuredQuery.Filter.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - -StructuredQuery.Filter (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class StructuredQuery.Filter

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        toPb

        -
        protected abstract com.google.api.services.datastore.DatastoreV1.Filter toPb()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/StructuredQuery.KeyQueryBuilder.html b/apidocs/com/google/gcloud/datastore/StructuredQuery.KeyQueryBuilder.html deleted file mode 100644 index d1978f82a594..000000000000 --- a/apidocs/com/google/gcloud/datastore/StructuredQuery.KeyQueryBuilder.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - -StructuredQuery.KeyQueryBuilder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class StructuredQuery.KeyQueryBuilder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    StructuredQuery<V>
    -
    -
    -
    -
    public static final class StructuredQuery.KeyQueryBuilder
    -extends Object
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/StructuredQuery.OrderBy.Direction.html b/apidocs/com/google/gcloud/datastore/StructuredQuery.OrderBy.Direction.html deleted file mode 100644 index 469fff6630be..000000000000 --- a/apidocs/com/google/gcloud/datastore/StructuredQuery.OrderBy.Direction.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - -StructuredQuery.OrderBy.Direction (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Enum StructuredQuery.OrderBy.Direction

-
-
- -
- -
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static StructuredQuery.OrderBy.Direction[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (StructuredQuery.OrderBy.Direction c : StructuredQuery.OrderBy.Direction.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in the order they are declared
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static StructuredQuery.OrderBy.Direction valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/StructuredQuery.OrderBy.html b/apidocs/com/google/gcloud/datastore/StructuredQuery.OrderBy.html deleted file mode 100644 index 149bf83e3491..000000000000 --- a/apidocs/com/google/gcloud/datastore/StructuredQuery.OrderBy.html +++ /dev/null @@ -1,360 +0,0 @@ - - - - - - -StructuredQuery.OrderBy (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class StructuredQuery.OrderBy

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/StructuredQuery.Projection.Aggregate.html b/apidocs/com/google/gcloud/datastore/StructuredQuery.Projection.Aggregate.html deleted file mode 100644 index 5813e20159c1..000000000000 --- a/apidocs/com/google/gcloud/datastore/StructuredQuery.Projection.Aggregate.html +++ /dev/null @@ -1,311 +0,0 @@ - - - - - - -StructuredQuery.Projection.Aggregate (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Enum StructuredQuery.Projection.Aggregate

-
-
- -
- -
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static StructuredQuery.Projection.Aggregate[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (StructuredQuery.Projection.Aggregate c : StructuredQuery.Projection.Aggregate.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in the order they are declared
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static StructuredQuery.Projection.Aggregate valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/StructuredQuery.Projection.html b/apidocs/com/google/gcloud/datastore/StructuredQuery.Projection.html deleted file mode 100644 index 9d1b21cd8447..000000000000 --- a/apidocs/com/google/gcloud/datastore/StructuredQuery.Projection.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - - - -StructuredQuery.Projection (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class StructuredQuery.Projection

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/StructuredQuery.ProjectionEntityQueryBuilder.html b/apidocs/com/google/gcloud/datastore/StructuredQuery.ProjectionEntityQueryBuilder.html deleted file mode 100644 index 104fadf6a4ef..000000000000 --- a/apidocs/com/google/gcloud/datastore/StructuredQuery.ProjectionEntityQueryBuilder.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - - - -StructuredQuery.ProjectionEntityQueryBuilder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class StructuredQuery.ProjectionEntityQueryBuilder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    StructuredQuery<V>
    -
    -
    -
    -
    public static final class StructuredQuery.ProjectionEntityQueryBuilder
    -extends Object
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/StructuredQuery.PropertyFilter.html b/apidocs/com/google/gcloud/datastore/StructuredQuery.PropertyFilter.html deleted file mode 100644 index b3bf9cd47911..000000000000 --- a/apidocs/com/google/gcloud/datastore/StructuredQuery.PropertyFilter.html +++ /dev/null @@ -1,930 +0,0 @@ - - - - - - -StructuredQuery.PropertyFilter (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class StructuredQuery.PropertyFilter

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/StructuredQuery.html b/apidocs/com/google/gcloud/datastore/StructuredQuery.html deleted file mode 100644 index 0b183b47b0e3..000000000000 --- a/apidocs/com/google/gcloud/datastore/StructuredQuery.html +++ /dev/null @@ -1,552 +0,0 @@ - - - - - - -StructuredQuery (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class StructuredQuery<V>

-
-
- -
-
    -
  • -
    Type Parameters:
    V - the type of the result values this query will produce
    -
    -
    All Implemented Interfaces:
    -
    Serializable
    -
    -
    -
    -
    public class StructuredQuery<V>
    -extends Query<V>
    -
    An implementation of a Google Cloud Datastore Query that can be constructed by providing - all the specific query elements. - -

    A usage example:

    - -

    A simple query that returns all entities for a specific kind -

    Query<Entity> query = Query.entityQueryBuilder().kind(kind).build();
    -   QueryResults<Entity> results = datastore.run(query);
    -   while (results.hasNext()) {
    -     Entity entity = results.next();
    -     ...
    -   }
    -  
    - -

    A simple key-only query of all entities for a specific kind -

    Query<Key> keyOnlyQuery =  Query.keyQueryBuilder().kind(KIND1).build();
    -   QueryResults<Key> results = datastore.run(keyOnlyQuery);
    -   ...
    -  
    - -

    A less trivial example of a projection query that returns the first 10 results - of "age" and "name" properties (sorted and grouped by "age") with an age greater than 18 -

    Query<ProjectionEntity> query = Query.projectionEntityQueryBuilder()
    -       .kind(kind)
    -       .projection(Projection.property("age"), Projection.first("name"))
    -       .filter(PropertyFilter.gt("age", 18))
    -       .groupBy("age")
    -       .orderBy(OrderBy.asc("age"))
    -       .limit(10)
    -       .build();
    -   QueryResults<ProjectionEntity> results = datastore.run(query);
    -   ...
    -  
    -
    See Also:
    Datastore queries, -Serialized Form
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/Transaction.Response.html b/apidocs/com/google/gcloud/datastore/Transaction.Response.html deleted file mode 100644 index f09dcb8b57be..000000000000 --- a/apidocs/com/google/gcloud/datastore/Transaction.Response.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - -Transaction.Response (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Interface Transaction.Response

-
-
-
-
    -
  • -
    -
    Enclosing interface:
    -
    Transaction
    -
    -
    -
    -
    public static interface Transaction.Response
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      List<Key>generatedKeys() 
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        generatedKeys

        -
        List<Key> generatedKeys()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/Transaction.html b/apidocs/com/google/gcloud/datastore/Transaction.html deleted file mode 100644 index 372d7af54a66..000000000000 --- a/apidocs/com/google/gcloud/datastore/Transaction.html +++ /dev/null @@ -1,544 +0,0 @@ - - - - - - -Transaction (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Interface Transaction

-
-
-
-
    -
  • -
    -
    All Superinterfaces:
    -
    DatastoreReader, DatastoreReaderWriter, DatastoreWriter
    -
    -
    -
    -
    public interface Transaction
    -extends DatastoreReaderWriter
    -
    A Google cloud datastore transaction. - Similar to Batch any write operation that is applied on a transaction will only be sent - to the Datastore upon commit(). A call to rollback() will invalidate - the transaction and discard the changes. Any read operation that is done by a transaction - will be part of it and therefore a commit is guaranteed to fail if an entity - was modified outside of the transaction after it was read. Write operation on this - transaction will not be reflected by read operation (as the changes are only sent to - the Datastore upon commit. - A usage example: -
     Transaction transaction = datastore.newTransaction();
    -   try {
    -     Entity entity = transaction.get(key);
    -     if (!entity.contains("last_name") || entity.isNull("last_name")) {
    -       String[] name = entity.getString("name").split(" ");
    -       entity = Entity.builder(entity).remove("name").set("first_name", name[0])
    -           .set("last_name", name[1]).build();
    -       transaction.update(entity);
    -       transaction.commit();
    -     }
    -   } finally {
    -     if (transaction.active()) {
    -       transaction.rollback();
    -     }
    -   }
    -  
    -
    See Also:
    Google Cloud Datastore transactions
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        get

        -
        Entity get(Key key)
        -
        Returns an Entity for the given Key or null if does not exists. - The requested entity will be part of this Datastore transaction (so a commit is guaranteed - to fail if entity was changed by others after it was seen by this transaction) but any - write changes in this transaction will not be reflected by the returned entity.
        -
        -
        Specified by:
        -
        get in interface DatastoreReader
        -
        Throws:
        -
        DatastoreServiceException - upon failure or if no longer active
        -
      • -
      - - - -
        -
      • -

        get

        -
        Iterator<Entity> get(Key... key)
        -
        Returns an Entity for each given Key that exists in the Datastore. - The order of the result is unspecified. - Results are loaded lazily therefore it is possible to get a DatastoreServiceException - from the returned Iterator's hasNext or - next methods. - The requested entities will be part of this Datastore transaction (so a commit is guaranteed - to fail if any of the entities was changed by others after they were seen by this transaction) - but any write changes in this transaction will not be reflected by the returned entities.
        -
        -
        Specified by:
        -
        get in interface DatastoreReader
        -
        Throws:
        -
        DatastoreServiceException - upon failure or if no longer active
        See Also:
        DatastoreReader.get(Key)
        -
      • -
      - - - -
        -
      • -

        fetch

        -
        List<Entity> fetch(Key... keys)
        -
        Returns a list with a value for each given key (ordered by input). - A null would be returned for non-existing keys. - When possible prefer using DatastoreReader.get(Key...) which does not eagerly loads the results. - The requested entities will be part of this Datastore transaction (so a commit is guaranteed - to fail if any of the entities was changed by others after they were seen by this transaction) - but any write changes in this transaction will not be reflected by the returned entities.
        -
        -
        Specified by:
        -
        fetch in interface DatastoreReader
        -
        Throws:
        -
        DatastoreServiceException - upon failure or if no longer active
        -
      • -
      - - - -
        -
      • -

        run

        -
        <T> QueryResults<T> run(Query<T> query)
        -
        Submit a Query and returns its result. - The entities returned by the result of this query will be part of this Datastore transaction - (so a commit is guaranteed to fail if any of the entities was changed by others after the - query was performed) but any write changes in this transaction will not be reflected by - the result.
        -
        -
        Specified by:
        -
        run in interface DatastoreReader
        -
        Throws:
        -
        DatastoreServiceException - upon failure or if no longer active
        -
      • -
      - - - - - - - -
        -
      • -

        rollback

        -
        void rollback()
        -
        Rollback the transaction.
        -
        Throws:
        -
        DatastoreServiceException - if transaction was already committed
        -
      • -
      - - - -
        -
      • -

        active

        -
        boolean active()
        -
        Returns true if the transaction is still active (was not committed or rolledback).
        -
      • -
      - - - - - - - -
        -
      • -

        addWithDeferredIdAllocation

        -
        void addWithDeferredIdAllocation(FullEntity<?>... entity)
        -
        Datastore add operation. - This method will also allocate id for any entity with an incomplete key. - As oppose to DatastoreWriter.add(FullEntity), this method will defer any necessary id allocation - to submit time.
        -
        Throws:
        -
        IllegalArgumentException - if any of the given entities is missing a key
        -
        DatastoreServiceException - if a given entity with a - complete key was already added to this writer or if not active
        -
      • -
      - - - -
        -
      • -

        add

        -
        List<Entity> add(FullEntity<?>... entity)
        -
        Datastore add operation. - This method will automatically allocate id for any entity with an incomplete key. - For entities with complete keys that were marked for deletion in this writer the operation - will be changed to put(com.google.gcloud.datastore.Entity...).
        -
        -
        Specified by:
        -
        add in interface DatastoreWriter
        -
        Returns:
        a list of Entity ordered by input with the same properties and a key that - is either newly allocated or the same one if was already complete
        -
        Throws:
        -
        DatastoreServiceException - if a given entity with the - same complete key was already added to this writer, if writer is not active or - if id allocation for an entity with an incomplete key failed.
        See Also:
        DatastoreWriter.add(FullEntity)
        -
      • -
      - - - -
        -
      • -

        update

        -
        void update(Entity... entity)
        -
        A Datastore update operation. - The operation will fail if an entity with the same key does not already exist. - This operation will be converted to put(com.google.gcloud.datastore.Entity...) operation for entities that were already - added or put in this writer
        -
        -
        Specified by:
        -
        update in interface DatastoreWriter
        -
        Throws:
        -
        DatastoreServiceException - if an entity is marked for - deletion in this writer or if not active
        -
      • -
      - - - -
        -
      • -

        delete

        -
        void delete(Key... key)
        -
        A datastore delete operation. - It is OK request a deletion of a non-existing entity. - This operation will also remove from this batch any prior writes for entities with the same - keys
        -
        -
        Specified by:
        -
        delete in interface DatastoreWriter
        -
        Throws:
        -
        DatastoreServiceException - if not active
        -
      • -
      - - - -
        -
      • -

        put

        -
        void put(Entity... entity)
        -
        A Datastore put (a.k.a upsert) operation. - The operation will add or modify the entities. - This operation will also remove from this writer any prior writes for the same entities.
        -
        -
        Specified by:
        -
        put in interface DatastoreWriter
        -
        Throws:
        -
        DatastoreServiceException - if not active
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/TransactionOption.ForceWrites.html b/apidocs/com/google/gcloud/datastore/TransactionOption.ForceWrites.html deleted file mode 100644 index 6d61ac43cba6..000000000000 --- a/apidocs/com/google/gcloud/datastore/TransactionOption.ForceWrites.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - -TransactionOption.ForceWrites (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class TransactionOption.ForceWrites

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        TransactionOption.ForceWrites

        -
        public TransactionOption.ForceWrites(boolean force)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        force

        -
        public boolean force()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/TransactionOption.IsolationLevel.Level.html b/apidocs/com/google/gcloud/datastore/TransactionOption.IsolationLevel.Level.html deleted file mode 100644 index ab44b323a413..000000000000 --- a/apidocs/com/google/gcloud/datastore/TransactionOption.IsolationLevel.Level.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - -TransactionOption.IsolationLevel.Level (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Enum TransactionOption.IsolationLevel.Level

-
-
- -
- -
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static TransactionOption.IsolationLevel.Level[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (TransactionOption.IsolationLevel.Level c : TransactionOption.IsolationLevel.Level.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in the order they are declared
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static TransactionOption.IsolationLevel.Level valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/TransactionOption.IsolationLevel.html b/apidocs/com/google/gcloud/datastore/TransactionOption.IsolationLevel.html deleted file mode 100644 index a2c7e858b90c..000000000000 --- a/apidocs/com/google/gcloud/datastore/TransactionOption.IsolationLevel.html +++ /dev/null @@ -1,303 +0,0 @@ - - - - - - -TransactionOption.IsolationLevel (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class TransactionOption.IsolationLevel

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/TransactionOption.html b/apidocs/com/google/gcloud/datastore/TransactionOption.html deleted file mode 100644 index 117b63ec3c85..000000000000 --- a/apidocs/com/google/gcloud/datastore/TransactionOption.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - - - -TransactionOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class TransactionOption

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/Value.html b/apidocs/com/google/gcloud/datastore/Value.html deleted file mode 100644 index a8b68b373acb..000000000000 --- a/apidocs/com/google/gcloud/datastore/Value.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - - - -Value (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Class Value<V>

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        type

        -
        public final ValueType type()
        -
      • -
      - - - -
        -
      • -

        hasIndexed

        -
        public final boolean hasIndexed()
        -
      • -
      - - - -
        -
      • -

        indexed

        -
        public final Boolean indexed()
        -
      • -
      - - - -
        -
      • -

        hasMeaning

        -
        @Deprecated
        -public final boolean hasMeaning()
        -
        Deprecated. 
        -
      • -
      - - - - - - - -
        -
      • -

        get

        -
        public final V get()
        -
      • -
      - - - -
        -
      • -

        toBuilder

        -
        public abstract com.google.gcloud.datastore.ValueBuilder<?,?,?> toBuilder()
        -
      • -
      - - - -
        -
      • -

        hashCode

        -
        public int hashCode()
        -
        -
        Overrides:
        -
        hashCode in class Object
        -
        -
      • -
      - - - -
        -
      • -

        equals

        -
        public boolean equals(Object obj)
        -
        -
        Overrides:
        -
        equals in class Object
        -
        -
      • -
      - - - -
        -
      • -

        toPb

        -
        protected com.google.api.services.datastore.DatastoreV1.Value toPb()
        -
      • -
      - - - -
        -
      • -

        fromPb

        -
        protected Object fromPb(byte[] bytesPb)
        -                 throws com.google.protobuf.InvalidProtocolBufferException
        -
        Throws:
        -
        com.google.protobuf.InvalidProtocolBufferException
        -
      • -
      - - - - - - - - -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/ValueType.html b/apidocs/com/google/gcloud/datastore/ValueType.html deleted file mode 100644 index 8677cdd2422a..000000000000 --- a/apidocs/com/google/gcloud/datastore/ValueType.html +++ /dev/null @@ -1,462 +0,0 @@ - - - - - - -ValueType (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.datastore
-

Enum ValueType

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        NULL

        -
        public static final ValueType NULL
        -
        Represents a null value.
        -
      • -
      - - - -
        -
      • -

        STRING

        -
        public static final ValueType STRING
        -
        Represents a string value.
        -
      • -
      - - - -
        -
      • -

        ENTITY

        -
        public static final ValueType ENTITY
        -
        Represents an entity value.
        -
      • -
      - - - -
        -
      • -

        LIST

        -
        public static final ValueType LIST
        -
        Represents a list of Values.
        -
      • -
      - - - -
        -
      • -

        KEY

        -
        public static final ValueType KEY
        -
        Represents a key as a value.
        -
      • -
      - - - -
        -
      • -

        LONG

        -
        public static final ValueType LONG
        -
        Represents a long value.
        -
      • -
      - - - -
        -
      • -

        DOUBLE

        -
        public static final ValueType DOUBLE
        -
        Represents a double value.
        -
      • -
      - - - -
        -
      • -

        BOOLEAN

        -
        public static final ValueType BOOLEAN
        -
        Represents a boolean value.
        -
      • -
      - - - -
        -
      • -

        DATE_TIME

        -
        public static final ValueType DATE_TIME
        -
        Represents a DateTime value.
        -
      • -
      - - - -
        -
      • -

        BLOB

        -
        public static final ValueType BLOB
        -
        Represents a Blob value.
        -
      • -
      - - - -
        -
      • -

        RAW_VALUE

        -
        public static final ValueType RAW_VALUE
        -
        Represents a raw/unparsed value.
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static ValueType[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (ValueType c : ValueType.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in the order they are declared
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static ValueType valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/BaseDatastoreBatchWriter.html b/apidocs/com/google/gcloud/datastore/class-use/BaseDatastoreBatchWriter.html deleted file mode 100644 index 46dafbfeaf4d..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/BaseDatastoreBatchWriter.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.BaseDatastoreBatchWriter (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.BaseDatastoreBatchWriter

-
-
No usage of com.google.gcloud.datastore.BaseDatastoreBatchWriter
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/BaseEntity.html b/apidocs/com/google/gcloud/datastore/class-use/BaseEntity.html deleted file mode 100644 index 68bfaa43673d..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/BaseEntity.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.BaseEntity (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.BaseEntity

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/Batch.Response.html b/apidocs/com/google/gcloud/datastore/class-use/Batch.Response.html deleted file mode 100644 index 3405ed2ecda5..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/Batch.Response.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.datastore.Batch.Response (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.datastore.Batch.Response

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/Batch.html b/apidocs/com/google/gcloud/datastore/class-use/Batch.html deleted file mode 100644 index 37598b40cf58..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/Batch.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.datastore.Batch (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.datastore.Batch

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/BatchOption.ForceWrites.html b/apidocs/com/google/gcloud/datastore/class-use/BatchOption.ForceWrites.html deleted file mode 100644 index 7fedb4f7601a..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/BatchOption.ForceWrites.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.BatchOption.ForceWrites (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.BatchOption.ForceWrites

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/BatchOption.html b/apidocs/com/google/gcloud/datastore/class-use/BatchOption.html deleted file mode 100644 index 36383451a964..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/BatchOption.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.BatchOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.BatchOption

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/Blob.html b/apidocs/com/google/gcloud/datastore/class-use/Blob.html deleted file mode 100644 index 681b48981ca0..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/Blob.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.Blob (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.Blob

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/BlobValue.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/BlobValue.Builder.html deleted file mode 100644 index fd1fb2781868..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/BlobValue.Builder.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.BlobValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.BlobValue.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/BlobValue.html b/apidocs/com/google/gcloud/datastore/class-use/BlobValue.html deleted file mode 100644 index b124151b5692..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/BlobValue.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.BlobValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.BlobValue

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/BooleanValue.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/BooleanValue.Builder.html deleted file mode 100644 index e394eb0da7c6..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/BooleanValue.Builder.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.BooleanValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.BooleanValue.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/BooleanValue.html b/apidocs/com/google/gcloud/datastore/class-use/BooleanValue.html deleted file mode 100644 index 345bd6e02181..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/BooleanValue.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.BooleanValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.BooleanValue

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/Cursor.html b/apidocs/com/google/gcloud/datastore/class-use/Cursor.html deleted file mode 100644 index 80774ee6dee9..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/Cursor.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.Cursor (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.Cursor

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/DatastoreReader.html b/apidocs/com/google/gcloud/datastore/class-use/DatastoreReader.html deleted file mode 100644 index 1fb677e3bc13..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/DatastoreReader.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.datastore.DatastoreReader (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.datastore.DatastoreReader

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/DatastoreReaderWriter.html b/apidocs/com/google/gcloud/datastore/class-use/DatastoreReaderWriter.html deleted file mode 100644 index 91987f0d4772..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/DatastoreReaderWriter.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.datastore.DatastoreReaderWriter (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.datastore.DatastoreReaderWriter

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/DatastoreService.TransactionCallable.html b/apidocs/com/google/gcloud/datastore/class-use/DatastoreService.TransactionCallable.html deleted file mode 100644 index 4d4ebf235b26..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/DatastoreService.TransactionCallable.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.datastore.DatastoreService.TransactionCallable (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.datastore.DatastoreService.TransactionCallable

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/DatastoreService.html b/apidocs/com/google/gcloud/datastore/class-use/DatastoreService.html deleted file mode 100644 index 6de28b5e5d2a..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/DatastoreService.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.datastore.DatastoreService (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.datastore.DatastoreService

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceException.Code.html b/apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceException.Code.html deleted file mode 100644 index 91ab89792530..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceException.Code.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.DatastoreServiceException.Code (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.DatastoreServiceException.Code

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceException.html b/apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceException.html deleted file mode 100644 index 9857e50220f3..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceException.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.DatastoreServiceException (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.DatastoreServiceException

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceFactory.html b/apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceFactory.html deleted file mode 100644 index febed572a531..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceFactory.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.DatastoreServiceFactory (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.DatastoreServiceFactory

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceOptions.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceOptions.Builder.html deleted file mode 100644 index dda5e46a04bb..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceOptions.Builder.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.DatastoreServiceOptions.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.DatastoreServiceOptions.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceOptions.html b/apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceOptions.html deleted file mode 100644 index e85fbc9ef4ae..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/DatastoreServiceOptions.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.DatastoreServiceOptions (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.DatastoreServiceOptions

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/DatastoreWriter.html b/apidocs/com/google/gcloud/datastore/class-use/DatastoreWriter.html deleted file mode 100644 index ce4bfaea9ee3..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/DatastoreWriter.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.datastore.DatastoreWriter (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.datastore.DatastoreWriter

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/DateTime.html b/apidocs/com/google/gcloud/datastore/class-use/DateTime.html deleted file mode 100644 index 6ccea56724d6..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/DateTime.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.DateTime (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.DateTime

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/DateTimeValue.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/DateTimeValue.Builder.html deleted file mode 100644 index c47bba441bae..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/DateTimeValue.Builder.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.DateTimeValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.DateTimeValue.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/DateTimeValue.html b/apidocs/com/google/gcloud/datastore/class-use/DateTimeValue.html deleted file mode 100644 index 71d783eae3f2..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/DateTimeValue.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.DateTimeValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.DateTimeValue

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/DoubleValue.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/DoubleValue.Builder.html deleted file mode 100644 index cf1ad032268a..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/DoubleValue.Builder.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.DoubleValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.DoubleValue.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/DoubleValue.html b/apidocs/com/google/gcloud/datastore/class-use/DoubleValue.html deleted file mode 100644 index 3fb5aaef6dfe..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/DoubleValue.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.DoubleValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.DoubleValue

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/Entity.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/Entity.Builder.html deleted file mode 100644 index 46624af6d739..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/Entity.Builder.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.Entity.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.Entity.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/Entity.html b/apidocs/com/google/gcloud/datastore/class-use/Entity.html deleted file mode 100644 index 2608242d410a..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/Entity.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.Entity (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.Entity

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/EntityValue.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/EntityValue.Builder.html deleted file mode 100644 index 2f47962c2654..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/EntityValue.Builder.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.EntityValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.EntityValue.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/EntityValue.html b/apidocs/com/google/gcloud/datastore/class-use/EntityValue.html deleted file mode 100644 index d083a90e5e85..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/EntityValue.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.EntityValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.EntityValue

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/FullEntity.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/FullEntity.Builder.html deleted file mode 100644 index 2051689055e6..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/FullEntity.Builder.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.FullEntity.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.FullEntity.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/FullEntity.html b/apidocs/com/google/gcloud/datastore/class-use/FullEntity.html deleted file mode 100644 index af0d1bc9c7be..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/FullEntity.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.FullEntity (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.FullEntity

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/GqlQuery.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/GqlQuery.Builder.html deleted file mode 100644 index 64d9b0e4ea10..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/GqlQuery.Builder.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.GqlQuery.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.GqlQuery.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/GqlQuery.html b/apidocs/com/google/gcloud/datastore/class-use/GqlQuery.html deleted file mode 100644 index 6b9a00b463f1..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/GqlQuery.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.GqlQuery (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.GqlQuery

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/IncompleteKey.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/IncompleteKey.Builder.html deleted file mode 100644 index a23576f090e0..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/IncompleteKey.Builder.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.IncompleteKey.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.IncompleteKey.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/IncompleteKey.html b/apidocs/com/google/gcloud/datastore/class-use/IncompleteKey.html deleted file mode 100644 index e51b3d3a6a26..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/IncompleteKey.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.IncompleteKey (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.IncompleteKey

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/Key.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/Key.Builder.html deleted file mode 100644 index a40057e207cc..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/Key.Builder.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.Key.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.Key.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/Key.html b/apidocs/com/google/gcloud/datastore/class-use/Key.html deleted file mode 100644 index 9f40d405d7db..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/Key.html +++ /dev/null @@ -1,403 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.Key (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.Key

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/KeyFactory.html b/apidocs/com/google/gcloud/datastore/class-use/KeyFactory.html deleted file mode 100644 index 1579e81bc74c..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/KeyFactory.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.KeyFactory (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.KeyFactory

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/KeyValue.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/KeyValue.Builder.html deleted file mode 100644 index 0d36062641ec..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/KeyValue.Builder.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.KeyValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.KeyValue.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/KeyValue.html b/apidocs/com/google/gcloud/datastore/class-use/KeyValue.html deleted file mode 100644 index 7b8b36155289..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/KeyValue.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.KeyValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.KeyValue

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/ListValue.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/ListValue.Builder.html deleted file mode 100644 index 826bcc24223f..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/ListValue.Builder.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.ListValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.ListValue.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/ListValue.html b/apidocs/com/google/gcloud/datastore/class-use/ListValue.html deleted file mode 100644 index 33bfc06ecde4..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/ListValue.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.ListValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.ListValue

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/LongValue.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/LongValue.Builder.html deleted file mode 100644 index 0b0fb88f10d9..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/LongValue.Builder.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.LongValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.LongValue.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/LongValue.html b/apidocs/com/google/gcloud/datastore/class-use/LongValue.html deleted file mode 100644 index 825dbe09d5f9..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/LongValue.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.LongValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.LongValue

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/NullValue.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/NullValue.Builder.html deleted file mode 100644 index 11ed2ac54600..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/NullValue.Builder.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.NullValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.NullValue.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/NullValue.html b/apidocs/com/google/gcloud/datastore/class-use/NullValue.html deleted file mode 100644 index 7159401aa24b..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/NullValue.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.NullValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.NullValue

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/PathElement.html b/apidocs/com/google/gcloud/datastore/class-use/PathElement.html deleted file mode 100644 index 9e13743992d1..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/PathElement.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.PathElement (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.PathElement

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/ProjectionEntity.html b/apidocs/com/google/gcloud/datastore/class-use/ProjectionEntity.html deleted file mode 100644 index 59678181be04..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/ProjectionEntity.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.ProjectionEntity (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.ProjectionEntity

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/Query.ResultType.html b/apidocs/com/google/gcloud/datastore/class-use/Query.ResultType.html deleted file mode 100644 index 0378bc5cb587..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/Query.ResultType.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.Query.ResultType (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.Query.ResultType

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/Query.html b/apidocs/com/google/gcloud/datastore/class-use/Query.html deleted file mode 100644 index 51bc158b9e58..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/Query.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.Query (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.Query

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/QueryResults.html b/apidocs/com/google/gcloud/datastore/class-use/QueryResults.html deleted file mode 100644 index 1d8e39544fc5..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/QueryResults.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.datastore.QueryResults (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.datastore.QueryResults

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/RawValue.html b/apidocs/com/google/gcloud/datastore/class-use/RawValue.html deleted file mode 100644 index fe5176e53e90..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/RawValue.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.RawValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.RawValue

-
-
No usage of com.google.gcloud.datastore.RawValue
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/StringValue.Builder.html b/apidocs/com/google/gcloud/datastore/class-use/StringValue.Builder.html deleted file mode 100644 index cd32b13fa9be..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/StringValue.Builder.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.StringValue.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.StringValue.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/StringValue.html b/apidocs/com/google/gcloud/datastore/class-use/StringValue.html deleted file mode 100644 index 6388eab8e1af..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/StringValue.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.StringValue (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.StringValue

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.CompositeFilter.html b/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.CompositeFilter.html deleted file mode 100644 index 6540350ec653..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.CompositeFilter.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.StructuredQuery.CompositeFilter (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.StructuredQuery.CompositeFilter

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.EntityQueryBuilder.html b/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.EntityQueryBuilder.html deleted file mode 100644 index 147cd2c457cc..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.EntityQueryBuilder.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.StructuredQuery.EntityQueryBuilder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.StructuredQuery.EntityQueryBuilder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.Filter.html b/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.Filter.html deleted file mode 100644 index 889c864c91ef..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.Filter.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.StructuredQuery.Filter (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.StructuredQuery.Filter

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.KeyQueryBuilder.html b/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.KeyQueryBuilder.html deleted file mode 100644 index 09d54ad897c5..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.KeyQueryBuilder.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.StructuredQuery.KeyQueryBuilder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.StructuredQuery.KeyQueryBuilder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.OrderBy.Direction.html b/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.OrderBy.Direction.html deleted file mode 100644 index b9b24bcd6f84..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.OrderBy.Direction.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.StructuredQuery.OrderBy.Direction (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.StructuredQuery.OrderBy.Direction

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.OrderBy.html b/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.OrderBy.html deleted file mode 100644 index 6cc82566586b..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.OrderBy.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.StructuredQuery.OrderBy (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.StructuredQuery.OrderBy

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.Projection.Aggregate.html b/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.Projection.Aggregate.html deleted file mode 100644 index 11382677777f..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.Projection.Aggregate.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.StructuredQuery.Projection.Aggregate (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.StructuredQuery.Projection.Aggregate

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.Projection.html b/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.Projection.html deleted file mode 100644 index 30f28cdc4352..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.Projection.html +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.StructuredQuery.Projection (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.StructuredQuery.Projection

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.ProjectionEntityQueryBuilder.html b/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.ProjectionEntityQueryBuilder.html deleted file mode 100644 index fd3769422d8a..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.ProjectionEntityQueryBuilder.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.StructuredQuery.ProjectionEntityQueryBuilder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.StructuredQuery.ProjectionEntityQueryBuilder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.PropertyFilter.html b/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.PropertyFilter.html deleted file mode 100644 index b882d9fdcc51..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.PropertyFilter.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.StructuredQuery.PropertyFilter (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.StructuredQuery.PropertyFilter

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.html b/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.html deleted file mode 100644 index aa56ba210a9e..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/StructuredQuery.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.StructuredQuery (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.StructuredQuery

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/Transaction.Response.html b/apidocs/com/google/gcloud/datastore/class-use/Transaction.Response.html deleted file mode 100644 index 2c42fc457bd3..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/Transaction.Response.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.datastore.Transaction.Response (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.datastore.Transaction.Response

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/Transaction.html b/apidocs/com/google/gcloud/datastore/class-use/Transaction.html deleted file mode 100644 index 9de532ce6c91..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/Transaction.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.datastore.Transaction (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.datastore.Transaction

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/TransactionOption.ForceWrites.html b/apidocs/com/google/gcloud/datastore/class-use/TransactionOption.ForceWrites.html deleted file mode 100644 index cbc10e4ec4fa..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/TransactionOption.ForceWrites.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.TransactionOption.ForceWrites (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.TransactionOption.ForceWrites

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/TransactionOption.IsolationLevel.Level.html b/apidocs/com/google/gcloud/datastore/class-use/TransactionOption.IsolationLevel.Level.html deleted file mode 100644 index d2d44df7fe3c..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/TransactionOption.IsolationLevel.Level.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.TransactionOption.IsolationLevel.Level (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.TransactionOption.IsolationLevel.Level

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/TransactionOption.IsolationLevel.html b/apidocs/com/google/gcloud/datastore/class-use/TransactionOption.IsolationLevel.html deleted file mode 100644 index ad8fd9e1ab52..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/TransactionOption.IsolationLevel.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.TransactionOption.IsolationLevel (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.TransactionOption.IsolationLevel

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/TransactionOption.html b/apidocs/com/google/gcloud/datastore/class-use/TransactionOption.html deleted file mode 100644 index a63b92b7eb3c..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/TransactionOption.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.TransactionOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.TransactionOption

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/Value.html b/apidocs/com/google/gcloud/datastore/class-use/Value.html deleted file mode 100644 index 9bfa516e62b3..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/Value.html +++ /dev/null @@ -1,335 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.Value (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.Value

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/class-use/ValueType.html b/apidocs/com/google/gcloud/datastore/class-use/ValueType.html deleted file mode 100644 index fd4302c9c365..000000000000 --- a/apidocs/com/google/gcloud/datastore/class-use/ValueType.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.datastore.ValueType (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.datastore.ValueType

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/package-frame.html b/apidocs/com/google/gcloud/datastore/package-frame.html deleted file mode 100644 index 54e80f5fba66..000000000000 --- a/apidocs/com/google/gcloud/datastore/package-frame.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - -com.google.gcloud.datastore (GCloud Java 0.0.4 API) - - - - -

com.google.gcloud.datastore

-
-

Interfaces

- -

Classes

- -

Enums

- -

Exceptions

- -
- - diff --git a/apidocs/com/google/gcloud/datastore/package-summary.html b/apidocs/com/google/gcloud/datastore/package-summary.html deleted file mode 100644 index 49922313aa90..000000000000 --- a/apidocs/com/google/gcloud/datastore/package-summary.html +++ /dev/null @@ -1,564 +0,0 @@ - - - - - - -com.google.gcloud.datastore (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Package com.google.gcloud.datastore

-
-
A client to the Google Cloud Datastore.
-
-

See: Description

-
-
- - - - -

Package com.google.gcloud.datastore Description

-
A client to the Google Cloud Datastore. - -

A simple usage example: -

 DatastoreServiceOptions options =
-     DatastoreServiceOptions.builder().projectId(PROJECT_ID).build();
- DatastoreService datastore = DatastoreServiceFactory.instance().get(options);
- KeyFactory keyFactory = datastore.newKeyFactory().kind(kind);
- Key key = keyFactory.newKey(keyName);
- Entity entity = datastore.get(key);
- if (entity == null) {
-   entity = Entity.builder(key)
-       .set("name", "John Do")
-       .set("age", LongValue.builder(100).indexed(false).build())
-       .set("updated", false)
-       .build();
-   datastore.put(entity);
- } else {
-   boolean updated = entity.getBoolean("updated");
-   if (!updated) {
-     String[] name = entity.getString("name").split(" ");
-     entity = Entity.builder(entity)
-         .set("name", name[0])
-         .set("last_name", StringValue.builder(name[1]).indexed(false).build())
-         .set("updated", true)
-         .remove("old_property")
-         .set("new_property", 1.1)
-         .build();
-     datastore.update(entity);
-   }
- }
-  
-
See Also:
Google Cloud Datastore
-
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/package-tree.html b/apidocs/com/google/gcloud/datastore/package-tree.html deleted file mode 100644 index 2842082e42c0..000000000000 --- a/apidocs/com/google/gcloud/datastore/package-tree.html +++ /dev/null @@ -1,289 +0,0 @@ - - - - - - -com.google.gcloud.datastore Class Hierarchy (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Hierarchy For Package com.google.gcloud.datastore

-Package Hierarchies: - -
-
-

Class Hierarchy

- -

Interface Hierarchy

- -

Enum Hierarchy

- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/datastore/package-use.html b/apidocs/com/google/gcloud/datastore/package-use.html deleted file mode 100644 index a5c886d1a868..000000000000 --- a/apidocs/com/google/gcloud/datastore/package-use.html +++ /dev/null @@ -1,445 +0,0 @@ - - - - - - -Uses of Package com.google.gcloud.datastore (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Package
com.google.gcloud.datastore

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/examples/DatastoreExample.html b/apidocs/com/google/gcloud/examples/DatastoreExample.html deleted file mode 100644 index b6af11ed5561..000000000000 --- a/apidocs/com/google/gcloud/examples/DatastoreExample.html +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - -DatastoreExample (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.examples
-

Class DatastoreExample

-
-
- -
-
    -
  • -
    -
    -
    public class DatastoreExample
    -extends Object
    -
    An example of using the Google Cloud Datastore. -

    - This example adds, display or clear comments for a given user. -

    - Steps needed for running the example:

      -
    1. login using gcloud SDK - gcloud auth login.
    2. -
    3. compile using maven - mvn compile
    4. -
    5. run using maven - mvn exec:java - -Dexec.mainClass="com.google.gcloud.examples.DatastoreExample" - -Dexec.args="[projectId] [user] [delete|display|add comment]"
    6. -
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DatastoreExample

        -
        public DatastoreExample()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        main

        -
        public static void main(String... args)
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/examples/StorageExample.html b/apidocs/com/google/gcloud/examples/StorageExample.html deleted file mode 100644 index ab1065000d0e..000000000000 --- a/apidocs/com/google/gcloud/examples/StorageExample.html +++ /dev/null @@ -1,293 +0,0 @@ - - - - - - -StorageExample (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.examples
-

Class StorageExample

-
-
- -
-
    -
  • -
    -
    -
    public class StorageExample
    -extends Object
    -
    An example of using the Google Cloud Storage. -

    - This example demonstrates a simple/typical storage usage. -

    - Steps needed for running the example: -

      -
    1. login using gcloud SDK - gcloud auth login.
    2. -
    3. compile using maven - mvn compile
    4. -
    5. run using maven - - mvn exec:java -Dexec.mainClass="com.google.gcloud.examples.StorageExample" - -Dexec.args="[<project_id>] list [<bucket>]| info [<bucket> [<file>]]| - download <bucket> <path> [local_file]| upload <local_file> <bucket> [<path>]| - delete <bucket> <path>+| cp <from_bucket> <from_path> <to_bucket> <to_path>| - compose <bucket> <from_path>+ <to_path>| update_metadata <bucket> <file> [key=value]*" -
    6. -
    - - The first parameter is an optional project_id (logged-in project will be used if not supplied). - Second parameter is a Storage operation (list, delete, compose,...) to demonstrate the its - usage. Any other arguments are specific to the operation. - See each action's run method for the specific Storage interaction.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        StorageExample

        -
        public StorageExample()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        printUsage

        -
        public static void printUsage()
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/examples/class-use/DatastoreExample.html b/apidocs/com/google/gcloud/examples/class-use/DatastoreExample.html deleted file mode 100644 index 0310e6c52380..000000000000 --- a/apidocs/com/google/gcloud/examples/class-use/DatastoreExample.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.examples.DatastoreExample (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.examples.DatastoreExample

-
-
No usage of com.google.gcloud.examples.DatastoreExample
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/examples/class-use/StorageExample.html b/apidocs/com/google/gcloud/examples/class-use/StorageExample.html deleted file mode 100644 index dadc6ef969e9..000000000000 --- a/apidocs/com/google/gcloud/examples/class-use/StorageExample.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.examples.StorageExample (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.examples.StorageExample

-
-
No usage of com.google.gcloud.examples.StorageExample
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/examples/package-frame.html b/apidocs/com/google/gcloud/examples/package-frame.html deleted file mode 100644 index aa253d4f4535..000000000000 --- a/apidocs/com/google/gcloud/examples/package-frame.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - -com.google.gcloud.examples (GCloud Java 0.0.4 API) - - - - -

com.google.gcloud.examples

-
-

Classes

- -
- - diff --git a/apidocs/com/google/gcloud/examples/package-summary.html b/apidocs/com/google/gcloud/examples/package-summary.html deleted file mode 100644 index fe07129bc535..000000000000 --- a/apidocs/com/google/gcloud/examples/package-summary.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - -com.google.gcloud.examples (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Package com.google.gcloud.examples

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/examples/package-tree.html b/apidocs/com/google/gcloud/examples/package-tree.html deleted file mode 100644 index 5afae794c73f..000000000000 --- a/apidocs/com/google/gcloud/examples/package-tree.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - -com.google.gcloud.examples Class Hierarchy (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Hierarchy For Package com.google.gcloud.examples

-Package Hierarchies: - -
-
-

Class Hierarchy

- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/examples/package-use.html b/apidocs/com/google/gcloud/examples/package-use.html deleted file mode 100644 index 87bc5ce69fc6..000000000000 --- a/apidocs/com/google/gcloud/examples/package-use.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Package com.google.gcloud.examples (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Package
com.google.gcloud.examples

-
-
No usage of com.google.gcloud.examples
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/package-frame.html b/apidocs/com/google/gcloud/package-frame.html deleted file mode 100644 index 87ea6b25b83d..000000000000 --- a/apidocs/com/google/gcloud/package-frame.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - -com.google.gcloud (GCloud Java 0.0.4 API) - - - - -

com.google.gcloud

-
-

Interfaces

- -

Classes

- -

Enums

- -

Exceptions

- -
- - diff --git a/apidocs/com/google/gcloud/package-summary.html b/apidocs/com/google/gcloud/package-summary.html deleted file mode 100644 index b2710291476f..000000000000 --- a/apidocs/com/google/gcloud/package-summary.html +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - -com.google.gcloud (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Package com.google.gcloud

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/package-tree.html b/apidocs/com/google/gcloud/package-tree.html deleted file mode 100644 index 71e3b5af3327..000000000000 --- a/apidocs/com/google/gcloud/package-tree.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - -com.google.gcloud Class Hierarchy (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Hierarchy For Package com.google.gcloud

-Package Hierarchies: - -
-
-

Class Hierarchy

- -

Interface Hierarchy

- -

Enum Hierarchy

- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/package-use.html b/apidocs/com/google/gcloud/package-use.html deleted file mode 100644 index c5b478fe8937..000000000000 --- a/apidocs/com/google/gcloud/package-use.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - -Uses of Package com.google.gcloud (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Package
com.google.gcloud

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/DatastoreRpc.DatastoreRpcException.Reason.html b/apidocs/com/google/gcloud/spi/DatastoreRpc.DatastoreRpcException.Reason.html deleted file mode 100644 index 7d1f4808be92..000000000000 --- a/apidocs/com/google/gcloud/spi/DatastoreRpc.DatastoreRpcException.Reason.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - - - -DatastoreRpc.DatastoreRpcException.Reason (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.spi
-

Enum DatastoreRpc.DatastoreRpcException.Reason

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/DatastoreRpc.DatastoreRpcException.html b/apidocs/com/google/gcloud/spi/DatastoreRpc.DatastoreRpcException.html deleted file mode 100644 index 6f4e19242562..000000000000 --- a/apidocs/com/google/gcloud/spi/DatastoreRpc.DatastoreRpcException.html +++ /dev/null @@ -1,347 +0,0 @@ - - - - - - -DatastoreRpc.DatastoreRpcException (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.spi
-

Class DatastoreRpc.DatastoreRpcException

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - - - - - -
        -
      • -

        DatastoreRpc.DatastoreRpcException

        -
        public DatastoreRpc.DatastoreRpcException(String reason,
        -                                  int httpStatus,
        -                                  boolean retryable,
        -                                  String message)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        reason

        -
        public String reason()
        -
      • -
      - - - -
        -
      • -

        httpStatus

        -
        public int httpStatus()
        -
      • -
      - - - -
        -
      • -

        retryable

        -
        public boolean retryable()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/DatastoreRpc.html b/apidocs/com/google/gcloud/spi/DatastoreRpc.html deleted file mode 100644 index 53567cf4c1f7..000000000000 --- a/apidocs/com/google/gcloud/spi/DatastoreRpc.html +++ /dev/null @@ -1,309 +0,0 @@ - - - - - - -DatastoreRpc (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.spi
-

Interface DatastoreRpc

-
-
-
-
    -
  • -
    -
    -
    public interface DatastoreRpc
    -
    Provides access to the remote Datastore service.
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      com.google.api.services.datastore.DatastoreV1.AllocateIdsResponseallocateIds(com.google.api.services.datastore.DatastoreV1.AllocateIdsRequest request) 
      com.google.api.services.datastore.DatastoreV1.BeginTransactionResponsebeginTransaction(com.google.api.services.datastore.DatastoreV1.BeginTransactionRequest request) 
      com.google.api.services.datastore.DatastoreV1.CommitResponsecommit(com.google.api.services.datastore.DatastoreV1.CommitRequest request) 
      com.google.api.services.datastore.DatastoreV1.LookupResponselookup(com.google.api.services.datastore.DatastoreV1.LookupRequest request) 
      com.google.api.services.datastore.DatastoreV1.RollbackResponserollback(com.google.api.services.datastore.DatastoreV1.RollbackRequest request) 
      com.google.api.services.datastore.DatastoreV1.RunQueryResponserunQuery(com.google.api.services.datastore.DatastoreV1.RunQueryRequest request) 
      -
    • -
    -
  • -
-
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/DatastoreRpcFactory.html b/apidocs/com/google/gcloud/spi/DatastoreRpcFactory.html deleted file mode 100644 index eb35e1c1a6a0..000000000000 --- a/apidocs/com/google/gcloud/spi/DatastoreRpcFactory.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - -DatastoreRpcFactory (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.spi
-

Interface DatastoreRpcFactory

-
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/DefaultStorageRpc.html b/apidocs/com/google/gcloud/spi/DefaultStorageRpc.html deleted file mode 100644 index 7894866d46d1..000000000000 --- a/apidocs/com/google/gcloud/spi/DefaultStorageRpc.html +++ /dev/null @@ -1,659 +0,0 @@ - - - - - - -DefaultStorageRpc (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.spi
-

Class DefaultStorageRpc

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/ServiceRpcFactory.html b/apidocs/com/google/gcloud/spi/ServiceRpcFactory.html deleted file mode 100644 index 9fa3f15343c1..000000000000 --- a/apidocs/com/google/gcloud/spi/ServiceRpcFactory.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - -ServiceRpcFactory (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.spi
-

Interface ServiceRpcFactory<S,O extends ServiceOptions>

-
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      Screate(O options) 
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - - - -
        -
      • -

        create

        -
        S create(O options)
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/ServiceRpcProvider.html b/apidocs/com/google/gcloud/spi/ServiceRpcProvider.html deleted file mode 100644 index 91fe4e38a5c6..000000000000 --- a/apidocs/com/google/gcloud/spi/ServiceRpcProvider.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - -ServiceRpcProvider (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.spi
-

Class ServiceRpcProvider

-
-
- -
-
    -
  • -
    -
    -
    public class ServiceRpcProvider
    -extends Object
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/StorageRpc.BatchRequest.html b/apidocs/com/google/gcloud/spi/StorageRpc.BatchRequest.html deleted file mode 100644 index 4475037826c5..000000000000 --- a/apidocs/com/google/gcloud/spi/StorageRpc.BatchRequest.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - -StorageRpc.BatchRequest (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.spi
-

Class StorageRpc.BatchRequest

-
-
- -
-
    -
  • -
    -
    Enclosing interface:
    -
    StorageRpc
    -
    -
    -
    -
    public static class StorageRpc.BatchRequest
    -extends Object
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/StorageRpc.BatchResponse.html b/apidocs/com/google/gcloud/spi/StorageRpc.BatchResponse.html deleted file mode 100644 index b4df16769ea0..000000000000 --- a/apidocs/com/google/gcloud/spi/StorageRpc.BatchResponse.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - -StorageRpc.BatchResponse (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.spi
-

Class StorageRpc.BatchResponse

-
-
- -
-
    -
  • -
    -
    Enclosing interface:
    -
    StorageRpc
    -
    -
    -
    -
    public static class StorageRpc.BatchResponse
    -extends Object
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/StorageRpc.Option.html b/apidocs/com/google/gcloud/spi/StorageRpc.Option.html deleted file mode 100644 index e788e3b33f55..000000000000 --- a/apidocs/com/google/gcloud/spi/StorageRpc.Option.html +++ /dev/null @@ -1,492 +0,0 @@ - - - - - - -StorageRpc.Option (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.spi
-

Enum StorageRpc.Option

-
-
- -
- -
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static StorageRpc.Option[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (StorageRpc.Option c : StorageRpc.Option.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in the order they are declared
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static StorageRpc.Option valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
      • -
      - - - -
        -
      • -

        value

        -
        public String value()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/StorageRpc.Tuple.html b/apidocs/com/google/gcloud/spi/StorageRpc.Tuple.html deleted file mode 100644 index eb09158e3f7b..000000000000 --- a/apidocs/com/google/gcloud/spi/StorageRpc.Tuple.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - -StorageRpc.Tuple (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.spi
-

Class StorageRpc.Tuple<X,Y>

-
-
- -
-
    -
  • -
    -
    Enclosing interface:
    -
    StorageRpc
    -
    -
    -
    -
    public static class StorageRpc.Tuple<X,Y>
    -extends Object
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/StorageRpc.html b/apidocs/com/google/gcloud/spi/StorageRpc.html deleted file mode 100644 index 2f58667b426a..000000000000 --- a/apidocs/com/google/gcloud/spi/StorageRpc.html +++ /dev/null @@ -1,552 +0,0 @@ - - - - - - -StorageRpc (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.spi
-

Interface StorageRpc

-
-
-
-
    -
  • -
    -
    All Known Implementing Classes:
    -
    DefaultStorageRpc
    -
    -
    -
    -
    public interface StorageRpc
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/StorageRpcFactory.html b/apidocs/com/google/gcloud/spi/StorageRpcFactory.html deleted file mode 100644 index 2feb343bffc7..000000000000 --- a/apidocs/com/google/gcloud/spi/StorageRpcFactory.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - -StorageRpcFactory (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.spi
-

Interface StorageRpcFactory

-
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/class-use/DatastoreRpc.DatastoreRpcException.Reason.html b/apidocs/com/google/gcloud/spi/class-use/DatastoreRpc.DatastoreRpcException.Reason.html deleted file mode 100644 index 77629b9c4571..000000000000 --- a/apidocs/com/google/gcloud/spi/class-use/DatastoreRpc.DatastoreRpcException.Reason.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException.Reason (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException.Reason

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/class-use/DatastoreRpc.DatastoreRpcException.html b/apidocs/com/google/gcloud/spi/class-use/DatastoreRpc.DatastoreRpcException.html deleted file mode 100644 index a141da9d807c..000000000000 --- a/apidocs/com/google/gcloud/spi/class-use/DatastoreRpc.DatastoreRpcException.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/class-use/DatastoreRpc.html b/apidocs/com/google/gcloud/spi/class-use/DatastoreRpc.html deleted file mode 100644 index 6d0f20dba757..000000000000 --- a/apidocs/com/google/gcloud/spi/class-use/DatastoreRpc.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.spi.DatastoreRpc (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.spi.DatastoreRpc

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/class-use/DatastoreRpcFactory.html b/apidocs/com/google/gcloud/spi/class-use/DatastoreRpcFactory.html deleted file mode 100644 index c379d5fa4d14..000000000000 --- a/apidocs/com/google/gcloud/spi/class-use/DatastoreRpcFactory.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.spi.DatastoreRpcFactory (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.spi.DatastoreRpcFactory

-
-
No usage of com.google.gcloud.spi.DatastoreRpcFactory
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/class-use/DefaultStorageRpc.html b/apidocs/com/google/gcloud/spi/class-use/DefaultStorageRpc.html deleted file mode 100644 index 9fa6d73d098d..000000000000 --- a/apidocs/com/google/gcloud/spi/class-use/DefaultStorageRpc.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.spi.DefaultStorageRpc (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.spi.DefaultStorageRpc

-
-
No usage of com.google.gcloud.spi.DefaultStorageRpc
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/class-use/ServiceRpcFactory.html b/apidocs/com/google/gcloud/spi/class-use/ServiceRpcFactory.html deleted file mode 100644 index 22533bef9a56..000000000000 --- a/apidocs/com/google/gcloud/spi/class-use/ServiceRpcFactory.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.spi.ServiceRpcFactory (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.spi.ServiceRpcFactory

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/class-use/ServiceRpcProvider.html b/apidocs/com/google/gcloud/spi/class-use/ServiceRpcProvider.html deleted file mode 100644 index 19f3f1dafcb0..000000000000 --- a/apidocs/com/google/gcloud/spi/class-use/ServiceRpcProvider.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.spi.ServiceRpcProvider (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.spi.ServiceRpcProvider

-
-
No usage of com.google.gcloud.spi.ServiceRpcProvider
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/class-use/StorageRpc.BatchRequest.html b/apidocs/com/google/gcloud/spi/class-use/StorageRpc.BatchRequest.html deleted file mode 100644 index 4851a322119e..000000000000 --- a/apidocs/com/google/gcloud/spi/class-use/StorageRpc.BatchRequest.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.spi.StorageRpc.BatchRequest (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.spi.StorageRpc.BatchRequest

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/class-use/StorageRpc.BatchResponse.html b/apidocs/com/google/gcloud/spi/class-use/StorageRpc.BatchResponse.html deleted file mode 100644 index 54dca67369a8..000000000000 --- a/apidocs/com/google/gcloud/spi/class-use/StorageRpc.BatchResponse.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.spi.StorageRpc.BatchResponse (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.spi.StorageRpc.BatchResponse

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/class-use/StorageRpc.Option.html b/apidocs/com/google/gcloud/spi/class-use/StorageRpc.Option.html deleted file mode 100644 index f2219c6cc98e..000000000000 --- a/apidocs/com/google/gcloud/spi/class-use/StorageRpc.Option.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.spi.StorageRpc.Option (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.spi.StorageRpc.Option

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/class-use/StorageRpc.Tuple.html b/apidocs/com/google/gcloud/spi/class-use/StorageRpc.Tuple.html deleted file mode 100644 index fbc7b60b28db..000000000000 --- a/apidocs/com/google/gcloud/spi/class-use/StorageRpc.Tuple.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.spi.StorageRpc.Tuple (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.spi.StorageRpc.Tuple

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/class-use/StorageRpc.html b/apidocs/com/google/gcloud/spi/class-use/StorageRpc.html deleted file mode 100644 index cc5c77efdddc..000000000000 --- a/apidocs/com/google/gcloud/spi/class-use/StorageRpc.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.spi.StorageRpc (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.spi.StorageRpc

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/class-use/StorageRpcFactory.html b/apidocs/com/google/gcloud/spi/class-use/StorageRpcFactory.html deleted file mode 100644 index b6c9805e69e5..000000000000 --- a/apidocs/com/google/gcloud/spi/class-use/StorageRpcFactory.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.spi.StorageRpcFactory (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.spi.StorageRpcFactory

-
-
No usage of com.google.gcloud.spi.StorageRpcFactory
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/package-frame.html b/apidocs/com/google/gcloud/spi/package-frame.html deleted file mode 100644 index 49c6b80b02c6..000000000000 --- a/apidocs/com/google/gcloud/spi/package-frame.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - -com.google.gcloud.spi (GCloud Java 0.0.4 API) - - - - -

com.google.gcloud.spi

-
-

Interfaces

- -

Classes

- -

Enums

- -

Exceptions

- -
- - diff --git a/apidocs/com/google/gcloud/spi/package-summary.html b/apidocs/com/google/gcloud/spi/package-summary.html deleted file mode 100644 index f99cd9de2fae..000000000000 --- a/apidocs/com/google/gcloud/spi/package-summary.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - -com.google.gcloud.spi (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Package com.google.gcloud.spi

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/package-tree.html b/apidocs/com/google/gcloud/spi/package-tree.html deleted file mode 100644 index 7fb790b02de7..000000000000 --- a/apidocs/com/google/gcloud/spi/package-tree.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - -com.google.gcloud.spi Class Hierarchy (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Hierarchy For Package com.google.gcloud.spi

-Package Hierarchies: - -
-
-

Class Hierarchy

- -

Interface Hierarchy

- -

Enum Hierarchy

- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/spi/package-use.html b/apidocs/com/google/gcloud/spi/package-use.html deleted file mode 100644 index 34a816d579cc..000000000000 --- a/apidocs/com/google/gcloud/spi/package-use.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - -Uses of Package com.google.gcloud.spi (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Package
com.google.gcloud.spi

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Acl.Domain.html b/apidocs/com/google/gcloud/storage/Acl.Domain.html deleted file mode 100644 index 36869523b08d..000000000000 --- a/apidocs/com/google/gcloud/storage/Acl.Domain.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - -Acl.Domain (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Acl.Domain

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Acl.Domain

        -
        public Acl.Domain(String domain)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        domain

        -
        public String domain()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Acl.Entity.Type.html b/apidocs/com/google/gcloud/storage/Acl.Entity.Type.html deleted file mode 100644 index 788020ecfa44..000000000000 --- a/apidocs/com/google/gcloud/storage/Acl.Entity.Type.html +++ /dev/null @@ -1,359 +0,0 @@ - - - - - - -Acl.Entity.Type (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Enum Acl.Entity.Type

-
-
- -
- -
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static Acl.Entity.Type[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (Acl.Entity.Type c : Acl.Entity.Type.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in the order they are declared
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static Acl.Entity.Type valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Acl.Entity.html b/apidocs/com/google/gcloud/storage/Acl.Entity.html deleted file mode 100644 index f68251703971..000000000000 --- a/apidocs/com/google/gcloud/storage/Acl.Entity.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - -Acl.Entity (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Acl.Entity

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Acl.Group.html b/apidocs/com/google/gcloud/storage/Acl.Group.html deleted file mode 100644 index 0576ebd1a24c..000000000000 --- a/apidocs/com/google/gcloud/storage/Acl.Group.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - -Acl.Group (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Acl.Group

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Acl.Group

        -
        public Acl.Group(String email)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        email

        -
        public String email()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Acl.Project.html b/apidocs/com/google/gcloud/storage/Acl.Project.html deleted file mode 100644 index 83ee93210437..000000000000 --- a/apidocs/com/google/gcloud/storage/Acl.Project.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - -Acl.Project (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Acl.Project

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Acl.Project

        -
        public Acl.Project(com.google.gcloud.storage.Acl.Project.ProjectRole pRole,
        -           String projectId)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        projectRole

        -
        public com.google.gcloud.storage.Acl.Project.ProjectRole projectRole()
        -
      • -
      - - - -
        -
      • -

        projectId

        -
        public String projectId()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Acl.RawEntity.html b/apidocs/com/google/gcloud/storage/Acl.RawEntity.html deleted file mode 100644 index 5aa21003dc32..000000000000 --- a/apidocs/com/google/gcloud/storage/Acl.RawEntity.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - -Acl.RawEntity (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Acl.RawEntity

-
-
- -
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Acl.Role.html b/apidocs/com/google/gcloud/storage/Acl.Role.html deleted file mode 100644 index 0304e5dbb13e..000000000000 --- a/apidocs/com/google/gcloud/storage/Acl.Role.html +++ /dev/null @@ -1,335 +0,0 @@ - - - - - - -Acl.Role (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Enum Acl.Role

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        OWNER

        -
        public static final Acl.Role OWNER
        -
      • -
      - - - -
        -
      • -

        READER

        -
        public static final Acl.Role READER
        -
      • -
      - - - -
        -
      • -

        WRITER

        -
        public static final Acl.Role WRITER
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static Acl.Role[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (Acl.Role c : Acl.Role.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in the order they are declared
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static Acl.Role valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Acl.User.html b/apidocs/com/google/gcloud/storage/Acl.User.html deleted file mode 100644 index fc614957e638..000000000000 --- a/apidocs/com/google/gcloud/storage/Acl.User.html +++ /dev/null @@ -1,318 +0,0 @@ - - - - - - -Acl.User (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Acl.User

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Acl.User

        -
        public Acl.User(String email)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        email

        -
        public String email()
        -
      • -
      - - - -
        -
      • -

        ofAllUsers

        -
        public static Acl.User ofAllUsers()
        -
      • -
      - - - -
        -
      • -

        ofAllAuthenticatedUsers

        -
        public static Acl.User ofAllAuthenticatedUsers()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Acl.html b/apidocs/com/google/gcloud/storage/Acl.html deleted file mode 100644 index f8bc722424ca..000000000000 --- a/apidocs/com/google/gcloud/storage/Acl.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - -Acl (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Acl

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/BatchRequest.Builder.html b/apidocs/com/google/gcloud/storage/BatchRequest.Builder.html deleted file mode 100644 index 925d3235e6cf..000000000000 --- a/apidocs/com/google/gcloud/storage/BatchRequest.Builder.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - -BatchRequest.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class BatchRequest.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    BatchRequest
    -
    -
    -
    -
    public static class BatchRequest.Builder
    -extends Object
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/BatchRequest.html b/apidocs/com/google/gcloud/storage/BatchRequest.html deleted file mode 100644 index e5dd26254bdf..000000000000 --- a/apidocs/com/google/gcloud/storage/BatchRequest.html +++ /dev/null @@ -1,321 +0,0 @@ - - - - - - -BatchRequest (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class BatchRequest

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/BatchResponse.Result.html b/apidocs/com/google/gcloud/storage/BatchResponse.Result.html deleted file mode 100644 index 09ea402cf961..000000000000 --- a/apidocs/com/google/gcloud/storage/BatchResponse.Result.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - - - -BatchResponse.Result (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class BatchResponse.Result<T extends Serializable>

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/BatchResponse.html b/apidocs/com/google/gcloud/storage/BatchResponse.html deleted file mode 100644 index daa1265abe75..000000000000 --- a/apidocs/com/google/gcloud/storage/BatchResponse.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - -BatchResponse (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class BatchResponse

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Blob.Builder.html b/apidocs/com/google/gcloud/storage/Blob.Builder.html deleted file mode 100644 index e27543c55e83..000000000000 --- a/apidocs/com/google/gcloud/storage/Blob.Builder.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - - - -Blob.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Blob.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Blob
    -
    -
    -
    -
    public static final class Blob.Builder
    -extends Object
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Blob.html b/apidocs/com/google/gcloud/storage/Blob.html deleted file mode 100644 index 5b1626c57d62..000000000000 --- a/apidocs/com/google/gcloud/storage/Blob.html +++ /dev/null @@ -1,631 +0,0 @@ - - - - - - -Blob (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Blob

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/BlobReadChannel.html b/apidocs/com/google/gcloud/storage/BlobReadChannel.html deleted file mode 100644 index 564cf21dd6d2..000000000000 --- a/apidocs/com/google/gcloud/storage/BlobReadChannel.html +++ /dev/null @@ -1,257 +0,0 @@ - - - - - - -BlobReadChannel (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Interface BlobReadChannel

-
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      Methods 
      Modifier and TypeMethod and Description
      voidclose() -
      Overridden to remove IOException.
      -
      voidseek(int position) 
      - - -
    • -
    -
  • -
-
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/BlobWriteChannel.html b/apidocs/com/google/gcloud/storage/BlobWriteChannel.html deleted file mode 100644 index 39b43825721d..000000000000 --- a/apidocs/com/google/gcloud/storage/BlobWriteChannel.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - -BlobWriteChannel (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Interface BlobWriteChannel

-
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Bucket.AgeDeleteRule.html b/apidocs/com/google/gcloud/storage/Bucket.AgeDeleteRule.html deleted file mode 100644 index 8ae95a02a6d7..000000000000 --- a/apidocs/com/google/gcloud/storage/Bucket.AgeDeleteRule.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - -Bucket.AgeDeleteRule (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Bucket.AgeDeleteRule

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Bucket.AgeDeleteRule

        -
        public Bucket.AgeDeleteRule(int daysToLive)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        daysToLive

        -
        public int daysToLive()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Bucket.Builder.html b/apidocs/com/google/gcloud/storage/Bucket.Builder.html deleted file mode 100644 index a7ea5fd54a35..000000000000 --- a/apidocs/com/google/gcloud/storage/Bucket.Builder.html +++ /dev/null @@ -1,356 +0,0 @@ - - - - - - -Bucket.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Bucket.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Bucket
    -
    -
    -
    -
    public static final class Bucket.Builder
    -extends Object
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Bucket.CreatedBeforeDeleteRule.html b/apidocs/com/google/gcloud/storage/Bucket.CreatedBeforeDeleteRule.html deleted file mode 100644 index f64b67ca18fb..000000000000 --- a/apidocs/com/google/gcloud/storage/Bucket.CreatedBeforeDeleteRule.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - -Bucket.CreatedBeforeDeleteRule (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Bucket.CreatedBeforeDeleteRule

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Bucket.CreatedBeforeDeleteRule

        -
        public Bucket.CreatedBeforeDeleteRule(long timeMillis)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        timeMillis

        -
        public long timeMillis()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Bucket.DeleteRule.Type.html b/apidocs/com/google/gcloud/storage/Bucket.DeleteRule.Type.html deleted file mode 100644 index c2430e664a99..000000000000 --- a/apidocs/com/google/gcloud/storage/Bucket.DeleteRule.Type.html +++ /dev/null @@ -1,359 +0,0 @@ - - - - - - -Bucket.DeleteRule.Type (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Enum Bucket.DeleteRule.Type

-
-
- -
- -
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static Bucket.DeleteRule.Type[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (Bucket.DeleteRule.Type c : Bucket.DeleteRule.Type.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in the order they are declared
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static Bucket.DeleteRule.Type valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Bucket.DeleteRule.html b/apidocs/com/google/gcloud/storage/Bucket.DeleteRule.html deleted file mode 100644 index 9191df5648b1..000000000000 --- a/apidocs/com/google/gcloud/storage/Bucket.DeleteRule.html +++ /dev/null @@ -1,289 +0,0 @@ - - - - - - -Bucket.DeleteRule (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Bucket.DeleteRule

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Bucket.IsLiveDeleteRule.html b/apidocs/com/google/gcloud/storage/Bucket.IsLiveDeleteRule.html deleted file mode 100644 index b51f3cb69f29..000000000000 --- a/apidocs/com/google/gcloud/storage/Bucket.IsLiveDeleteRule.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - -Bucket.IsLiveDeleteRule (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Bucket.IsLiveDeleteRule

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Bucket.IsLiveDeleteRule

        -
        public Bucket.IsLiveDeleteRule(boolean isLive)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        isLive

        -
        public boolean isLive()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Bucket.Location.Option.html b/apidocs/com/google/gcloud/storage/Bucket.Location.Option.html deleted file mode 100644 index 28f23b5c18bb..000000000000 --- a/apidocs/com/google/gcloud/storage/Bucket.Location.Option.html +++ /dev/null @@ -1,335 +0,0 @@ - - - - - - -Bucket.Location.Option (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Enum Bucket.Location.Option

-
-
- -
- -
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static Bucket.Location.Option[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (Bucket.Location.Option c : Bucket.Location.Option.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in the order they are declared
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static Bucket.Location.Option valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Bucket.Location.html b/apidocs/com/google/gcloud/storage/Bucket.Location.html deleted file mode 100644 index d0f67f2c4f19..000000000000 --- a/apidocs/com/google/gcloud/storage/Bucket.Location.html +++ /dev/null @@ -1,354 +0,0 @@ - - - - - - -Bucket.Location (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Bucket.Location

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Bucket.NumNewerVersionsDeleteRule.html b/apidocs/com/google/gcloud/storage/Bucket.NumNewerVersionsDeleteRule.html deleted file mode 100644 index c1a1e9b27a39..000000000000 --- a/apidocs/com/google/gcloud/storage/Bucket.NumNewerVersionsDeleteRule.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - -Bucket.NumNewerVersionsDeleteRule (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Bucket.NumNewerVersionsDeleteRule

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Bucket.NumNewerVersionsDeleteRule

        -
        public Bucket.NumNewerVersionsDeleteRule(int numNewerVersions)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        numNewerVersions

        -
        public int numNewerVersions()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Bucket.StorageClass.Option.html b/apidocs/com/google/gcloud/storage/Bucket.StorageClass.Option.html deleted file mode 100644 index 331d0de101de..000000000000 --- a/apidocs/com/google/gcloud/storage/Bucket.StorageClass.Option.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - -Bucket.StorageClass.Option (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Enum Bucket.StorageClass.Option

-
-
- -
- -
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static Bucket.StorageClass.Option[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (Bucket.StorageClass.Option c : Bucket.StorageClass.Option.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in the order they are declared
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static Bucket.StorageClass.Option valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Bucket.StorageClass.html b/apidocs/com/google/gcloud/storage/Bucket.StorageClass.html deleted file mode 100644 index 910bec87d790..000000000000 --- a/apidocs/com/google/gcloud/storage/Bucket.StorageClass.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - -Bucket.StorageClass (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Bucket.StorageClass

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Bucket.html b/apidocs/com/google/gcloud/storage/Bucket.html deleted file mode 100644 index 080e18405e5a..000000000000 --- a/apidocs/com/google/gcloud/storage/Bucket.html +++ /dev/null @@ -1,562 +0,0 @@ - - - - - - -Bucket (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Bucket

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Cors.Builder.html b/apidocs/com/google/gcloud/storage/Cors.Builder.html deleted file mode 100644 index 1c0a5669b3fc..000000000000 --- a/apidocs/com/google/gcloud/storage/Cors.Builder.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - - - -Cors.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Cors.Builder

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Cors
    -
    -
    -
    -
    public static final class Cors.Builder
    -extends Object
    -
  • -
-
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Cors.Method.html b/apidocs/com/google/gcloud/storage/Cors.Method.html deleted file mode 100644 index 9fbe0206cfec..000000000000 --- a/apidocs/com/google/gcloud/storage/Cors.Method.html +++ /dev/null @@ -1,371 +0,0 @@ - - - - - - -Cors.Method (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Enum Cors.Method

-
-
- -
- -
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static Cors.Method[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (Cors.Method c : Cors.Method.values())
        -    System.out.println(c);
        -
        -
        Returns:
        an array containing the constants of this enum type, in the order they are declared
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static Cors.Method valueOf(String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        Parameters:
        name - the name of the enum constant to be returned.
        -
        Returns:
        the enum constant with the specified name
        -
        Throws:
        -
        IllegalArgumentException - if this enum type has no constant with the specified name
        -
        NullPointerException - if the argument is null
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Cors.Origin.html b/apidocs/com/google/gcloud/storage/Cors.Origin.html deleted file mode 100644 index 90074eac2a93..000000000000 --- a/apidocs/com/google/gcloud/storage/Cors.Origin.html +++ /dev/null @@ -1,326 +0,0 @@ - - - - - - -Cors.Origin (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Cors.Origin

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/Cors.html b/apidocs/com/google/gcloud/storage/Cors.html deleted file mode 100644 index 697ebfae4cb5..000000000000 --- a/apidocs/com/google/gcloud/storage/Cors.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - -Cors (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class Cors

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/ListResult.html b/apidocs/com/google/gcloud/storage/ListResult.html deleted file mode 100644 index a5260939880e..000000000000 --- a/apidocs/com/google/gcloud/storage/ListResult.html +++ /dev/null @@ -1,337 +0,0 @@ - - - - - - -ListResult (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class ListResult<T extends Serializable>

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ListResult

        -
        public ListResult(com.google.gcloud.storage.ListResult.NextPageFetcher<T> pageFetcher,
        -          String cursor,
        -          Iterable<T> results)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        nextPageCursor

        -
        public String nextPageCursor()
        -
        Returns the cursor for the nextPage or null if no more results.
        -
      • -
      - - - -
        -
      • -

        nextPage

        -
        public ListResult<T> nextPage()
        -
        Returns the results of the nextPage or null if no more result.
        -
      • -
      - - - - - - - -
        -
      • -

        hashCode

        -
        public int hashCode()
        -
        -
        Overrides:
        -
        hashCode in class Object
        -
        -
      • -
      - - - -
        -
      • -

        equals

        -
        public boolean equals(Object obj)
        -
        -
        Overrides:
        -
        equals in class Object
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageService.BlobListOption.html b/apidocs/com/google/gcloud/storage/StorageService.BlobListOption.html deleted file mode 100644 index 9db04ef68129..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageService.BlobListOption.html +++ /dev/null @@ -1,321 +0,0 @@ - - - - - - -StorageService.BlobListOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class StorageService.BlobListOption

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageService.BlobSourceOption.html b/apidocs/com/google/gcloud/storage/StorageService.BlobSourceOption.html deleted file mode 100644 index a83afeac46d1..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageService.BlobSourceOption.html +++ /dev/null @@ -1,321 +0,0 @@ - - - - - - -StorageService.BlobSourceOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class StorageService.BlobSourceOption

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageService.BlobTargetOption.html b/apidocs/com/google/gcloud/storage/StorageService.BlobTargetOption.html deleted file mode 100644 index d093a9cee07f..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageService.BlobTargetOption.html +++ /dev/null @@ -1,347 +0,0 @@ - - - - - - -StorageService.BlobTargetOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class StorageService.BlobTargetOption

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageService.BucketListOption.html b/apidocs/com/google/gcloud/storage/StorageService.BucketListOption.html deleted file mode 100644 index 7217c086c498..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageService.BucketListOption.html +++ /dev/null @@ -1,308 +0,0 @@ - - - - - - -StorageService.BucketListOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class StorageService.BucketListOption

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageService.BucketSourceOption.html b/apidocs/com/google/gcloud/storage/StorageService.BucketSourceOption.html deleted file mode 100644 index 8cf7b323dc3b..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageService.BucketSourceOption.html +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - -StorageService.BucketSourceOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class StorageService.BucketSourceOption

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageService.BucketTargetOption.html b/apidocs/com/google/gcloud/storage/StorageService.BucketTargetOption.html deleted file mode 100644 index 58cb9fa5fb8a..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageService.BucketTargetOption.html +++ /dev/null @@ -1,321 +0,0 @@ - - - - - - -StorageService.BucketTargetOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class StorageService.BucketTargetOption

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageService.ComposeRequest.Builder.html b/apidocs/com/google/gcloud/storage/StorageService.ComposeRequest.Builder.html deleted file mode 100644 index b7b473cfe4a0..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageService.ComposeRequest.Builder.html +++ /dev/null @@ -1,330 +0,0 @@ - - - - - - -StorageService.ComposeRequest.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class StorageService.ComposeRequest.Builder

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageService.ComposeRequest.SourceBlob.html b/apidocs/com/google/gcloud/storage/StorageService.ComposeRequest.SourceBlob.html deleted file mode 100644 index aa3c2119ad4c..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageService.ComposeRequest.SourceBlob.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - -StorageService.ComposeRequest.SourceBlob (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class StorageService.ComposeRequest.SourceBlob

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        name

        -
        public String name()
        -
      • -
      - - - -
        -
      • -

        generation

        -
        public Long generation()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageService.ComposeRequest.html b/apidocs/com/google/gcloud/storage/StorageService.ComposeRequest.html deleted file mode 100644 index d13252ab9d26..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageService.ComposeRequest.html +++ /dev/null @@ -1,326 +0,0 @@ - - - - - - -StorageService.ComposeRequest (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class StorageService.ComposeRequest

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageService.CopyRequest.Builder.html b/apidocs/com/google/gcloud/storage/StorageService.CopyRequest.Builder.html deleted file mode 100644 index 0eee90d23b85..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageService.CopyRequest.Builder.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - -StorageService.CopyRequest.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class StorageService.CopyRequest.Builder

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageService.CopyRequest.html b/apidocs/com/google/gcloud/storage/StorageService.CopyRequest.html deleted file mode 100644 index 27fb23c1d1af..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageService.CopyRequest.html +++ /dev/null @@ -1,350 +0,0 @@ - - - - - - -StorageService.CopyRequest (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class StorageService.CopyRequest

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageService.PredefinedAcl.html b/apidocs/com/google/gcloud/storage/StorageService.PredefinedAcl.html deleted file mode 100644 index c772de2c1184..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageService.PredefinedAcl.html +++ /dev/null @@ -1,395 +0,0 @@ - - - - - - -StorageService.PredefinedAcl (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Enum StorageService.PredefinedAcl

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageService.html b/apidocs/com/google/gcloud/storage/StorageService.html deleted file mode 100644 index a2b2dc6b248c..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageService.html +++ /dev/null @@ -1,590 +0,0 @@ - - - - - - -StorageService (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Interface StorageService

-
-
-
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageServiceException.html b/apidocs/com/google/gcloud/storage/StorageServiceException.html deleted file mode 100644 index 7b5046241528..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageServiceException.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - -StorageServiceException (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class StorageServiceException

-
-
- -
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        StorageServiceException

        -
        public StorageServiceException(int code,
        -                       String message,
        -                       boolean retryable)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        code

        -
        public int code()
        -
        Returns the code associated with this exception.
        -
      • -
      - - - -
        -
      • -

        retryable

        -
        public boolean retryable()
        -
      • -
      -
    • -
    -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageServiceFactory.html b/apidocs/com/google/gcloud/storage/StorageServiceFactory.html deleted file mode 100644 index 7f27c55dd0b0..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageServiceFactory.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - -StorageServiceFactory (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class StorageServiceFactory

-
-
- -
-
    -
  • -
    -
    -
    public abstract class StorageServiceFactory
    -extends Object
    -
    A base class for StorageService factories.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        StorageServiceFactory

        -
        public StorageServiceFactory()
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageServiceOptions.Builder.html b/apidocs/com/google/gcloud/storage/StorageServiceOptions.Builder.html deleted file mode 100644 index ccc000817887..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageServiceOptions.Builder.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - -StorageServiceOptions.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class StorageServiceOptions.Builder

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/StorageServiceOptions.html b/apidocs/com/google/gcloud/storage/StorageServiceOptions.html deleted file mode 100644 index d323c67fae23..000000000000 --- a/apidocs/com/google/gcloud/storage/StorageServiceOptions.html +++ /dev/null @@ -1,359 +0,0 @@ - - - - - - -StorageServiceOptions (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - - -
-
com.google.gcloud.storage
-

Class StorageServiceOptions

-
-
- -
- -
-
- -
-
- -
-
- - -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Acl.Domain.html b/apidocs/com/google/gcloud/storage/class-use/Acl.Domain.html deleted file mode 100644 index b3dae12f38c6..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Acl.Domain.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Acl.Domain (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Acl.Domain

-
-
No usage of com.google.gcloud.storage.Acl.Domain
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Acl.Entity.Type.html b/apidocs/com/google/gcloud/storage/class-use/Acl.Entity.Type.html deleted file mode 100644 index ebc9e7f29b8f..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Acl.Entity.Type.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Acl.Entity.Type (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Acl.Entity.Type

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Acl.Entity.html b/apidocs/com/google/gcloud/storage/class-use/Acl.Entity.html deleted file mode 100644 index a8dce20d0bf4..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Acl.Entity.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Acl.Entity (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Acl.Entity

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Acl.Group.html b/apidocs/com/google/gcloud/storage/class-use/Acl.Group.html deleted file mode 100644 index 1f3ee6382d7f..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Acl.Group.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Acl.Group (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Acl.Group

-
-
No usage of com.google.gcloud.storage.Acl.Group
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Acl.Project.html b/apidocs/com/google/gcloud/storage/class-use/Acl.Project.html deleted file mode 100644 index 55a89784c8a4..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Acl.Project.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Acl.Project (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Acl.Project

-
-
No usage of com.google.gcloud.storage.Acl.Project
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Acl.RawEntity.html b/apidocs/com/google/gcloud/storage/class-use/Acl.RawEntity.html deleted file mode 100644 index 4b515dceb60c..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Acl.RawEntity.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Acl.RawEntity (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Acl.RawEntity

-
-
No usage of com.google.gcloud.storage.Acl.RawEntity
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Acl.Role.html b/apidocs/com/google/gcloud/storage/class-use/Acl.Role.html deleted file mode 100644 index ab9fd758d7cb..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Acl.Role.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Acl.Role (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Acl.Role

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Acl.User.html b/apidocs/com/google/gcloud/storage/class-use/Acl.User.html deleted file mode 100644 index 75118982a385..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Acl.User.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Acl.User (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Acl.User

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Acl.html b/apidocs/com/google/gcloud/storage/class-use/Acl.html deleted file mode 100644 index ee1c6bca5df8..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Acl.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Acl (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Acl

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/BatchRequest.Builder.html b/apidocs/com/google/gcloud/storage/class-use/BatchRequest.Builder.html deleted file mode 100644 index 9f87ed6dadac..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/BatchRequest.Builder.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.BatchRequest.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.BatchRequest.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/BatchRequest.html b/apidocs/com/google/gcloud/storage/class-use/BatchRequest.html deleted file mode 100644 index 7b043b4e5030..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/BatchRequest.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.BatchRequest (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.BatchRequest

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/BatchResponse.Result.html b/apidocs/com/google/gcloud/storage/class-use/BatchResponse.Result.html deleted file mode 100644 index 2316e1038970..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/BatchResponse.Result.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.BatchResponse.Result (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.BatchResponse.Result

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/BatchResponse.html b/apidocs/com/google/gcloud/storage/class-use/BatchResponse.html deleted file mode 100644 index 57c270bea6f6..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/BatchResponse.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.BatchResponse (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.BatchResponse

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Blob.Builder.html b/apidocs/com/google/gcloud/storage/class-use/Blob.Builder.html deleted file mode 100644 index dc2e6a582754..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Blob.Builder.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Blob.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Blob.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Blob.html b/apidocs/com/google/gcloud/storage/class-use/Blob.html deleted file mode 100644 index 205457488d3b..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Blob.html +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Blob (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Blob

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/BlobReadChannel.html b/apidocs/com/google/gcloud/storage/class-use/BlobReadChannel.html deleted file mode 100644 index 5ebeb6ebbe2e..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/BlobReadChannel.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.storage.BlobReadChannel (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.storage.BlobReadChannel

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/BlobWriteChannel.html b/apidocs/com/google/gcloud/storage/class-use/BlobWriteChannel.html deleted file mode 100644 index 221ce4a6da2f..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/BlobWriteChannel.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.storage.BlobWriteChannel (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.storage.BlobWriteChannel

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Bucket.AgeDeleteRule.html b/apidocs/com/google/gcloud/storage/class-use/Bucket.AgeDeleteRule.html deleted file mode 100644 index 43c9b713a989..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Bucket.AgeDeleteRule.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Bucket.AgeDeleteRule (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Bucket.AgeDeleteRule

-
-
No usage of com.google.gcloud.storage.Bucket.AgeDeleteRule
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Bucket.Builder.html b/apidocs/com/google/gcloud/storage/class-use/Bucket.Builder.html deleted file mode 100644 index 7fb1aa927f52..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Bucket.Builder.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Bucket.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Bucket.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Bucket.CreatedBeforeDeleteRule.html b/apidocs/com/google/gcloud/storage/class-use/Bucket.CreatedBeforeDeleteRule.html deleted file mode 100644 index b341019ea344..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Bucket.CreatedBeforeDeleteRule.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Bucket.CreatedBeforeDeleteRule (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Bucket.CreatedBeforeDeleteRule

-
-
No usage of com.google.gcloud.storage.Bucket.CreatedBeforeDeleteRule
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Bucket.DeleteRule.Type.html b/apidocs/com/google/gcloud/storage/class-use/Bucket.DeleteRule.Type.html deleted file mode 100644 index b2f3b05ad35f..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Bucket.DeleteRule.Type.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Bucket.DeleteRule.Type (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Bucket.DeleteRule.Type

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Bucket.DeleteRule.html b/apidocs/com/google/gcloud/storage/class-use/Bucket.DeleteRule.html deleted file mode 100644 index d016c74d27fa..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Bucket.DeleteRule.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Bucket.DeleteRule (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Bucket.DeleteRule

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Bucket.IsLiveDeleteRule.html b/apidocs/com/google/gcloud/storage/class-use/Bucket.IsLiveDeleteRule.html deleted file mode 100644 index 7d05b4a2b1a2..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Bucket.IsLiveDeleteRule.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Bucket.IsLiveDeleteRule (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Bucket.IsLiveDeleteRule

-
-
No usage of com.google.gcloud.storage.Bucket.IsLiveDeleteRule
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Bucket.Location.Option.html b/apidocs/com/google/gcloud/storage/class-use/Bucket.Location.Option.html deleted file mode 100644 index f072ce81cce2..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Bucket.Location.Option.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Bucket.Location.Option (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Bucket.Location.Option

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Bucket.Location.html b/apidocs/com/google/gcloud/storage/class-use/Bucket.Location.html deleted file mode 100644 index 672ac23bbb5b..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Bucket.Location.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Bucket.Location (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Bucket.Location

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Bucket.NumNewerVersionsDeleteRule.html b/apidocs/com/google/gcloud/storage/class-use/Bucket.NumNewerVersionsDeleteRule.html deleted file mode 100644 index 5b947223854e..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Bucket.NumNewerVersionsDeleteRule.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Bucket.NumNewerVersionsDeleteRule (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Bucket.NumNewerVersionsDeleteRule

-
-
No usage of com.google.gcloud.storage.Bucket.NumNewerVersionsDeleteRule
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Bucket.StorageClass.Option.html b/apidocs/com/google/gcloud/storage/class-use/Bucket.StorageClass.Option.html deleted file mode 100644 index 725d5f4cb911..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Bucket.StorageClass.Option.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Bucket.StorageClass.Option (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Bucket.StorageClass.Option

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Bucket.StorageClass.html b/apidocs/com/google/gcloud/storage/class-use/Bucket.StorageClass.html deleted file mode 100644 index 0854b481c286..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Bucket.StorageClass.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Bucket.StorageClass (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Bucket.StorageClass

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Bucket.html b/apidocs/com/google/gcloud/storage/class-use/Bucket.html deleted file mode 100644 index d0ab8ced412c..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Bucket.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Bucket (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Bucket

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Cors.Builder.html b/apidocs/com/google/gcloud/storage/class-use/Cors.Builder.html deleted file mode 100644 index 18b9c1ed45cf..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Cors.Builder.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Cors.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Cors.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Cors.Method.html b/apidocs/com/google/gcloud/storage/class-use/Cors.Method.html deleted file mode 100644 index 95e5bdf9b8bf..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Cors.Method.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Cors.Method (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Cors.Method

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Cors.Origin.html b/apidocs/com/google/gcloud/storage/class-use/Cors.Origin.html deleted file mode 100644 index f02c34775c03..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Cors.Origin.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Cors.Origin (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Cors.Origin

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/Cors.html b/apidocs/com/google/gcloud/storage/class-use/Cors.html deleted file mode 100644 index 710738df7d51..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/Cors.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.Cors (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.Cors

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/ListResult.html b/apidocs/com/google/gcloud/storage/class-use/ListResult.html deleted file mode 100644 index a8ed4664e7c6..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/ListResult.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.ListResult (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.ListResult

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageService.BlobListOption.html b/apidocs/com/google/gcloud/storage/class-use/StorageService.BlobListOption.html deleted file mode 100644 index 1085820d3cfb..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageService.BlobListOption.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageService.BlobListOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageService.BlobListOption

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageService.BlobSourceOption.html b/apidocs/com/google/gcloud/storage/class-use/StorageService.BlobSourceOption.html deleted file mode 100644 index 8dcbb838f208..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageService.BlobSourceOption.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageService.BlobSourceOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageService.BlobSourceOption

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageService.BlobTargetOption.html b/apidocs/com/google/gcloud/storage/class-use/StorageService.BlobTargetOption.html deleted file mode 100644 index 5e33195e8798..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageService.BlobTargetOption.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageService.BlobTargetOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageService.BlobTargetOption

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageService.BucketListOption.html b/apidocs/com/google/gcloud/storage/class-use/StorageService.BucketListOption.html deleted file mode 100644 index d2bd92ec33f0..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageService.BucketListOption.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageService.BucketListOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageService.BucketListOption

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageService.BucketSourceOption.html b/apidocs/com/google/gcloud/storage/class-use/StorageService.BucketSourceOption.html deleted file mode 100644 index 7170b90aa6e3..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageService.BucketSourceOption.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageService.BucketSourceOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageService.BucketSourceOption

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageService.BucketTargetOption.html b/apidocs/com/google/gcloud/storage/class-use/StorageService.BucketTargetOption.html deleted file mode 100644 index 513262f78388..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageService.BucketTargetOption.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageService.BucketTargetOption (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageService.BucketTargetOption

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageService.ComposeRequest.Builder.html b/apidocs/com/google/gcloud/storage/class-use/StorageService.ComposeRequest.Builder.html deleted file mode 100644 index 83de0966f374..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageService.ComposeRequest.Builder.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageService.ComposeRequest.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageService.ComposeRequest.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageService.ComposeRequest.SourceBlob.html b/apidocs/com/google/gcloud/storage/class-use/StorageService.ComposeRequest.SourceBlob.html deleted file mode 100644 index bba14634559c..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageService.ComposeRequest.SourceBlob.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageService.ComposeRequest.SourceBlob (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageService.ComposeRequest.SourceBlob

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageService.ComposeRequest.html b/apidocs/com/google/gcloud/storage/class-use/StorageService.ComposeRequest.html deleted file mode 100644 index 6171d73461f6..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageService.ComposeRequest.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageService.ComposeRequest (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageService.ComposeRequest

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageService.CopyRequest.Builder.html b/apidocs/com/google/gcloud/storage/class-use/StorageService.CopyRequest.Builder.html deleted file mode 100644 index 6245c3f7b51a..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageService.CopyRequest.Builder.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageService.CopyRequest.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageService.CopyRequest.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageService.CopyRequest.html b/apidocs/com/google/gcloud/storage/class-use/StorageService.CopyRequest.html deleted file mode 100644 index 8532ae5c1d49..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageService.CopyRequest.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageService.CopyRequest (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageService.CopyRequest

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageService.PredefinedAcl.html b/apidocs/com/google/gcloud/storage/class-use/StorageService.PredefinedAcl.html deleted file mode 100644 index bc4ae25ff5b9..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageService.PredefinedAcl.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageService.PredefinedAcl (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageService.PredefinedAcl

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageService.html b/apidocs/com/google/gcloud/storage/class-use/StorageService.html deleted file mode 100644 index d63c68f23cbb..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageService.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -Uses of Interface com.google.gcloud.storage.StorageService (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Interface
com.google.gcloud.storage.StorageService

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageServiceException.html b/apidocs/com/google/gcloud/storage/class-use/StorageServiceException.html deleted file mode 100644 index 668ea25b0d65..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageServiceException.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageServiceException (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageServiceException

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageServiceFactory.html b/apidocs/com/google/gcloud/storage/class-use/StorageServiceFactory.html deleted file mode 100644 index b29a70f7a9cd..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageServiceFactory.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageServiceFactory (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageServiceFactory

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageServiceOptions.Builder.html b/apidocs/com/google/gcloud/storage/class-use/StorageServiceOptions.Builder.html deleted file mode 100644 index da45e40d1dfc..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageServiceOptions.Builder.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageServiceOptions.Builder (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageServiceOptions.Builder

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/class-use/StorageServiceOptions.html b/apidocs/com/google/gcloud/storage/class-use/StorageServiceOptions.html deleted file mode 100644 index 0683537cf309..000000000000 --- a/apidocs/com/google/gcloud/storage/class-use/StorageServiceOptions.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - -Uses of Class com.google.gcloud.storage.StorageServiceOptions (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Class
com.google.gcloud.storage.StorageServiceOptions

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/package-frame.html b/apidocs/com/google/gcloud/storage/package-frame.html deleted file mode 100644 index 01b789556566..000000000000 --- a/apidocs/com/google/gcloud/storage/package-frame.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - -com.google.gcloud.storage (GCloud Java 0.0.4 API) - - - - -

com.google.gcloud.storage

-
-

Interfaces

- -

Classes

- -

Enums

- -

Exceptions

- -
- - diff --git a/apidocs/com/google/gcloud/storage/package-summary.html b/apidocs/com/google/gcloud/storage/package-summary.html deleted file mode 100644 index 7923a6836885..000000000000 --- a/apidocs/com/google/gcloud/storage/package-summary.html +++ /dev/null @@ -1,415 +0,0 @@ - - - - - - -com.google.gcloud.storage (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Package com.google.gcloud.storage

-
-
A client to Google Cloud Storage.
-
-

See: Description

-
-
- - - - -

Package com.google.gcloud.storage Description

-
A client to Google Cloud Storage. - -

A simple usage example: -

StorageServiceOptions options = StorageServiceOptions.builder().projectId("project").build();
- StorageService storage = StorageServiceFactory.instance().get(options);
- byte[] content = readContent();
- Blob blob = storage.get("bucket", "blob_name");
- if (blob == null) {
-   storage.create(Blob.of("bucket", "blob_name"), content);
- } else {
-   byte[] prevContent = storage.load("bucket", "blob_name");
-   content = mergeContent(prevContent, content);
-   WritableByteChannel channel = storage.writer(blob);
-   channel.write(ByteBuffer.wrap(content));
-   channel.close();
- }
-
See Also:
Google Cloud Storage
-
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/package-tree.html b/apidocs/com/google/gcloud/storage/package-tree.html deleted file mode 100644 index 430aa541cc1b..000000000000 --- a/apidocs/com/google/gcloud/storage/package-tree.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - -com.google.gcloud.storage Class Hierarchy (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Hierarchy For Package com.google.gcloud.storage

-Package Hierarchies: - -
-
-

Class Hierarchy

- -

Interface Hierarchy

- -

Enum Hierarchy

- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/com/google/gcloud/storage/package-use.html b/apidocs/com/google/gcloud/storage/package-use.html deleted file mode 100644 index 6cb7ba1fb8a9..000000000000 --- a/apidocs/com/google/gcloud/storage/package-use.html +++ /dev/null @@ -1,324 +0,0 @@ - - - - - - -Uses of Package com.google.gcloud.storage (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Uses of Package
com.google.gcloud.storage

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/constant-values.html b/apidocs/constant-values.html deleted file mode 100644 index 183c6b81efdd..000000000000 --- a/apidocs/constant-values.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - -Constant Field Values (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Constant Field Values

-

Contents

- -
-
- - -

com.google.*

- - -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/deprecated-list.html b/apidocs/deprecated-list.html deleted file mode 100644 index 74dbbf87b01f..000000000000 --- a/apidocs/deprecated-list.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - -Deprecated List (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Deprecated API

-

Contents

- -
-
- - - -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/index-all.html b/apidocs/index-all.html deleted file mode 100644 index c8cf9576e0ad..000000000000 --- a/apidocs/index-all.html +++ /dev/null @@ -1,2717 +0,0 @@ - - - - - - -Index (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
A B C D E F G H I K L M N O P Q R S T U V W X Y  - - -

A

-
-
abortOn(Class<? extends Exception>...) - Method in class com.google.gcloud.ExceptionHandler.Builder
-
-
Adds the exceptions to abort on.
-
-
Acl - Class in com.google.gcloud.storage
-
-
Access Control List on for buckets or blobs.
-
-
Acl(Acl.Entity, Acl.Role) - Constructor for class com.google.gcloud.storage.Acl
-
 
-
acl() - Method in class com.google.gcloud.storage.Blob
-
 
-
acl(List<Acl>) - Method in class com.google.gcloud.storage.Blob.Builder
-
 
-
acl() - Method in class com.google.gcloud.storage.Bucket
-
 
-
acl(Iterable<Acl>) - Method in class com.google.gcloud.storage.Bucket.Builder
-
 
-
Acl.Domain - Class in com.google.gcloud.storage
-
 
-
Acl.Domain(String) - Constructor for class com.google.gcloud.storage.Acl.Domain
-
 
-
Acl.Entity - Class in com.google.gcloud.storage
-
 
-
Acl.Entity.Type - Enum in com.google.gcloud.storage
-
 
-
Acl.Group - Class in com.google.gcloud.storage
-
 
-
Acl.Group(String) - Constructor for class com.google.gcloud.storage.Acl.Group
-
 
-
Acl.Project - Class in com.google.gcloud.storage
-
 
-
Acl.Project(Acl.Project.ProjectRole, String) - Constructor for class com.google.gcloud.storage.Acl.Project
-
 
-
Acl.RawEntity - Class in com.google.gcloud.storage
-
 
-
Acl.Role - Enum in com.google.gcloud.storage
-
 
-
Acl.User - Class in com.google.gcloud.storage
-
 
-
Acl.User(String) - Constructor for class com.google.gcloud.storage.Acl.User
-
 
-
active() - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
active() - Method in interface com.google.gcloud.datastore.Transaction
-
-
Returns true if the transaction is still active (was not committed or rolledback).
-
-
add(FullEntity<?>) - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
add(FullEntity<?>...) - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
add(FullEntity<?>) - Method in interface com.google.gcloud.datastore.DatastoreWriter
-
-
Datastore add operation.
-
-
add(FullEntity<?>...) - Method in interface com.google.gcloud.datastore.DatastoreWriter
-
-
Datastore add operation.
-
-
addBinding(Cursor) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
addBinding(String...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
addBinding(long...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
addBinding(double...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
addBinding(boolean...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
addBinding(DateTime...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
addBinding(Key...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
addBinding(FullEntity<?>...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
addBinding(Blob...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
addGroupBy(String, String...) - Method in class com.google.gcloud.datastore.StructuredQuery.ProjectionEntityQueryBuilder
-
 
-
addProjection(StructuredQuery.Projection, StructuredQuery.Projection...) - Method in class com.google.gcloud.datastore.StructuredQuery.ProjectionEntityQueryBuilder
-
 
-
addSource(Iterable<String>) - Method in class com.google.gcloud.storage.StorageService.ComposeRequest.Builder
-
 
-
addSource(String...) - Method in class com.google.gcloud.storage.StorageService.ComposeRequest.Builder
-
 
-
addSource(String, long) - Method in class com.google.gcloud.storage.StorageService.ComposeRequest.Builder
-
-
Add a source with a specific generation to match.
-
-
addValue(Value<?>) - Method in class com.google.gcloud.datastore.ListValue.Builder
-
 
-
addValue(Value<?>, Value<?>...) - Method in class com.google.gcloud.datastore.ListValue.Builder
-
 
-
addWithDeferredIdAllocation(FullEntity<?>...) - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
afterEval(Exception, ExceptionHandler.Interceptor.RetryResult) - Method in interface com.google.gcloud.ExceptionHandler.Interceptor
-
-
This method is called after the evaluation and could alter its result.
-
-
aggregate(StructuredQuery.Projection.Aggregate, String) - Static method in class com.google.gcloud.datastore.StructuredQuery.Projection
-
 
-
allocateId(IncompleteKey) - Method in interface com.google.gcloud.datastore.DatastoreService
-
-
Allocate a unique id for the given key.
-
-
allocateId(IncompleteKey...) - Method in interface com.google.gcloud.datastore.DatastoreService
-
-
Returns a list of keys using the allocated ids ordered by the input.
-
-
allocateIds(DatastoreV1.AllocateIdsRequest) - Method in interface com.google.gcloud.spi.DatastoreRpc
-
 
-
allowLiteral() - Method in class com.google.gcloud.datastore.GqlQuery
-
 
-
allowLiteral(boolean) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
and(StructuredQuery.Filter, StructuredQuery.Filter...) - Static method in class com.google.gcloud.datastore.StructuredQuery.CompositeFilter
-
 
-
any() - Static method in class com.google.gcloud.storage.Cors.Origin
-
 
-
appEngineAppId() - Static method in class com.google.gcloud.ServiceOptions
-
 
-
apply(BatchRequest) - Method in interface com.google.gcloud.storage.StorageService
-
-
Send a batch request.
-
-
asc(String) - Static method in class com.google.gcloud.datastore.StructuredQuery.OrderBy
-
 
-
asia() - Static method in class com.google.gcloud.storage.Bucket.Location
-
 
-
asInputStream() - Method in class com.google.gcloud.datastore.Blob
-
-
Returns an InputStream for this blob content.
-
-
asReadOnlyByteBuffer() - Method in class com.google.gcloud.datastore.Blob
-
-
Returns a read-only ByteBuffer for this blob content.
-
-
AuthCredentials - Class in com.google.gcloud
-
-
Credentials for accessing Google Cloud services.
-
-
AuthCredentials() - Constructor for class com.google.gcloud.AuthCredentials
-
 
-
authCredentials() - Method in class com.google.gcloud.ServiceOptions
-
 
-
authCredentials(AuthCredentials) - Method in class com.google.gcloud.ServiceOptions.Builder
-
 
-
- - - -

B

-
-
BaseDatastoreBatchWriter - Class in com.google.gcloud.datastore
-
-
Base class for DatastoreBatchWriter.
-
-
BaseDatastoreBatchWriter(String) - Constructor for class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
BaseEntity<K extends IncompleteKey> - Class in com.google.gcloud.datastore
-
-
A base class for entities (key and properties).
-
-
BaseService<O extends ServiceOptions> - Class in com.google.gcloud
-
 
-
BaseService(O) - Constructor for class com.google.gcloud.BaseService
-
 
-
Batch - Interface in com.google.gcloud.datastore
-
-
An interface to represent a batch of write operations.
-
-
batch(StorageRpc.BatchRequest) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
batch(StorageRpc.BatchRequest) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
Batch.Response - Interface in com.google.gcloud.datastore
-
 
-
BatchOption - Class in com.google.gcloud.datastore
-
 
-
BatchOption.ForceWrites - Class in com.google.gcloud.datastore
-
 
-
BatchOption.ForceWrites(boolean) - Constructor for class com.google.gcloud.datastore.BatchOption.ForceWrites
-
 
-
BatchRequest - Class in com.google.gcloud.storage
-
-
Google storage batch request.
-
-
BatchRequest.Builder - Class in com.google.gcloud.storage
-
 
-
BatchResponse - Class in com.google.gcloud.storage
-
-
Google Storage batch response.
-
-
BatchResponse(List<BatchResponse.Result<Boolean>>, List<BatchResponse.Result<Blob>>, List<BatchResponse.Result<Blob>>) - Constructor for class com.google.gcloud.storage.BatchResponse
-
 
-
BatchResponse.Result<T extends Serializable> - Class in com.google.gcloud.storage
-
 
-
BatchResponse.Result(T) - Constructor for class com.google.gcloud.storage.BatchResponse.Result
-
 
-
BatchResponse.Result(StorageServiceException) - Constructor for class com.google.gcloud.storage.BatchResponse.Result
-
 
-
beforeEval(Exception) - Method in interface com.google.gcloud.ExceptionHandler.Interceptor
-
-
This method is called before exception evaluation and could short-circuit the process.
-
-
beginTransaction(DatastoreV1.BeginTransactionRequest) - Method in interface com.google.gcloud.spi.DatastoreRpc
-
 
-
Blob - Class in com.google.gcloud.datastore
-
-
A Google Cloud Datastore Blob.
-
-
Blob - Class in com.google.gcloud.storage
-
-
A Google Storage object.
-
-
Blob.Builder - Class in com.google.gcloud.storage
-
 
-
BlobReadChannel - Interface in com.google.gcloud.storage
-
-
A channel for reading data from a Google Cloud Storage object.
-
-
BlobValue - Class in com.google.gcloud.datastore
-
 
-
BlobValue(Blob) - Constructor for class com.google.gcloud.datastore.BlobValue
-
 
-
BlobValue.Builder - Class in com.google.gcloud.datastore
-
 
-
BlobWriteChannel - Interface in com.google.gcloud.storage
-
-
A channel for writing data to a Google Cloud Storage object.
-
-
BooleanValue - Class in com.google.gcloud.datastore
-
 
-
BooleanValue(boolean) - Constructor for class com.google.gcloud.datastore.BooleanValue
-
 
-
BooleanValue.Builder - Class in com.google.gcloud.datastore
-
 
-
bucket() - Method in class com.google.gcloud.storage.Blob
-
 
-
bucket(String) - Method in class com.google.gcloud.storage.Blob.Builder
-
 
-
Bucket - Class in com.google.gcloud.storage
-
-
A Google Storage bucket.
-
-
Bucket.AgeDeleteRule - Class in com.google.gcloud.storage
-
 
-
Bucket.AgeDeleteRule(int) - Constructor for class com.google.gcloud.storage.Bucket.AgeDeleteRule
-
 
-
Bucket.Builder - Class in com.google.gcloud.storage
-
 
-
Bucket.CreatedBeforeDeleteRule - Class in com.google.gcloud.storage
-
 
-
Bucket.CreatedBeforeDeleteRule(long) - Constructor for class com.google.gcloud.storage.Bucket.CreatedBeforeDeleteRule
-
 
-
Bucket.DeleteRule - Class in com.google.gcloud.storage
-
 
-
Bucket.DeleteRule.Type - Enum in com.google.gcloud.storage
-
 
-
Bucket.IsLiveDeleteRule - Class in com.google.gcloud.storage
-
 
-
Bucket.IsLiveDeleteRule(boolean) - Constructor for class com.google.gcloud.storage.Bucket.IsLiveDeleteRule
-
 
-
Bucket.Location - Class in com.google.gcloud.storage
-
 
-
Bucket.Location.Option - Enum in com.google.gcloud.storage
-
 
-
Bucket.NumNewerVersionsDeleteRule - Class in com.google.gcloud.storage
-
 
-
Bucket.NumNewerVersionsDeleteRule(int) - Constructor for class com.google.gcloud.storage.Bucket.NumNewerVersionsDeleteRule
-
 
-
Bucket.StorageClass - Class in com.google.gcloud.storage
-
 
-
Bucket.StorageClass.Option - Enum in com.google.gcloud.storage
-
 
-
build() - Method in class com.google.gcloud.datastore.BlobValue.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.BooleanValue.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.DatastoreServiceOptions.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.DateTimeValue.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.DoubleValue.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.Entity.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.EntityValue.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.FullEntity.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.IncompleteKey.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.Key.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.KeyFactory
-
 
-
build() - Method in class com.google.gcloud.datastore.KeyValue.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.ListValue.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.LongValue.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.NullValue.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.StringValue.Builder
-
 
-
build() - Method in class com.google.gcloud.datastore.StructuredQuery.EntityQueryBuilder
-
 
-
build() - Method in class com.google.gcloud.datastore.StructuredQuery.KeyQueryBuilder
-
 
-
build() - Method in class com.google.gcloud.datastore.StructuredQuery.ProjectionEntityQueryBuilder
-
 
-
build() - Method in class com.google.gcloud.ExceptionHandler.Builder
-
-
Returns a new ExceptionHandler instance.
-
-
build() - Method in class com.google.gcloud.RetryParams.Builder
-
-
Create an instance of RetryParams with the parameters set in this builder.
-
-
build() - Method in class com.google.gcloud.ServiceOptions.Builder
-
 
-
build() - Method in class com.google.gcloud.storage.BatchRequest.Builder
-
 
-
build() - Method in class com.google.gcloud.storage.Blob.Builder
-
 
-
build() - Method in class com.google.gcloud.storage.Bucket.Builder
-
 
-
build() - Method in class com.google.gcloud.storage.Cors.Builder
-
 
-
build() - Method in class com.google.gcloud.storage.StorageService.ComposeRequest.Builder
-
 
-
build() - Method in class com.google.gcloud.storage.StorageService.CopyRequest.Builder
-
 
-
build() - Method in class com.google.gcloud.storage.StorageServiceOptions.Builder
-
 
-
builder(Blob) - Static method in class com.google.gcloud.datastore.BlobValue
-
 
-
builder(boolean) - Static method in class com.google.gcloud.datastore.BooleanValue
-
 
-
builder() - Static method in class com.google.gcloud.datastore.DatastoreServiceOptions
-
 
-
builder(DateTime) - Static method in class com.google.gcloud.datastore.DateTimeValue
-
 
-
builder(double) - Static method in class com.google.gcloud.datastore.DoubleValue
-
 
-
builder(Key) - Static method in class com.google.gcloud.datastore.Entity
-
 
-
builder(Entity) - Static method in class com.google.gcloud.datastore.Entity
-
 
-
builder(Key, FullEntity<?>) - Static method in class com.google.gcloud.datastore.Entity
-
 
-
builder(FullEntity) - Static method in class com.google.gcloud.datastore.EntityValue
-
 
-
builder() - Static method in class com.google.gcloud.datastore.FullEntity
-
 
-
builder(K) - Static method in class com.google.gcloud.datastore.FullEntity
-
 
-
builder(FullEntity<K>) - Static method in class com.google.gcloud.datastore.FullEntity
-
 
-
builder(String, String) - Static method in class com.google.gcloud.datastore.IncompleteKey
-
 
-
builder(IncompleteKey) - Static method in class com.google.gcloud.datastore.IncompleteKey
-
 
-
builder(Key, String) - Static method in class com.google.gcloud.datastore.IncompleteKey
-
 
-
builder(String, String, String) - Static method in class com.google.gcloud.datastore.Key
-
 
-
builder(String, String, long) - Static method in class com.google.gcloud.datastore.Key
-
 
-
builder(Key) - Static method in class com.google.gcloud.datastore.Key
-
 
-
builder(IncompleteKey, String) - Static method in class com.google.gcloud.datastore.Key
-
 
-
builder(IncompleteKey, long) - Static method in class com.google.gcloud.datastore.Key
-
 
-
builder(Key, String, String) - Static method in class com.google.gcloud.datastore.Key
-
 
-
builder(Key, String, long) - Static method in class com.google.gcloud.datastore.Key
-
 
-
builder(Key) - Static method in class com.google.gcloud.datastore.KeyValue
-
 
-
builder() - Static method in class com.google.gcloud.datastore.ListValue
-
 
-
builder(long) - Static method in class com.google.gcloud.datastore.LongValue
-
 
-
builder() - Static method in class com.google.gcloud.datastore.NullValue
-
 
-
builder(ProjectionEntity) - Static method in class com.google.gcloud.datastore.ProjectionEntity
-
 
-
builder(String) - Static method in class com.google.gcloud.datastore.StringValue
-
 
-
builder() - Static method in class com.google.gcloud.ExceptionHandler
-
 
-
builder() - Static method in class com.google.gcloud.RetryParams
-
 
-
builder() - Static method in class com.google.gcloud.storage.BatchRequest
-
 
-
builder(Bucket, String) - Static method in class com.google.gcloud.storage.Blob
-
 
-
builder(String, String) - Static method in class com.google.gcloud.storage.Blob
-
 
-
builder(String) - Static method in class com.google.gcloud.storage.Bucket
-
 
-
builder() - Static method in class com.google.gcloud.storage.Cors
-
 
-
builder() - Static method in class com.google.gcloud.storage.StorageService.ComposeRequest
-
 
-
builder() - Static method in class com.google.gcloud.storage.StorageService.CopyRequest
-
 
-
builder() - Static method in class com.google.gcloud.storage.StorageServiceOptions
-
 
-
- - - -

C

-
-
cacheControl(String) - Method in class com.google.gcloud.storage.Blob.Builder
-
 
-
cacheControl() - Method in class com.google.gcloud.storage.Blob
-
 
-
clearBindings() - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
clearGroupBy() - Method in class com.google.gcloud.datastore.StructuredQuery.ProjectionEntityQueryBuilder
-
 
-
clearProjection() - Method in class com.google.gcloud.datastore.StructuredQuery.ProjectionEntityQueryBuilder
-
 
-
close() - Method in interface com.google.gcloud.storage.BlobReadChannel
-
-
Overridden to remove IOException.
-
-
code() - Method in exception com.google.gcloud.datastore.DatastoreServiceException
-
-
Returns the code associated with this exception.
-
-
code() - Method in exception com.google.gcloud.storage.StorageServiceException
-
-
Returns the code associated with this exception.
-
-
com.google.gcloud - package com.google.gcloud
-
 
-
com.google.gcloud.datastore - package com.google.gcloud.datastore
-
-
A client to the Google Cloud Datastore.
-
-
com.google.gcloud.examples - package com.google.gcloud.examples
-
 
-
com.google.gcloud.spi - package com.google.gcloud.spi
-
 
-
com.google.gcloud.storage - package com.google.gcloud.storage
-
-
A client to Google Cloud Storage.
-
-
commit() - Method in interface com.google.gcloud.datastore.Transaction
-
-
Commit the transaction.
-
-
commit(DatastoreV1.CommitRequest) - Method in interface com.google.gcloud.spi.DatastoreRpc
-
 
-
compareTo(DateTime) - Method in class com.google.gcloud.datastore.DateTime
-
 
-
componentCount() - Method in class com.google.gcloud.storage.Blob
-
 
-
compose(Iterable<StorageObject>, StorageObject, Map<StorageRpc.Option, ?>) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
compose(Iterable<StorageObject>, StorageObject, Map<StorageRpc.Option, ?>) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
compose(StorageService.ComposeRequest) - Method in interface com.google.gcloud.storage.StorageService
-
-
Send a compose request.
-
-
contains(String) - Method in class com.google.gcloud.datastore.BaseEntity
-
-
Returns true if the entity contains a property with the given name.
-
-
contentDisposition(String) - Method in class com.google.gcloud.storage.Blob.Builder
-
 
-
contentDisposition() - Method in class com.google.gcloud.storage.Blob
-
 
-
contentEncoding(String) - Method in class com.google.gcloud.storage.Blob.Builder
-
 
-
contentEncoding() - Method in class com.google.gcloud.storage.Blob
-
 
-
contentLanguage(String) - Method in class com.google.gcloud.storage.Blob.Builder
-
 
-
contentLanguage() - Method in class com.google.gcloud.storage.Blob
-
 
-
contentType(String) - Method in class com.google.gcloud.storage.Blob.Builder
-
 
-
contentType() - Method in class com.google.gcloud.storage.Blob
-
 
-
convert(DatastoreV1.Entity) - Method in class com.google.gcloud.datastore.Query.ResultType
-
 
-
copy(StorageObject, Map<StorageRpc.Option, ?>, StorageObject, Map<StorageRpc.Option, ?>) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
copy(StorageObject, Map<StorageRpc.Option, ?>, StorageObject, Map<StorageRpc.Option, ?>) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
copy(StorageService.CopyRequest) - Method in interface com.google.gcloud.storage.StorageService
-
-
Send a copy request.
-
-
copyFrom(byte[]) - Static method in class com.google.gcloud.datastore.Blob
-
 
-
copyFrom(ByteBuffer) - Static method in class com.google.gcloud.datastore.Blob
-
 
-
copyFrom(InputStream) - Static method in class com.google.gcloud.datastore.Blob
-
 
-
copyFrom(byte[]) - Static method in class com.google.gcloud.datastore.Cursor
-
 
-
copyFrom(Date) - Static method in class com.google.gcloud.datastore.DateTime
-
 
-
copyFrom(Calendar) - Static method in class com.google.gcloud.datastore.DateTime
-
 
-
copyTo(ByteBuffer) - Method in class com.google.gcloud.datastore.Blob
-
-
Copies bytes into a ByteBuffer.
-
-
copyTo(byte[]) - Method in class com.google.gcloud.datastore.Blob
-
-
Copies bytes into a buffer.
-
-
cors(Iterable<Cors>) - Method in class com.google.gcloud.storage.Bucket.Builder
-
 
-
cors() - Method in class com.google.gcloud.storage.Bucket
-
 
-
Cors - Class in com.google.gcloud.storage
-
-
Cross-Origin Resource Sharing (CORS) configuration for a bucket.
-
-
Cors.Builder - Class in com.google.gcloud.storage
-
 
-
Cors.Method - Enum in com.google.gcloud.storage
-
 
-
Cors.Origin - Class in com.google.gcloud.storage
-
 
-
crc32c(String) - Method in class com.google.gcloud.storage.Blob.Builder
-
 
-
crc32c() - Method in class com.google.gcloud.storage.Blob
-
 
-
create() - Method in interface com.google.gcloud.ServiceOptions.HttpTransportFactory
-
 
-
create(Bucket, Map<StorageRpc.Option, ?>) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
create(StorageObject, byte[], Map<StorageRpc.Option, ?>) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
create(O) - Method in interface com.google.gcloud.spi.ServiceRpcFactory
-
 
-
create(Bucket, Map<StorageRpc.Option, ?>) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
create(StorageObject, byte[], Map<StorageRpc.Option, ?>) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
create(Bucket, StorageService.BucketTargetOption...) - Method in interface com.google.gcloud.storage.StorageService
-
-
Create a new bucket.
-
-
create(Blob, byte[], StorageService.BlobTargetOption...) - Method in interface com.google.gcloud.storage.StorageService
-
-
Create a new blob.
-
-
createApplicationDefaults() - Static method in class com.google.gcloud.AuthCredentials
-
-
Returns the Application Default Credentials.
-
-
createFor(String, PrivateKey) - Static method in class com.google.gcloud.AuthCredentials
-
 
-
createForAppEngine() - Static method in class com.google.gcloud.AuthCredentials
-
 
-
createForComputeEngine() - Static method in class com.google.gcloud.AuthCredentials
-
 
-
createTime() - Method in class com.google.gcloud.storage.Bucket
-
 
-
Cursor - Class in com.google.gcloud.datastore
-
-
A Google Cloud Datastore cursor.
-
-
cursorAfter() - Method in interface com.google.gcloud.datastore.QueryResults
-
-
Returns the Cursor for point after the value returned in the last Iterator.next() call.
-
-
- - - -

D

-
-
datastore() - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
datastore() - Method in interface com.google.gcloud.datastore.Batch
-
-
Returns the batch associated DatastoreService.
-
-
datastore() - Method in interface com.google.gcloud.datastore.Transaction
-
-
Returns the transaction associated DatastoreService.
-
-
datastore(DatastoreServiceOptions) - Static method in class com.google.gcloud.spi.ServiceRpcProvider
-
 
-
DatastoreExample - Class in com.google.gcloud.examples
-
-
An example of using the Google Cloud Datastore.
-
-
DatastoreExample() - Constructor for class com.google.gcloud.examples.DatastoreExample
-
 
-
DatastoreReader - Interface in com.google.gcloud.datastore
-
-
An interface to represent Google Cloud Datastore read operations.
-
-
DatastoreReaderWriter - Interface in com.google.gcloud.datastore
-
-
An interface that combines both Google Cloud Datastore read and write operations.
-
-
DatastoreRpc - Interface in com.google.gcloud.spi
-
-
Provides access to the remote Datastore service.
-
-
DatastoreRpc.DatastoreRpcException - Exception in com.google.gcloud.spi
-
 
-
DatastoreRpc.DatastoreRpcException(DatastoreRpc.DatastoreRpcException.Reason) - Constructor for exception com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException
-
 
-
DatastoreRpc.DatastoreRpcException(String, int, boolean, String) - Constructor for exception com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException
-
 
-
DatastoreRpc.DatastoreRpcException.Reason - Enum in com.google.gcloud.spi
-
-
The reason for the exception.
-
-
DatastoreRpcFactory - Interface in com.google.gcloud.spi
-
 
-
DatastoreService - Interface in com.google.gcloud.datastore
-
-
An interface for Google Cloud Datastore.
-
-
DatastoreService.TransactionCallable<T> - Interface in com.google.gcloud.datastore
-
-
An Callback for running with a Transactional - DatastoreReaderWriter.
-
-
DatastoreServiceException - Exception in com.google.gcloud.datastore
-
 
-
DatastoreServiceException(DatastoreServiceException.Code, String, Exception) - Constructor for exception com.google.gcloud.datastore.DatastoreServiceException
-
 
-
DatastoreServiceException(DatastoreServiceException.Code, String) - Constructor for exception com.google.gcloud.datastore.DatastoreServiceException
-
 
-
DatastoreServiceException.Code - Enum in com.google.gcloud.datastore
-
-
An error code to represent the failure.
-
-
DatastoreServiceFactory - Class in com.google.gcloud.datastore
-
-
A base class for DatasoreService factories.
-
-
DatastoreServiceFactory() - Constructor for class com.google.gcloud.datastore.DatastoreServiceFactory
-
 
-
DatastoreServiceOptions - Class in com.google.gcloud.datastore
-
 
-
DatastoreServiceOptions.Builder - Class in com.google.gcloud.datastore
-
 
-
DatastoreWriter - Interface in com.google.gcloud.datastore
-
-
An interface to represent Google Cloud Datastore write operations.
-
-
DateTime - Class in com.google.gcloud.datastore
-
-
A Google Cloud Datastore timestamp (represented in micro-seconds).
-
-
DateTimeValue - Class in com.google.gcloud.datastore
-
 
-
DateTimeValue(DateTime) - Constructor for class com.google.gcloud.datastore.DateTimeValue
-
 
-
DateTimeValue.Builder - Class in com.google.gcloud.datastore
-
 
-
daysToLive() - Method in class com.google.gcloud.storage.Bucket.AgeDeleteRule
-
 
-
deactivate() - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
DEFAULT_INITIAL_RETRY_DELAY_MILLIS - Static variable in class com.google.gcloud.RetryParams
-
 
-
DEFAULT_MAX_RETRY_DELAY_MILLIS - Static variable in class com.google.gcloud.RetryParams
-
 
-
DEFAULT_PROJECTION - Static variable in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
DEFAULT_RETRY_DELAY_BACKOFF_FACTOR - Static variable in class com.google.gcloud.RetryParams
-
 
-
DEFAULT_RETRY_MAX_ATTEMPTS - Static variable in class com.google.gcloud.RetryParams
-
 
-
DEFAULT_RETRY_MIN_ATTEMPTS - Static variable in class com.google.gcloud.RetryParams
-
 
-
DEFAULT_TOTAL_RETRY_PERIOD_MILLIS - Static variable in class com.google.gcloud.RetryParams
-
 
-
defaultAcl(Iterable<Acl>) - Method in class com.google.gcloud.storage.Bucket.Builder
-
 
-
defaultAcl() - Method in class com.google.gcloud.storage.Bucket
-
 
-
defaultInstance() - Static method in class com.google.gcloud.datastore.DatastoreServiceOptions
-
 
-
defaultInstance() - Static method in class com.google.gcloud.storage.StorageServiceOptions
-
 
-
defaultProject() - Method in class com.google.gcloud.datastore.DatastoreServiceOptions
-
 
-
defaultProject() - Method in class com.google.gcloud.ServiceOptions
-
 
-
DefaultStorageRpc - Class in com.google.gcloud.spi
-
 
-
DefaultStorageRpc(StorageServiceOptions) - Constructor for class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
delete(Key...) - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
delete(Key...) - Method in interface com.google.gcloud.datastore.DatastoreService
-
-
A datastore delete operation.
-
-
delete(Key...) - Method in interface com.google.gcloud.datastore.DatastoreWriter
-
-
A datastore delete operation.
-
-
delete(Bucket, Map<StorageRpc.Option, ?>) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
delete(StorageObject, Map<StorageRpc.Option, ?>) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
delete(Bucket, Map<StorageRpc.Option, ?>) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
delete(StorageObject, Map<StorageRpc.Option, ?>) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
delete(String, String, StorageService.BlobSourceOption...) - Method in class com.google.gcloud.storage.BatchRequest.Builder
-
-
Delete the given blob.
-
-
delete(String, StorageService.BucketSourceOption...) - Method in interface com.google.gcloud.storage.StorageService
-
-
Delete the requested bucket.
-
-
delete(String, String, StorageService.BlobSourceOption...) - Method in interface com.google.gcloud.storage.StorageService
-
-
Delete the requested blob.
-
-
deleteRules(Iterable<? extends Bucket.DeleteRule>) - Method in class com.google.gcloud.storage.Bucket.Builder
-
 
-
deleteRules() - Method in class com.google.gcloud.storage.Bucket
-
 
-
deletes - Variable in class com.google.gcloud.spi.StorageRpc.BatchResponse
-
 
-
deletes() - Method in class com.google.gcloud.storage.BatchResponse
-
-
Returns the results for the delete operations using the request order.
-
-
deleteTime() - Method in class com.google.gcloud.storage.Blob
-
 
-
desc(String) - Static method in class com.google.gcloud.datastore.StructuredQuery.OrderBy
-
 
-
description() - Method in enum com.google.gcloud.datastore.DatastoreServiceException.Code
-
 
-
description() - Method in enum com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException.Reason
-
 
-
direction() - Method in class com.google.gcloud.datastore.StructuredQuery.OrderBy
-
 
-
doesNotExists() - Static method in class com.google.gcloud.storage.StorageService.BlobTargetOption
-
 
-
domain() - Method in class com.google.gcloud.storage.Acl.Domain
-
 
-
DoubleValue - Class in com.google.gcloud.datastore
-
 
-
DoubleValue(double) - Constructor for class com.google.gcloud.datastore.DoubleValue
-
 
-
DoubleValue.Builder - Class in com.google.gcloud.datastore
-
 
-
DoubleValue.Builder() - Constructor for class com.google.gcloud.datastore.DoubleValue.Builder
-
 
-
durableReducedAvailability() - Static method in class com.google.gcloud.storage.Bucket.StorageClass
-
 
-
- - - -

E

-
-
email() - Method in class com.google.gcloud.storage.Acl.Group
-
 
-
email() - Method in class com.google.gcloud.storage.Acl.User
-
 
-
emptyBuilder() - Method in class com.google.gcloud.datastore.BaseEntity
-
 
-
emptyBuilder() - Method in class com.google.gcloud.datastore.Entity
-
 
-
emptyBuilder() - Method in class com.google.gcloud.datastore.FullEntity
-
 
-
emptyBuilder() - Method in class com.google.gcloud.datastore.ProjectionEntity
-
 
-
endCursor() - Method in class com.google.gcloud.datastore.StructuredQuery
-
 
-
Entity - Class in com.google.gcloud.datastore
-
-
An entity is the Google Cloud Datastore persistent data object for a specific key.
-
-
ENTITY - Static variable in class com.google.gcloud.datastore.Query.ResultType
-
 
-
entity() - Method in class com.google.gcloud.storage.Acl
-
 
-
Entity.Builder - Class in com.google.gcloud.datastore
-
 
-
entityQueryBuilder() - Static method in class com.google.gcloud.datastore.Query
-
-
Returns a new StructuredQuery builder for full (complete entities) queries.
-
-
EntityValue - Class in com.google.gcloud.datastore
-
 
-
EntityValue(FullEntity) - Constructor for class com.google.gcloud.datastore.EntityValue
-
 
-
EntityValue.Builder - Class in com.google.gcloud.datastore
-
 
-
eq(String, Value<?>) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
eq(String, String) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
eq(String, long) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
eq(String, double) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
eq(String, boolean) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
eq(String, DateTime) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
eq(String, Key) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
eq(String, Blob) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
equals(Object) - Method in class com.google.gcloud.datastore.BaseEntity
-
 
-
equals(Object) - Method in class com.google.gcloud.datastore.Blob
-
 
-
equals(Object) - Method in class com.google.gcloud.datastore.Cursor
-
 
-
equals(Object) - Method in class com.google.gcloud.datastore.DatastoreServiceOptions
-
 
-
equals(Object) - Method in class com.google.gcloud.datastore.DateTime
-
 
-
equals(Object) - Method in class com.google.gcloud.datastore.GqlQuery
-
 
-
equals(Object) - Method in class com.google.gcloud.datastore.PathElement
-
 
-
equals(Object) - Method in class com.google.gcloud.datastore.Query.ResultType
-
 
-
equals(Object) - Method in class com.google.gcloud.datastore.StructuredQuery.CompositeFilter
-
 
-
equals(Object) - Method in class com.google.gcloud.datastore.StructuredQuery
-
 
-
equals(Object) - Method in class com.google.gcloud.datastore.StructuredQuery.OrderBy
-
 
-
equals(Object) - Method in class com.google.gcloud.datastore.StructuredQuery.Projection
-
 
-
equals(Object) - Method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
equals(Object) - Method in class com.google.gcloud.datastore.Value
-
 
-
equals(Object) - Method in class com.google.gcloud.RetryParams
-
 
-
equals(Object) - Method in class com.google.gcloud.storage.Acl.Entity
-
 
-
equals(Object) - Method in class com.google.gcloud.storage.Acl
-
 
-
equals(Object) - Method in class com.google.gcloud.storage.BatchRequest
-
 
-
equals(Object) - Method in class com.google.gcloud.storage.BatchResponse
-
 
-
equals(Object) - Method in class com.google.gcloud.storage.BatchResponse.Result
-
 
-
equals(Object) - Method in class com.google.gcloud.storage.Blob
-
 
-
equals(Object) - Method in class com.google.gcloud.storage.Bucket.DeleteRule
-
 
-
equals(Object) - Method in class com.google.gcloud.storage.Bucket
-
 
-
equals(Object) - Method in class com.google.gcloud.storage.Bucket.Location
-
 
-
equals(Object) - Method in class com.google.gcloud.storage.Cors
-
 
-
equals(Object) - Method in class com.google.gcloud.storage.Cors.Origin
-
 
-
equals(Object) - Method in class com.google.gcloud.storage.ListResult
-
 
-
equals(Object) - Method in class com.google.gcloud.storage.StorageServiceOptions
-
 
-
etag() - Method in class com.google.gcloud.storage.Blob
-
 
-
etag() - Method in class com.google.gcloud.storage.Bucket
-
 
-
eu() - Static method in class com.google.gcloud.storage.Bucket.Location
-
 
-
ExceptionHandler - Class in com.google.gcloud
-
-
Exception handling used by RetryHelper.
-
-
ExceptionHandler.Builder - Class in com.google.gcloud
-
-
ExceptionHandler builder.
-
-
ExceptionHandler.Interceptor - Interface in com.google.gcloud
-
 
-
ExceptionHandler.Interceptor.RetryResult - Enum in com.google.gcloud
-
 
-
- - - -

F

-
-
failed() - Method in class com.google.gcloud.storage.BatchResponse.Result
-
-
Returns true if failed, false otherwise.
-
-
failure() - Method in class com.google.gcloud.storage.BatchResponse.Result
-
-
Returns the failure or null if was successful.
-
-
fetch(Key...) - Method in interface com.google.gcloud.datastore.DatastoreReader
-
-
Returns a list with a value for each given key (ordered by input).
-
-
fetch(Key...) - Method in interface com.google.gcloud.datastore.Transaction
-
-
Returns a list with a value for each given key (ordered by input).
-
-
filter() - Method in class com.google.gcloud.datastore.StructuredQuery
-
 
-
first(String) - Static method in class com.google.gcloud.datastore.StructuredQuery.Projection
-
 
-
force() - Method in class com.google.gcloud.datastore.BatchOption.ForceWrites
-
 
-
force(boolean) - Method in class com.google.gcloud.datastore.DatastoreServiceOptions.Builder
-
 
-
force() - Method in class com.google.gcloud.datastore.DatastoreServiceOptions
-
 
-
force() - Method in class com.google.gcloud.datastore.TransactionOption.ForceWrites
-
 
-
forceWrites() - Static method in class com.google.gcloud.datastore.BatchOption
-
 
-
forceWrites() - Static method in class com.google.gcloud.datastore.TransactionOption
-
 
-
fromPb(byte[]) - Method in class com.google.gcloud.datastore.BaseEntity
-
 
-
fromPb(byte[]) - Method in class com.google.gcloud.datastore.Blob
-
 
-
fromPb(byte[]) - Method in class com.google.gcloud.datastore.Cursor
-
 
-
fromPb(byte[]) - Method in class com.google.gcloud.datastore.DateTime
-
 
-
fromPb(Query.ResultType<V>, String, byte[]) - Method in class com.google.gcloud.datastore.GqlQuery
-
 
-
fromPb(byte[]) - Method in class com.google.gcloud.datastore.IncompleteKey
-
 
-
fromPb(byte[]) - Method in class com.google.gcloud.datastore.Key
-
 
-
fromPb(byte[]) - Method in class com.google.gcloud.datastore.PathElement
-
 
-
fromPb(byte[]) - Method in class com.google.gcloud.datastore.Query
-
 
-
fromPb(Query.ResultType<V>, String, byte[]) - Method in class com.google.gcloud.datastore.Query
-
 
-
fromPb(Query.ResultType<V>, String, byte[]) - Method in class com.google.gcloud.datastore.StructuredQuery
-
 
-
fromPb(DatastoreV1.PropertyExpression) - Static method in class com.google.gcloud.datastore.StructuredQuery.Projection
-
 
-
fromPb(DatastoreV1.PropertyFilter) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
fromPb(byte[]) - Method in class com.google.gcloud.datastore.Value
-
 
-
fromUrlSafe(String) - Static method in class com.google.gcloud.datastore.Cursor
-
-
Create a Cursor given its URL safe encoded form.
-
-
fromUrlSafe(String) - Static method in class com.google.gcloud.datastore.Key
-
-
Create a Key given its URL safe encoded form.
-
-
FullEntity<K extends IncompleteKey> - Class in com.google.gcloud.datastore
-
-
A full entity is a BaseEntity that with a complete set of properties.
-
-
FullEntity.Builder<K extends IncompleteKey> - Class in com.google.gcloud.datastore
-
 
-
- - - -

G

-
-
generatedKeys() - Method in interface com.google.gcloud.datastore.Batch.Response
-
 
-
generatedKeys() - Method in interface com.google.gcloud.datastore.Transaction.Response
-
 
-
generation() - Method in class com.google.gcloud.storage.Blob
-
 
-
generation() - Method in class com.google.gcloud.storage.StorageService.ComposeRequest.SourceBlob
-
 
-
generationMatch(long) - Static method in class com.google.gcloud.storage.StorageService.BlobSourceOption
-
 
-
generationMatch() - Static method in class com.google.gcloud.storage.StorageService.BlobTargetOption
-
 
-
generationNotMatch(long) - Static method in class com.google.gcloud.storage.StorageService.BlobSourceOption
-
 
-
generationNotMatch() - Static method in class com.google.gcloud.storage.StorageService.BlobTargetOption
-
 
-
get(Key) - Method in interface com.google.gcloud.datastore.DatastoreReader
-
-
Returns an Entity for the given Key or null if does not exists.
-
-
get(Key...) - Method in interface com.google.gcloud.datastore.DatastoreReader
-
-
Returns an Entity for each given Key that exists in the Datastore.
-
-
get(DatastoreServiceOptions) - Method in class com.google.gcloud.datastore.DatastoreServiceFactory
-
-
Returns a DatastoreService for the given options.
-
-
get() - Method in class com.google.gcloud.datastore.ListValue.Builder
-
 
-
get(Key) - Method in interface com.google.gcloud.datastore.Transaction
-
-
Returns an Entity for the given Key or null if does not exists.
-
-
get(Key...) - Method in interface com.google.gcloud.datastore.Transaction
-
-
Returns an Entity for each given Key that exists in the Datastore.
-
-
get() - Method in class com.google.gcloud.datastore.Value
-
 
-
get(Bucket, Map<StorageRpc.Option, ?>) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
get(StorageObject, Map<StorageRpc.Option, ?>) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
get(Bucket, Map<StorageRpc.Option, ?>) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
get(StorageObject, Map<StorageRpc.Option, ?>) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
get(String, String, StorageService.BlobSourceOption...) - Method in class com.google.gcloud.storage.BatchRequest.Builder
-
-
Retrieve metadata for the given blob.
-
-
get() - Method in class com.google.gcloud.storage.BatchResponse.Result
-
-
Returns the result.
-
-
get(String, StorageService.BucketSourceOption...) - Method in interface com.google.gcloud.storage.StorageService
-
-
Return the requested bucket or null if not found.
-
-
get(String, String, StorageService.BlobSourceOption...) - Method in interface com.google.gcloud.storage.StorageService
-
-
Return the requested blob or null if not found.
-
-
get(StorageServiceOptions) - Method in class com.google.gcloud.storage.StorageServiceFactory
-
-
Returns a StorageService for the given options.
-
-
getAppEngineProjectId() - Static method in class com.google.gcloud.ServiceOptions
-
 
-
getBlob(String) - Method in class com.google.gcloud.datastore.BaseEntity
-
-
Returns the property value as a blob.
-
-
getBlob(String) - Method in class com.google.gcloud.datastore.ProjectionEntity
-
 
-
getBoolean(String) - Method in class com.google.gcloud.datastore.BaseEntity
-
-
Returns the property value as a boolean.
-
-
getDateTime(String) - Method in class com.google.gcloud.datastore.BaseEntity
-
-
Returns the property value as a DateTime.
-
-
getDateTime(String) - Method in class com.google.gcloud.datastore.ProjectionEntity
-
 
-
getDefaultInstance() - Static method in class com.google.gcloud.ExceptionHandler
-
-
Returns an instance which retry any checked exception and abort on any runtime exception.
-
-
getDefaultInstance() - Static method in class com.google.gcloud.RetryParams
-
-
Returns an instance with the default parameters.
-
-
getDouble(String) - Method in class com.google.gcloud.datastore.BaseEntity
-
-
Returns the property value as a double.
-
-
getEntity(String) - Method in class com.google.gcloud.datastore.BaseEntity
-
-
Returns the property value as an entity.
-
-
getInitialRetryDelayMillis() - Method in class com.google.gcloud.RetryParams
-
-
Returns the initialRetryDelayMillis.
-
-
getKey(String) - Method in class com.google.gcloud.datastore.BaseEntity
-
-
Returns the property value as a Key.
-
-
getList(String) - Method in class com.google.gcloud.datastore.BaseEntity
-
-
Returns the property value as a list of values.
-
-
getLong(String) - Method in class com.google.gcloud.datastore.BaseEntity
-
-
Returns the property value as long.
-
-
getMaxRetryDelayMillis() - Method in class com.google.gcloud.RetryParams
-
-
Returns the maxRetryDelayMillis.
-
-
getNonRetriableExceptions() - Method in class com.google.gcloud.ExceptionHandler
-
 
-
getRetriableExceptions() - Method in class com.google.gcloud.ExceptionHandler
-
 
-
getRetryDelayBackoffFactor() - Method in class com.google.gcloud.RetryParams
-
-
Returns the maxRetryDelayBackoffFactor.
-
-
getRetryMaxAttempts() - Method in class com.google.gcloud.RetryParams
-
-
Returns the retryMaxAttempts.
-
-
getRetryMinAttempts() - Method in class com.google.gcloud.RetryParams
-
-
Returns the retryMinAttempts.
-
-
gets - Variable in class com.google.gcloud.spi.StorageRpc.BatchResponse
-
 
-
gets() - Method in class com.google.gcloud.storage.BatchResponse
-
-
Returns the results for the get operations using the request order.
-
-
getString(String) - Method in class com.google.gcloud.datastore.BaseEntity
-
-
Returns the property value as a string.
-
-
getTotalRetryPeriodMillis() - Method in class com.google.gcloud.RetryParams
-
-
Returns the totalRetryPeriodMillis.
-
-
getValue(String) - Method in class com.google.gcloud.datastore.BaseEntity
-
-
Returns the Value for the given property name.
-
-
googleCloudProjectId() - Static method in class com.google.gcloud.ServiceOptions
-
 
-
GqlQuery<V> - Class in com.google.gcloud.datastore
-
-
A Google Cloud Datastore GQL.
-
-
GqlQuery.Builder<V> - Class in com.google.gcloud.datastore
-
-
A GQL query builder.
-
-
gqlQueryBuilder(String) - Static method in class com.google.gcloud.datastore.Query
-
-
Returns a new GqlQuery builder.
-
-
gqlQueryBuilder(Query.ResultType<V>, String) - Static method in class com.google.gcloud.datastore.Query
-
-
Returns a new GqlQuery builder.
-
-
groupBy() - Method in class com.google.gcloud.datastore.StructuredQuery
-
 
-
groupBy(String, String...) - Method in class com.google.gcloud.datastore.StructuredQuery.ProjectionEntityQueryBuilder
-
 
-
gt(String, Value<?>) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
gt(String, String) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
gt(String, long) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
gt(String, double) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
gt(String, boolean) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
gt(String, DateTime) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
gt(String, Key) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
gt(String, Blob) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
gte(String, Value<?>) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
gte(String, String) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
gte(String, long) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
gte(String, double) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
gte(String, boolean) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
gte(String, DateTime) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
gte(String, Key) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
gte(String, Blob) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
- - - -

H

-
-
hasAncestor(Key) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
hashCode() - Method in class com.google.gcloud.datastore.BaseEntity
-
 
-
hashCode() - Method in class com.google.gcloud.datastore.Blob
-
 
-
hashCode() - Method in class com.google.gcloud.datastore.Cursor
-
 
-
hashCode() - Method in class com.google.gcloud.datastore.DatastoreServiceOptions
-
 
-
hashCode() - Method in class com.google.gcloud.datastore.DateTime
-
 
-
hashCode() - Method in class com.google.gcloud.datastore.GqlQuery
-
 
-
hashCode() - Method in class com.google.gcloud.datastore.PathElement
-
 
-
hashCode() - Method in class com.google.gcloud.datastore.Query.ResultType
-
 
-
hashCode() - Method in class com.google.gcloud.datastore.StructuredQuery.CompositeFilter
-
 
-
hashCode() - Method in class com.google.gcloud.datastore.StructuredQuery
-
 
-
hashCode() - Method in class com.google.gcloud.datastore.StructuredQuery.OrderBy
-
 
-
hashCode() - Method in class com.google.gcloud.datastore.StructuredQuery.Projection
-
 
-
hashCode() - Method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
hashCode() - Method in class com.google.gcloud.datastore.Value
-
 
-
hashCode() - Method in class com.google.gcloud.RetryParams
-
 
-
hashCode() - Method in class com.google.gcloud.ServiceOptions
-
 
-
hashCode() - Method in class com.google.gcloud.storage.Acl.Entity
-
 
-
hashCode() - Method in class com.google.gcloud.storage.Acl
-
 
-
hashCode() - Method in class com.google.gcloud.storage.BatchRequest
-
 
-
hashCode() - Method in class com.google.gcloud.storage.BatchResponse
-
 
-
hashCode() - Method in class com.google.gcloud.storage.BatchResponse.Result
-
 
-
hashCode() - Method in class com.google.gcloud.storage.Blob
-
 
-
hashCode() - Method in class com.google.gcloud.storage.Bucket.DeleteRule
-
 
-
hashCode() - Method in class com.google.gcloud.storage.Bucket
-
 
-
hashCode() - Method in class com.google.gcloud.storage.Bucket.Location
-
 
-
hashCode() - Method in class com.google.gcloud.storage.Cors
-
 
-
hashCode() - Method in class com.google.gcloud.storage.Cors.Origin
-
 
-
hashCode() - Method in class com.google.gcloud.storage.ListResult
-
 
-
hashCode() - Method in class com.google.gcloud.storage.StorageServiceOptions
-
 
-
hasId() - Method in class com.google.gcloud.datastore.Key
-
 
-
hasId() - Method in class com.google.gcloud.datastore.PathElement
-
 
-
hasIndexed() - Method in class com.google.gcloud.datastore.Value
-
 
-
hasKey() - Method in class com.google.gcloud.datastore.BaseEntity
-
-
Returns true if entity has a non-null key.
-
-
hasMeaning() - Method in class com.google.gcloud.datastore.Value
-
-
Deprecated.
-
-
hasName() - Method in class com.google.gcloud.datastore.Key
-
 
-
hasName() - Method in class com.google.gcloud.datastore.PathElement
-
 
-
host(String) - Method in class com.google.gcloud.ServiceOptions.Builder
-
 
-
host() - Method in class com.google.gcloud.ServiceOptions
-
 
-
httpRequestInitializer(HttpTransport, Set<String>) - Method in class com.google.gcloud.AuthCredentials
-
 
-
httpRequestInitializer() - Method in class com.google.gcloud.ServiceOptions
-
 
-
httpStatus() - Method in enum com.google.gcloud.datastore.DatastoreServiceException.Code
-
 
-
httpStatus() - Method in exception com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException
-
 
-
httpStatus() - Method in enum com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException.Reason
-
 
-
httpTransportFactory(ServiceOptions.HttpTransportFactory) - Method in class com.google.gcloud.ServiceOptions.Builder
-
 
-
httpTransportFactory() - Method in class com.google.gcloud.ServiceOptions
-
 
-
- - - -

I

-
-
id(long) - Method in class com.google.gcloud.datastore.Key.Builder
-
 
-
id() - Method in class com.google.gcloud.datastore.Key
-
-
Returns the key's id or null if it has a name instead.
-
-
id() - Method in class com.google.gcloud.datastore.PathElement
-
 
-
id() - Method in class com.google.gcloud.storage.Blob
-
 
-
id() - Method in class com.google.gcloud.storage.Bucket
-
 
-
IncompleteKey - Class in com.google.gcloud.datastore
-
-
An incomplete key (without a name or id).
-
-
IncompleteKey.Builder - Class in com.google.gcloud.datastore
-
 
-
indexed(boolean) - Method in class com.google.gcloud.datastore.EntityValue.Builder
-
 
-
indexed(boolean) - Method in class com.google.gcloud.datastore.ListValue.Builder
-
 
-
indexed() - Method in class com.google.gcloud.datastore.Value
-
 
-
indexPage(String) - Method in class com.google.gcloud.storage.Bucket.Builder
-
 
-
indexPage() - Method in class com.google.gcloud.storage.Bucket
-
 
-
initialRetryDelayMillis(long) - Method in class com.google.gcloud.RetryParams.Builder
-
-
Sets initialRetryDelayMillis.
-
-
instance() - Static method in class com.google.gcloud.datastore.DatastoreServiceFactory
-
-
Returns the default factory instance.
-
-
instance() - Static method in class com.google.gcloud.storage.StorageServiceFactory
-
-
Returns the default factory instance.
-
-
interceptor(ExceptionHandler.Interceptor...) - Method in class com.google.gcloud.ExceptionHandler.Builder
-
-
Adds the exception handler interceptors.
-
-
isEquals(ServiceOptions) - Method in class com.google.gcloud.ServiceOptions
-
 
-
isLive() - Method in class com.google.gcloud.storage.Bucket.IsLiveDeleteRule
-
 
-
isNull(String) - Method in class com.google.gcloud.datastore.BaseEntity
-
-
Returns true if property is instanceof NullValue.
-
-
isNull(String) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
iterator() - Method in class com.google.gcloud.storage.ListResult
-
 
-
- - - -

K

-
-
key() - Method in class com.google.gcloud.datastore.BaseEntity
-
-
Returns the associated key or null if it does not have one.
-
-
key(Key) - Method in class com.google.gcloud.datastore.Entity.Builder
-
 
-
Key - Class in com.google.gcloud.datastore
-
-
A key that is guaranteed to be complete and could be used to reference a - Google Cloud Datastore Entity.
-
-
KEY - Static variable in class com.google.gcloud.datastore.Query.ResultType
-
 
-
Key.Builder - Class in com.google.gcloud.datastore
-
 
-
KeyFactory - Class in com.google.gcloud.datastore
-
-
An helper for creating keys for a specific DatastoreService, - using its associated projectId and namespace.
-
-
KeyFactory(String) - Constructor for class com.google.gcloud.datastore.KeyFactory
-
 
-
KeyFactory(String, String) - Constructor for class com.google.gcloud.datastore.KeyFactory
-
 
-
keyQueryBuilder() - Static method in class com.google.gcloud.datastore.Query
-
-
Returns a new StructuredQuery builder for key only queries.
-
-
KeyValue - Class in com.google.gcloud.datastore
-
 
-
KeyValue(Key) - Constructor for class com.google.gcloud.datastore.KeyValue
-
 
-
KeyValue.Builder - Class in com.google.gcloud.datastore
-
 
-
KeyValue.Builder() - Constructor for class com.google.gcloud.datastore.KeyValue.Builder
-
 
-
kind() - Method in class com.google.gcloud.datastore.PathElement
-
 
-
kind() - Method in class com.google.gcloud.datastore.StructuredQuery
-
 
-
- - - -

L

-
-
le(String, Value<?>) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
le(String, String) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
le(String, long) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
le(String, double) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
le(String, boolean) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
le(String, DateTime) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
le(String, Key) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
le(String, Blob) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
length() - Method in class com.google.gcloud.datastore.Blob
-
-
Returns the size of this blob.
-
-
level() - Method in class com.google.gcloud.datastore.TransactionOption.IsolationLevel
-
 
-
limit() - Method in class com.google.gcloud.datastore.StructuredQuery
-
 
-
list(Map<StorageRpc.Option, ?>) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
list(String, Map<StorageRpc.Option, ?>) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
list(Map<StorageRpc.Option, ?>) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
list(String, Map<StorageRpc.Option, ?>) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
list(StorageService.BucketListOption...) - Method in interface com.google.gcloud.storage.StorageService
-
-
List the project's buckets.
-
-
list(String, StorageService.BlobListOption...) - Method in interface com.google.gcloud.storage.StorageService
-
-
List the bucket's blobs.
-
-
ListResult<T extends Serializable> - Class in com.google.gcloud.storage
-
-
Google Cloud storage list result.
-
-
ListResult(ListResult.NextPageFetcher<T>, String, Iterable<T>) - Constructor for class com.google.gcloud.storage.ListResult
-
 
-
ListValue - Class in com.google.gcloud.datastore
-
 
-
ListValue(List<? extends Value<?>>) - Constructor for class com.google.gcloud.datastore.ListValue
-
 
-
ListValue(Value<?>, Value<?>...) - Constructor for class com.google.gcloud.datastore.ListValue
-
 
-
ListValue.Builder - Class in com.google.gcloud.datastore
-
 
-
load(StorageObject, Map<StorageRpc.Option, ?>) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
load(StorageObject, Map<StorageRpc.Option, ?>) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
load(String, String, StorageService.BlobSourceOption...) - Method in interface com.google.gcloud.storage.StorageService
-
-
Load the content of the given blob.
-
-
location(Bucket.Location) - Method in class com.google.gcloud.storage.Bucket.Builder
-
 
-
location() - Method in class com.google.gcloud.storage.Bucket
-
 
-
LongValue - Class in com.google.gcloud.datastore
-
 
-
LongValue(long) - Constructor for class com.google.gcloud.datastore.LongValue
-
 
-
LongValue.Builder - Class in com.google.gcloud.datastore
-
 
-
lookup(DatastoreV1.LookupRequest) - Method in interface com.google.gcloud.spi.DatastoreRpc
-
 
-
lte(String, Value<?>) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
lte(String, String) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
lte(String, long) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
lte(String, double) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
lte(String, boolean) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
lte(String, DateTime) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
lte(String, Key) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
lte(String, Blob) - Static method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
- - - -

M

-
-
main(String...) - Static method in class com.google.gcloud.examples.DatastoreExample
-
 
-
main(String...) - Static method in class com.google.gcloud.examples.StorageExample
-
 
-
maxAgeSeconds(Integer) - Method in class com.google.gcloud.storage.Cors.Builder
-
 
-
maxAgeSeconds() - Method in class com.google.gcloud.storage.Cors
-
 
-
maxResults(long) - Static method in class com.google.gcloud.storage.StorageService.BlobListOption
-
 
-
maxResults(long) - Static method in class com.google.gcloud.storage.StorageService.BucketListOption
-
 
-
maxRetryDelayMillis(long) - Method in class com.google.gcloud.RetryParams.Builder
-
-
Sets maxRetryDelayMillis.
-
-
md5(String) - Method in class com.google.gcloud.storage.Blob.Builder
-
 
-
md5() - Method in class com.google.gcloud.storage.Blob
-
 
-
meaning() - Method in class com.google.gcloud.datastore.Value
-
-
Deprecated.
-
-
mediaLink() - Method in class com.google.gcloud.storage.Blob
-
 
-
mergeFrom(DatastoreV1.Query) - Method in class com.google.gcloud.datastore.StructuredQuery.KeyQueryBuilder
-
 
-
metadata(Map<String, String>) - Method in class com.google.gcloud.storage.Blob.Builder
-
 
-
metadata() - Method in class com.google.gcloud.storage.Blob
-
 
-
metageneration() - Method in class com.google.gcloud.storage.Blob
-
 
-
metageneration() - Method in class com.google.gcloud.storage.Bucket
-
 
-
metagenerationMatch(long) - Static method in class com.google.gcloud.storage.StorageService.BlobSourceOption
-
 
-
metagenerationMatch() - Static method in class com.google.gcloud.storage.StorageService.BlobTargetOption
-
 
-
metagenerationMatch(long) - Static method in class com.google.gcloud.storage.StorageService.BucketSourceOption
-
 
-
metagenerationMatch() - Static method in class com.google.gcloud.storage.StorageService.BucketTargetOption
-
 
-
metagenerationNotMatch(long) - Static method in class com.google.gcloud.storage.StorageService.BlobSourceOption
-
 
-
metagenerationNotMatch() - Static method in class com.google.gcloud.storage.StorageService.BlobTargetOption
-
 
-
metagenerationNotMatch(long) - Static method in class com.google.gcloud.storage.StorageService.BucketSourceOption
-
 
-
metagenerationNotMatch() - Static method in class com.google.gcloud.storage.StorageService.BucketTargetOption
-
 
-
methods(Iterable<Cors.Method>) - Method in class com.google.gcloud.storage.Cors.Builder
-
 
-
methods() - Method in class com.google.gcloud.storage.Cors
-
 
-
- - - -

N

-
-
name() - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
name(String) - Method in class com.google.gcloud.datastore.Key.Builder
-
 
-
name() - Method in class com.google.gcloud.datastore.Key
-
-
Returns the key's name or null if it has an id instead.
-
-
name() - Method in class com.google.gcloud.datastore.PathElement
-
 
-
name(String) - Method in class com.google.gcloud.storage.Blob.Builder
-
 
-
name() - Method in class com.google.gcloud.storage.Blob
-
 
-
name(String) - Method in class com.google.gcloud.storage.Bucket.Builder
-
 
-
name() - Method in class com.google.gcloud.storage.Bucket
-
 
-
name() - Method in class com.google.gcloud.storage.StorageService.ComposeRequest.SourceBlob
-
 
-
namedBindings() - Method in class com.google.gcloud.datastore.GqlQuery
-
-
Returns an immutable map of named bindings.
-
-
nameOrId() - Method in class com.google.gcloud.datastore.Key
-
-
Returns the key's id (as Long) or name (as String).
-
-
nameOrId() - Method in class com.google.gcloud.datastore.PathElement
-
 
-
names() - Method in class com.google.gcloud.datastore.BaseEntity
-
-
Returns the properties name.
-
-
namespace(String) - Method in class com.google.gcloud.datastore.DatastoreServiceOptions.Builder
-
 
-
namespace() - Method in class com.google.gcloud.datastore.DatastoreServiceOptions
-
 
-
namespace(String) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
namespace() - Method in class com.google.gcloud.datastore.Query
-
 
-
newBatch(BatchOption...) - Method in interface com.google.gcloud.datastore.DatastoreService
-
-
Returns a new Batch for processing multiple write operations in one request.
-
-
newInvalidRequest(String, Object...) - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
newKey() - Method in class com.google.gcloud.datastore.KeyFactory
-
 
-
newKey(String) - Method in class com.google.gcloud.datastore.KeyFactory
-
 
-
newKey(long) - Method in class com.google.gcloud.datastore.KeyFactory
-
 
-
newKeyFactory() - Method in interface com.google.gcloud.datastore.DatastoreService
-
-
Returns a new KeyFactory for this service
-
-
newTransaction(TransactionOption...) - Method in interface com.google.gcloud.datastore.DatastoreService
-
-
Returns a new Datastore transaction.
-
-
nextPage() - Method in class com.google.gcloud.storage.ListResult
-
-
Returns the results of the nextPage or null if no more result.
-
-
nextPageCursor() - Method in class com.google.gcloud.storage.ListResult
-
-
Returns the cursor for the nextPage or null if no more results.
-
-
nextQuery(DatastoreV1.QueryResultBatch) - Method in class com.google.gcloud.datastore.GqlQuery
-
 
-
nextQuery(DatastoreV1.QueryResultBatch) - Method in class com.google.gcloud.datastore.Query
-
 
-
nextQuery(DatastoreV1.QueryResultBatch) - Method in class com.google.gcloud.datastore.StructuredQuery
-
 
-
noCredentials() - Static method in class com.google.gcloud.AuthCredentials
-
 
-
noRetries() - Static method in class com.google.gcloud.RetryParams
-
 
-
notFoundPage(String) - Method in class com.google.gcloud.storage.Bucket.Builder
-
 
-
notFoundPage() - Method in class com.google.gcloud.storage.Bucket
-
 
-
now() - Static method in class com.google.gcloud.datastore.DateTime
-
 
-
NullValue - Class in com.google.gcloud.datastore
-
 
-
NullValue() - Constructor for class com.google.gcloud.datastore.NullValue
-
 
-
NullValue.Builder - Class in com.google.gcloud.datastore
-
 
-
numberArgs() - Method in class com.google.gcloud.datastore.GqlQuery
-
-
Returns an immutable list of positional bindings (using original order).
-
-
numNewerVersions() - Method in class com.google.gcloud.storage.Bucket.NumNewerVersionsDeleteRule
-
 
-
- - - -

O

-
-
of(Blob) - Static method in class com.google.gcloud.datastore.BlobValue
-
 
-
of(boolean) - Static method in class com.google.gcloud.datastore.BooleanValue
-
 
-
of(DateTime) - Static method in class com.google.gcloud.datastore.DateTimeValue
-
 
-
of(double) - Static method in class com.google.gcloud.datastore.DoubleValue
-
 
-
of(FullEntity) - Static method in class com.google.gcloud.datastore.EntityValue
-
 
-
of(Key) - Static method in class com.google.gcloud.datastore.KeyValue
-
 
-
of(List<? extends Value<?>>) - Static method in class com.google.gcloud.datastore.ListValue
-
 
-
of(Value<?>, Value<?>...) - Static method in class com.google.gcloud.datastore.ListValue
-
 
-
of(long) - Static method in class com.google.gcloud.datastore.LongValue
-
 
-
of() - Static method in class com.google.gcloud.datastore.NullValue
-
 
-
of(String, String) - Static method in class com.google.gcloud.datastore.PathElement
-
 
-
of(String, long) - Static method in class com.google.gcloud.datastore.PathElement
-
 
-
of(String) - Static method in class com.google.gcloud.datastore.StringValue
-
 
-
of(X, Y) - Static method in class com.google.gcloud.spi.StorageRpc.Tuple
-
 
-
of(String, String) - Static method in class com.google.gcloud.storage.Blob
-
 
-
of(String) - Static method in class com.google.gcloud.storage.Bucket.Location
-
 
-
of(String) - Static method in class com.google.gcloud.storage.Bucket
-
 
-
of(String) - Static method in class com.google.gcloud.storage.Bucket.StorageClass
-
 
-
of(String, String, int) - Static method in class com.google.gcloud.storage.Cors.Origin
-
 
-
of(String) - Static method in class com.google.gcloud.storage.Cors.Origin
-
 
-
of(Iterable<String>, Blob) - Static method in class com.google.gcloud.storage.StorageService.ComposeRequest
-
 
-
of(String, Iterable<String>, String) - Static method in class com.google.gcloud.storage.StorageService.ComposeRequest
-
 
-
of(String, String, Blob) - Static method in class com.google.gcloud.storage.StorageService.CopyRequest
-
 
-
of(String, String, String) - Static method in class com.google.gcloud.storage.StorageService.CopyRequest
-
 
-
ofAllAuthenticatedUsers() - Static method in class com.google.gcloud.storage.Acl.User
-
 
-
ofAllUsers() - Static method in class com.google.gcloud.storage.Acl.User
-
 
-
offset() - Method in class com.google.gcloud.datastore.StructuredQuery
-
 
-
open(StorageObject, Map<StorageRpc.Option, ?>) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
open(StorageObject, Map<StorageRpc.Option, ?>) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
options() - Method in class com.google.gcloud.BaseService
-
 
-
options() - Method in interface com.google.gcloud.Service
-
 
-
orderBy() - Method in class com.google.gcloud.datastore.StructuredQuery
-
 
-
origins(Iterable<Cors.Origin>) - Method in class com.google.gcloud.storage.Cors.Builder
-
 
-
origins() - Method in class com.google.gcloud.storage.Cors
-
 
-
owner() - Method in class com.google.gcloud.storage.Blob
-
 
-
owner() - Method in class com.google.gcloud.storage.Bucket
-
 
-
- - - -

P

-
-
patch(Bucket, Map<StorageRpc.Option, ?>) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
patch(StorageObject, Map<StorageRpc.Option, ?>) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
patch(Bucket, Map<StorageRpc.Option, ?>) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
patch(StorageObject, Map<StorageRpc.Option, ?>) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
pathDelimiter(String) - Method in class com.google.gcloud.storage.StorageServiceOptions.Builder
-
 
-
pathDelimiter() - Method in class com.google.gcloud.storage.StorageServiceOptions
-
 
-
PathElement - Class in com.google.gcloud.datastore
-
-
Represents a single element in a key's path.
-
-
populatePb(DatastoreV1.RunQueryRequest.Builder) - Method in class com.google.gcloud.datastore.GqlQuery
-
 
-
populatePb(DatastoreV1.RunQueryRequest.Builder) - Method in class com.google.gcloud.datastore.Query
-
 
-
populatePb(DatastoreV1.RunQueryRequest.Builder) - Method in class com.google.gcloud.datastore.StructuredQuery
-
 
-
predefinedAcl(StorageService.PredefinedAcl) - Static method in class com.google.gcloud.storage.StorageService.BlobTargetOption
-
 
-
predefinedAcl(StorageService.PredefinedAcl) - Static method in class com.google.gcloud.storage.StorageService.BucketTargetOption
-
 
-
predefinedDefaultObjectAcl(StorageService.PredefinedAcl) - Static method in class com.google.gcloud.storage.StorageService.BucketTargetOption
-
 
-
prefix(String) - Static method in class com.google.gcloud.storage.StorageService.BlobListOption
-
 
-
prefix(String) - Static method in class com.google.gcloud.storage.StorageService.BucketListOption
-
 
-
printUsage() - Static method in class com.google.gcloud.examples.StorageExample
-
 
-
projectId(String) - Method in class com.google.gcloud.ServiceOptions.Builder
-
 
-
projectId() - Method in class com.google.gcloud.ServiceOptions
-
 
-
projectId() - Method in class com.google.gcloud.storage.Acl.Project
-
 
-
projection() - Method in class com.google.gcloud.datastore.StructuredQuery
-
 
-
projection(StructuredQuery.Projection, StructuredQuery.Projection...) - Method in class com.google.gcloud.datastore.StructuredQuery.ProjectionEntityQueryBuilder
-
 
-
PROJECTION_ENTITY - Static variable in class com.google.gcloud.datastore.Query.ResultType
-
 
-
ProjectionEntity - Class in com.google.gcloud.datastore
-
-
A projection entity is a result of a Google Cloud Datastore projection query.
-
-
projectionEntityQueryBuilder() - Static method in class com.google.gcloud.datastore.Query
-
-
Returns a new StructuredQuery builder for projection queries.
-
-
projectRole() - Method in class com.google.gcloud.storage.Acl.Project
-
 
-
propagate() - Static method in exception com.google.gcloud.RetryHelper.RetryInterruptedException
-
-
Sets the caller thread interrupt flag and throws RetryInterruptedException.
-
-
property() - Method in class com.google.gcloud.datastore.StructuredQuery.OrderBy
-
 
-
property(String) - Static method in class com.google.gcloud.datastore.StructuredQuery.Projection
-
 
-
put(Entity...) - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
put(Entity...) - Method in interface com.google.gcloud.datastore.DatastoreService
-
-
A Datastore put (a.k.a upsert) operation.
-
-
put(Entity...) - Method in interface com.google.gcloud.datastore.DatastoreWriter
-
-
A Datastore put (a.k.a upsert) operation.
-
-
- - - -

Q

-
-
query(String) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
Query<V> - Class in com.google.gcloud.datastore
-
-
A Google Cloud Datastore query.
-
-
Query.ResultType<V> - Class in com.google.gcloud.datastore
-
-
This class represents the expected type of the result.
-
-
QueryResults<V> - Interface in com.google.gcloud.datastore
-
-
The result of a Google Cloud Datastore query submission.
-
-
queryString() - Method in class com.google.gcloud.datastore.GqlQuery
-
 
-
- - - -

R

-
-
RawValue - Class in com.google.gcloud.datastore
-
 
-
read(StorageObject, Map<StorageRpc.Option, ?>, long, int) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
read(StorageObject, Map<StorageRpc.Option, ?>, long, int) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
reader(String, String, StorageService.BlobSourceOption...) - Method in interface com.google.gcloud.storage.StorageService
-
-
Return a channel for reading the blob's content.
-
-
reason() - Method in exception com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException
-
 
-
recursive(boolean) - Static method in class com.google.gcloud.storage.StorageService.BlobListOption
-
 
-
reset() - Method in class com.google.gcloud.datastore.KeyFactory
-
-
Resets the KeyFactory to its initial state.
-
-
responseHeaders(Iterable<String>) - Method in class com.google.gcloud.storage.Cors.Builder
-
 
-
responseHeaders() - Method in class com.google.gcloud.storage.Cors
-
 
-
resultClass() - Method in class com.google.gcloud.datastore.Query.ResultType
-
 
-
resultClass() - Method in interface com.google.gcloud.datastore.QueryResults
-
-
Returns the actual class of the result's values.
-
-
retryable() - Method in enum com.google.gcloud.datastore.DatastoreServiceException.Code
-
-
Returns true if this exception is transient and the same request could be retried.
-
-
retryable() - Method in enum com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException.Reason
-
 
-
retryable() - Method in exception com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException
-
 
-
retryable() - Method in exception com.google.gcloud.storage.StorageServiceException
-
 
-
retryDelayBackoffFactor(double) - Method in class com.google.gcloud.RetryParams.Builder
-
-
Sets retryDelayBackoffFactor.
-
-
RetryHelper<V> - Class in com.google.gcloud
-
-
Utility class for retrying operations.
-
-
RetryHelper.NonRetriableException - Exception in com.google.gcloud
-
-
Thrown when RetryHelper callable has indicate it should not be retried.
-
-
RetryHelper.RetriesExhaustedException - Exception in com.google.gcloud
-
-
Thrown when a RetryHelper has attempted the maximum number of attempts allowed by RetryParams - and was not successful.
-
-
RetryHelper.RetryHelperException - Exception in com.google.gcloud
-
 
-
RetryHelper.RetryInterruptedException - Exception in com.google.gcloud
-
-
Thrown when a RetryHelper failed to complete its work due to interruption.
-
-
retryMaxAttempts(int) - Method in class com.google.gcloud.RetryParams.Builder
-
-
Sets retryMaxAttempts.
-
-
retryMinAttempts(int) - Method in class com.google.gcloud.RetryParams.Builder
-
-
Sets retryMinAttempts.
-
-
retryOn(Class<? extends Exception>...) - Method in class com.google.gcloud.ExceptionHandler.Builder
-
-
Add the exceptions to ignore/retry-on.
-
-
RetryParams - Class in com.google.gcloud
-
-
Parameters for configuring retries with an exponential backoff.
-
-
retryParams(RetryParams) - Method in class com.google.gcloud.ServiceOptions.Builder
-
 
-
retryParams() - Method in class com.google.gcloud.ServiceOptions
-
 
-
RetryParams.Builder - Class in com.google.gcloud
-
-
RetryParams builder.
-
-
role() - Method in class com.google.gcloud.storage.Acl
-
 
-
rollback() - Method in interface com.google.gcloud.datastore.Transaction
-
-
Rollback the transaction.
-
-
rollback(DatastoreV1.RollbackRequest) - Method in interface com.google.gcloud.spi.DatastoreRpc
-
 
-
run(Query<T>) - Method in interface com.google.gcloud.datastore.DatastoreReader
-
-
Submit a Query and returns its result.
-
-
run(DatastoreReaderWriter) - Method in interface com.google.gcloud.datastore.DatastoreService.TransactionCallable
-
 
-
run(Query<T>) - Method in interface com.google.gcloud.datastore.Transaction
-
-
Submit a Query and returns its result.
-
-
runInTransaction(DatastoreService.TransactionCallable<T>, TransactionOption...) - Method in interface com.google.gcloud.datastore.DatastoreService
-
-
Invokes the callback's DatastoreService.TransactionCallable.run(com.google.gcloud.datastore.DatastoreReaderWriter) method with a - DatastoreReaderWriter that is associated with a new transaction.
-
-
runQuery(DatastoreV1.RunQueryRequest) - Method in interface com.google.gcloud.spi.DatastoreRpc
-
 
-
runWithRetries(Callable<V>) - Static method in class com.google.gcloud.RetryHelper
-
 
-
runWithRetries(Callable<V>, RetryParams, ExceptionHandler) - Static method in class com.google.gcloud.RetryHelper
-
 
-
- - - -

S

-
-
scopes() - Method in class com.google.gcloud.datastore.DatastoreServiceOptions
-
 
-
scopes() - Method in class com.google.gcloud.ServiceOptions
-
 
-
scopes() - Method in class com.google.gcloud.storage.StorageServiceOptions
-
 
-
seek(int) - Method in interface com.google.gcloud.storage.BlobReadChannel
-
 
-
self() - Method in class com.google.gcloud.ServiceOptions.Builder
-
 
-
selfLink() - Method in class com.google.gcloud.storage.Blob
-
 
-
selfLink() - Method in class com.google.gcloud.storage.Bucket
-
 
-
serializable() - Static method in class com.google.gcloud.datastore.TransactionOption
-
 
-
Service<O extends ServiceOptions> - Interface in com.google.gcloud
-
 
-
ServiceOptions<R,O extends ServiceOptions<R,O>> - Class in com.google.gcloud
-
 
-
ServiceOptions(ServiceOptions.Builder<R, O, ?>) - Constructor for class com.google.gcloud.ServiceOptions
-
 
-
ServiceOptions.Builder<R,O extends ServiceOptions<R,O>,B extends ServiceOptions.Builder<R,O,B>> - Class in com.google.gcloud
-
 
-
ServiceOptions.Builder() - Constructor for class com.google.gcloud.ServiceOptions.Builder
-
 
-
ServiceOptions.Builder(ServiceOptions<R, O>) - Constructor for class com.google.gcloud.ServiceOptions.Builder
-
 
-
ServiceOptions.HttpTransportFactory - Interface in com.google.gcloud
-
 
-
serviceRpcFactory(ServiceRpcFactory<R, O>) - Method in class com.google.gcloud.ServiceOptions.Builder
-
 
-
serviceRpcFactory() - Method in class com.google.gcloud.ServiceOptions
-
 
-
ServiceRpcFactory<S,O extends ServiceOptions> - Interface in com.google.gcloud.spi
-
 
-
ServiceRpcProvider - Class in com.google.gcloud.spi
-
 
-
ServiceRpcProvider() - Constructor for class com.google.gcloud.spi.ServiceRpcProvider
-
 
-
set(List<? extends Value<?>>) - Method in class com.google.gcloud.datastore.ListValue.Builder
-
-
Copy the list of values.
-
-
set(Void) - Method in class com.google.gcloud.datastore.NullValue.Builder
-
 
-
setBinding(String, Cursor) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
setBinding(String, String...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
setBinding(String, long...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
setBinding(String, double...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
setBinding(String, boolean...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
setBinding(String, DateTime...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
setBinding(String, Key...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
setBinding(String, FullEntity<?>...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
setBinding(String, Blob...) - Method in class com.google.gcloud.datastore.GqlQuery.Builder
-
 
-
size() - Method in class com.google.gcloud.storage.Blob
-
 
-
snapshot() - Static method in class com.google.gcloud.datastore.TransactionOption
-
 
-
source(String, String) - Method in class com.google.gcloud.storage.StorageService.CopyRequest.Builder
-
 
-
sourceBlob() - Method in class com.google.gcloud.storage.StorageService.CopyRequest
-
 
-
sourceBlobs() - Method in class com.google.gcloud.storage.StorageService.ComposeRequest
-
 
-
sourceBucket() - Method in class com.google.gcloud.storage.StorageService.CopyRequest
-
 
-
sourceOptions(StorageService.BlobSourceOption...) - Method in class com.google.gcloud.storage.StorageService.CopyRequest.Builder
-
 
-
sourceOptions() - Method in class com.google.gcloud.storage.StorageService.CopyRequest
-
 
-
standard() - Static method in class com.google.gcloud.storage.Bucket.StorageClass
-
 
-
startCursor() - Method in class com.google.gcloud.datastore.StructuredQuery
-
 
-
startPageToken(String) - Static method in class com.google.gcloud.storage.StorageService.BlobListOption
-
 
-
startPageToken(String) - Static method in class com.google.gcloud.storage.StorageService.BucketListOption
-
 
-
storage(StorageServiceOptions) - Static method in class com.google.gcloud.spi.ServiceRpcProvider
-
 
-
storageClass(Bucket.StorageClass) - Method in class com.google.gcloud.storage.Bucket.Builder
-
 
-
storageClass() - Method in class com.google.gcloud.storage.Bucket
-
 
-
StorageExample - Class in com.google.gcloud.examples
-
-
An example of using the Google Cloud Storage.
-
-
StorageExample() - Constructor for class com.google.gcloud.examples.StorageExample
-
 
-
StorageRpc - Interface in com.google.gcloud.spi
-
 
-
StorageRpc.BatchRequest - Class in com.google.gcloud.spi
-
 
-
StorageRpc.BatchRequest(Iterable<StorageRpc.Tuple<StorageObject, Map<StorageRpc.Option, ?>>>, Iterable<StorageRpc.Tuple<StorageObject, Map<StorageRpc.Option, ?>>>, Iterable<StorageRpc.Tuple<StorageObject, Map<StorageRpc.Option, ?>>>) - Constructor for class com.google.gcloud.spi.StorageRpc.BatchRequest
-
 
-
StorageRpc.BatchResponse - Class in com.google.gcloud.spi
-
 
-
StorageRpc.BatchResponse(Map<StorageObject, StorageRpc.Tuple<Boolean, StorageServiceException>>, Map<StorageObject, StorageRpc.Tuple<StorageObject, StorageServiceException>>, Map<StorageObject, StorageRpc.Tuple<StorageObject, StorageServiceException>>) - Constructor for class com.google.gcloud.spi.StorageRpc.BatchResponse
-
 
-
StorageRpc.Option - Enum in com.google.gcloud.spi
-
 
-
StorageRpc.Tuple<X,Y> - Class in com.google.gcloud.spi
-
 
-
StorageRpcFactory - Interface in com.google.gcloud.spi
-
 
-
StorageService - Interface in com.google.gcloud.storage
-
-
An interface for Google Cloud Storage.
-
-
StorageService.BlobListOption - Class in com.google.gcloud.storage
-
 
-
StorageService.BlobSourceOption - Class in com.google.gcloud.storage
-
 
-
StorageService.BlobTargetOption - Class in com.google.gcloud.storage
-
 
-
StorageService.BucketListOption - Class in com.google.gcloud.storage
-
 
-
StorageService.BucketSourceOption - Class in com.google.gcloud.storage
-
 
-
StorageService.BucketTargetOption - Class in com.google.gcloud.storage
-
 
-
StorageService.ComposeRequest - Class in com.google.gcloud.storage
-
 
-
StorageService.ComposeRequest.Builder - Class in com.google.gcloud.storage
-
 
-
StorageService.ComposeRequest.Builder() - Constructor for class com.google.gcloud.storage.StorageService.ComposeRequest.Builder
-
 
-
StorageService.ComposeRequest.SourceBlob - Class in com.google.gcloud.storage
-
 
-
StorageService.CopyRequest - Class in com.google.gcloud.storage
-
 
-
StorageService.CopyRequest.Builder - Class in com.google.gcloud.storage
-
 
-
StorageService.CopyRequest.Builder() - Constructor for class com.google.gcloud.storage.StorageService.CopyRequest.Builder
-
 
-
StorageService.PredefinedAcl - Enum in com.google.gcloud.storage
-
 
-
StorageServiceException - Exception in com.google.gcloud.storage
-
-
Storage service exception.
-
-
StorageServiceException(int, String, boolean) - Constructor for exception com.google.gcloud.storage.StorageServiceException
-
 
-
StorageServiceFactory - Class in com.google.gcloud.storage
-
-
A base class for StorageService factories.
-
-
StorageServiceFactory() - Constructor for class com.google.gcloud.storage.StorageServiceFactory
-
 
-
StorageServiceOptions - Class in com.google.gcloud.storage
-
 
-
StorageServiceOptions.Builder - Class in com.google.gcloud.storage
-
 
-
StringValue - Class in com.google.gcloud.datastore
-
 
-
StringValue(String) - Constructor for class com.google.gcloud.datastore.StringValue
-
 
-
StringValue.Builder - Class in com.google.gcloud.datastore
-
 
-
StructuredQuery<V> - Class in com.google.gcloud.datastore
-
-
An implementation of a Google Cloud Datastore Query that can be constructed by providing - all the specific query elements.
-
-
StructuredQuery.CompositeFilter - Class in com.google.gcloud.datastore
-
 
-
StructuredQuery.EntityQueryBuilder - Class in com.google.gcloud.datastore
-
 
-
StructuredQuery.Filter - Class in com.google.gcloud.datastore
-
 
-
StructuredQuery.KeyQueryBuilder - Class in com.google.gcloud.datastore
-
 
-
StructuredQuery.OrderBy - Class in com.google.gcloud.datastore
-
 
-
StructuredQuery.OrderBy(String, StructuredQuery.OrderBy.Direction) - Constructor for class com.google.gcloud.datastore.StructuredQuery.OrderBy
-
 
-
StructuredQuery.OrderBy.Direction - Enum in com.google.gcloud.datastore
-
 
-
StructuredQuery.Projection - Class in com.google.gcloud.datastore
-
 
-
StructuredQuery.Projection.Aggregate - Enum in com.google.gcloud.datastore
-
 
-
StructuredQuery.ProjectionEntityQueryBuilder - Class in com.google.gcloud.datastore
-
 
-
StructuredQuery.PropertyFilter - Class in com.google.gcloud.datastore
-
 
-
submit() - Method in interface com.google.gcloud.datastore.Batch
-
-
Submit the batch to the Datastore.
-
-
- - - -

T

-
-
target(Blob) - Method in class com.google.gcloud.storage.StorageService.ComposeRequest.Builder
-
 
-
target() - Method in class com.google.gcloud.storage.StorageService.ComposeRequest
-
 
-
target(Blob) - Method in class com.google.gcloud.storage.StorageService.CopyRequest.Builder
-
 
-
target() - Method in class com.google.gcloud.storage.StorageService.CopyRequest
-
 
-
targetOptions(StorageService.BlobTargetOption...) - Method in class com.google.gcloud.storage.StorageService.ComposeRequest.Builder
-
 
-
targetOptions() - Method in class com.google.gcloud.storage.StorageService.ComposeRequest
-
 
-
targetOptions(StorageService.BlobTargetOption...) - Method in class com.google.gcloud.storage.StorageService.CopyRequest.Builder
-
 
-
targetOptions() - Method in class com.google.gcloud.storage.StorageService.CopyRequest
-
 
-
timeMillis() - Method in class com.google.gcloud.storage.Bucket.CreatedBeforeDeleteRule
-
 
-
timestampMicroseconds() - Method in class com.google.gcloud.datastore.DateTime
-
 
-
timestampMillis() - Method in class com.google.gcloud.datastore.DateTime
-
 
-
toAdd() - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
toAddAutoId() - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
toBuilder() - Method in class com.google.gcloud.datastore.BlobValue
-
 
-
toBuilder() - Method in class com.google.gcloud.datastore.BooleanValue
-
 
-
toBuilder() - Method in class com.google.gcloud.datastore.DatastoreServiceOptions
-
 
-
toBuilder() - Method in class com.google.gcloud.datastore.DateTimeValue
-
 
-
toBuilder() - Method in class com.google.gcloud.datastore.DoubleValue
-
 
-
toBuilder() - Method in class com.google.gcloud.datastore.EntityValue
-
 
-
toBuilder() - Method in class com.google.gcloud.datastore.KeyValue
-
 
-
toBuilder() - Method in class com.google.gcloud.datastore.ListValue
-
 
-
toBuilder() - Method in class com.google.gcloud.datastore.LongValue
-
 
-
toBuilder() - Method in class com.google.gcloud.datastore.NullValue
-
 
-
toBuilder() - Method in class com.google.gcloud.datastore.RawValue
-
 
-
toBuilder() - Method in class com.google.gcloud.datastore.StringValue
-
 
-
toBuilder() - Method in class com.google.gcloud.datastore.Value
-
 
-
toBuilder() - Method in class com.google.gcloud.ServiceOptions
-
 
-
toBuilder() - Method in class com.google.gcloud.storage.Blob
-
 
-
toBuilder() - Method in class com.google.gcloud.storage.Bucket
-
 
-
toBuilder() - Method in class com.google.gcloud.storage.Cors
-
 
-
toBuilder() - Method in class com.google.gcloud.storage.StorageServiceOptions
-
 
-
toByteArray() - Method in class com.google.gcloud.datastore.Blob
-
-
Returns a copy as byte array.
-
-
toCalendar() - Method in class com.google.gcloud.datastore.DateTime
-
 
-
toDate() - Method in class com.google.gcloud.datastore.DateTime
-
 
-
toDelete() - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
toDelete - Variable in class com.google.gcloud.spi.StorageRpc.BatchRequest
-
 
-
toDelete() - Method in class com.google.gcloud.storage.BatchRequest
-
 
-
toGet - Variable in class com.google.gcloud.spi.StorageRpc.BatchRequest
-
 
-
toGet() - Method in class com.google.gcloud.storage.BatchRequest
-
 
-
toMutationPb() - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
toPb() - Method in class com.google.gcloud.datastore.BaseEntity
-
 
-
toPb() - Method in class com.google.gcloud.datastore.Blob
-
 
-
toPb() - Method in class com.google.gcloud.datastore.Cursor
-
 
-
toPb() - Method in class com.google.gcloud.datastore.DateTime
-
 
-
toPb() - Method in class com.google.gcloud.datastore.GqlQuery
-
 
-
toPb() - Method in class com.google.gcloud.datastore.PathElement
-
 
-
toPb() - Method in class com.google.gcloud.datastore.StructuredQuery.CompositeFilter
-
 
-
toPb() - Method in class com.google.gcloud.datastore.StructuredQuery.Filter
-
 
-
toPb() - Method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
toPb() - Method in class com.google.gcloud.datastore.StructuredQuery
-
 
-
toPb() - Method in class com.google.gcloud.datastore.Value
-
 
-
toPut() - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
toString() - Method in class com.google.gcloud.datastore.Blob
-
 
-
toString() - Method in class com.google.gcloud.datastore.Cursor
-
 
-
toString() - Method in class com.google.gcloud.datastore.DateTime
-
 
-
toString() - Method in class com.google.gcloud.datastore.Query.ResultType
-
 
-
toString() - Method in class com.google.gcloud.datastore.Query
-
 
-
toString() - Method in class com.google.gcloud.datastore.StructuredQuery.CompositeFilter
-
 
-
toString() - Method in class com.google.gcloud.datastore.StructuredQuery.Projection
-
 
-
toString() - Method in class com.google.gcloud.datastore.StructuredQuery.PropertyFilter
-
 
-
toString() - Method in class com.google.gcloud.RetryHelper
-
 
-
toString() - Method in class com.google.gcloud.RetryParams
-
 
-
toString() - Method in class com.google.gcloud.storage.Acl.Entity
-
 
-
toString() - Method in class com.google.gcloud.storage.BatchResponse.Result
-
 
-
toString() - Method in class com.google.gcloud.storage.Blob
-
 
-
toString() - Method in class com.google.gcloud.storage.Bucket.Location
-
 
-
toString() - Method in class com.google.gcloud.storage.Bucket.StorageClass
-
 
-
toString() - Method in class com.google.gcloud.storage.Bucket
-
 
-
toString() - Method in class com.google.gcloud.storage.Cors.Origin
-
 
-
totalRetryPeriodMillis(long) - Method in class com.google.gcloud.RetryParams.Builder
-
-
Sets totalRetryPeriodMillis.
-
-
toUpdate() - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
toUpdate - Variable in class com.google.gcloud.spi.StorageRpc.BatchRequest
-
 
-
toUpdate() - Method in class com.google.gcloud.storage.BatchRequest
-
 
-
toUrlSafe() - Method in class com.google.gcloud.datastore.Cursor
-
-
Returns the cursor in an encoded form that can be used as part of a URL.
-
-
toUrlSafe() - Method in class com.google.gcloud.datastore.Key
-
-
Returns the key in an encoded form that can be used as part of a URL.
-
-
Transaction - Interface in com.google.gcloud.datastore
-
-
A Google cloud datastore transaction.
-
-
Transaction.Response - Interface in com.google.gcloud.datastore
-
 
-
TransactionOption - Class in com.google.gcloud.datastore
-
 
-
TransactionOption.ForceWrites - Class in com.google.gcloud.datastore
-
 
-
TransactionOption.ForceWrites(boolean) - Constructor for class com.google.gcloud.datastore.TransactionOption.ForceWrites
-
 
-
TransactionOption.IsolationLevel - Class in com.google.gcloud.datastore
-
 
-
TransactionOption.IsolationLevel(TransactionOption.IsolationLevel.Level) - Constructor for class com.google.gcloud.datastore.TransactionOption.IsolationLevel
-
 
-
TransactionOption.IsolationLevel.Level - Enum in com.google.gcloud.datastore
-
 
-
type() - Method in class com.google.gcloud.datastore.Value
-
 
-
type() - Method in class com.google.gcloud.storage.Acl.Entity
-
 
-
type() - Method in class com.google.gcloud.storage.Bucket.DeleteRule
-
 
-
- - - -

U

-
-
update(Entity...) - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
update(Entity...) - Method in interface com.google.gcloud.datastore.DatastoreService
-
-
A Datastore update operation.
-
-
update(Entity...) - Method in interface com.google.gcloud.datastore.DatastoreWriter
-
-
A Datastore update operation.
-
-
update(Blob, StorageService.BlobTargetOption...) - Method in class com.google.gcloud.storage.BatchRequest.Builder
-
-
Update the given blob.
-
-
update(Bucket, StorageService.BucketTargetOption...) - Method in interface com.google.gcloud.storage.StorageService
-
-
Update bucket information.
-
-
update(Blob, StorageService.BlobTargetOption...) - Method in interface com.google.gcloud.storage.StorageService
-
-
Update blob information.
-
-
updates - Variable in class com.google.gcloud.spi.StorageRpc.BatchResponse
-
 
-
updates() - Method in class com.google.gcloud.storage.BatchResponse
-
-
Returns the results for the update operations using the request order.
-
-
updateTime() - Method in class com.google.gcloud.storage.Blob
-
 
-
us() - Static method in class com.google.gcloud.storage.Bucket.Location
-
 
-
- - - -

V

-
-
validateActive() - Method in class com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
-
Value<V> - Class in com.google.gcloud.datastore
-
-
Base class for all Google Cloud Datastore value types.
-
-
value() - Method in enum com.google.gcloud.spi.StorageRpc.Option
-
 
-
value() - Method in class com.google.gcloud.storage.Acl.Entity
-
 
-
value() - Method in class com.google.gcloud.storage.Bucket.Location
-
 
-
value() - Method in class com.google.gcloud.storage.Bucket.StorageClass
-
 
-
value() - Method in class com.google.gcloud.storage.Cors.Origin
-
 
-
valueOf(String) - Static method in enum com.google.gcloud.datastore.DatastoreServiceException.Code
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.google.gcloud.datastore.StructuredQuery.OrderBy.Direction
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.google.gcloud.datastore.StructuredQuery.Projection.Aggregate
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.google.gcloud.datastore.TransactionOption.IsolationLevel.Level
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.google.gcloud.datastore.ValueType
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.google.gcloud.ExceptionHandler.Interceptor.RetryResult
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException.Reason
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.google.gcloud.spi.StorageRpc.Option
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.google.gcloud.storage.Acl.Entity.Type
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.google.gcloud.storage.Acl.Role
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.google.gcloud.storage.Bucket.DeleteRule.Type
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.google.gcloud.storage.Bucket.Location.Option
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.google.gcloud.storage.Bucket.StorageClass.Option
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.google.gcloud.storage.Cors.Method
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum com.google.gcloud.storage.StorageService.PredefinedAcl
-
-
Returns the enum constant of this type with the specified name.
-
-
values() - Static method in enum com.google.gcloud.datastore.DatastoreServiceException.Code
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.google.gcloud.datastore.StructuredQuery.OrderBy.Direction
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.google.gcloud.datastore.StructuredQuery.Projection.Aggregate
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.google.gcloud.datastore.TransactionOption.IsolationLevel.Level
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.google.gcloud.datastore.ValueType
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.google.gcloud.ExceptionHandler.Interceptor.RetryResult
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException.Reason
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.google.gcloud.spi.StorageRpc.Option
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.google.gcloud.storage.Acl.Entity.Type
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.google.gcloud.storage.Acl.Role
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.google.gcloud.storage.Bucket.DeleteRule.Type
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.google.gcloud.storage.Bucket.Location.Option
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.google.gcloud.storage.Bucket.StorageClass.Option
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.google.gcloud.storage.Cors.Method
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum com.google.gcloud.storage.StorageService.PredefinedAcl
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
ValueType - Enum in com.google.gcloud.datastore
-
-
The type of a Datastore property.
-
-
versioningEnabled(Boolean) - Method in class com.google.gcloud.storage.Bucket.Builder
-
 
-
versioningEnabled() - Method in class com.google.gcloud.storage.Bucket
-
 
-
- - - -

W

-
-
write(String, byte[], int, StorageObject, long, int, boolean) - Method in class com.google.gcloud.spi.DefaultStorageRpc
-
 
-
write(String, byte[], int, StorageObject, long, int, boolean) - Method in interface com.google.gcloud.spi.StorageRpc
-
 
-
writer(Blob, StorageService.BlobTargetOption...) - Method in interface com.google.gcloud.storage.StorageService
-
-
Create a blob and return a channel for writing its content.
-
-
- - - -

X

-
-
x() - Method in class com.google.gcloud.spi.StorageRpc.Tuple
-
 
-
- - - -

Y

-
-
y() - Method in class com.google.gcloud.spi.StorageRpc.Tuple
-
 
-
-A B C D E F G H I K L M N O P Q R S T U V W X Y 
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/index.html b/apidocs/index.html deleted file mode 100644 index b2e1aeb15885..000000000000 --- a/apidocs/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - -GCloud Java 0.0.4 API - - - - - - - - - -<noscript> -<div>JavaScript is disabled on your browser.</div> -</noscript> -<h2>Frame Alert</h2> -<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> - - - diff --git a/apidocs/overview-frame.html b/apidocs/overview-frame.html deleted file mode 100644 index a43e859a42c7..000000000000 --- a/apidocs/overview-frame.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -Overview List (GCloud Java 0.0.4 API) - - - - -
All Classes
-
-

Packages

- -
-

 

- - diff --git a/apidocs/overview-summary.html b/apidocs/overview-summary.html deleted file mode 100644 index e790cb46663e..000000000000 --- a/apidocs/overview-summary.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -Overview (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

GCloud Java 0.0.4 API

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Packages 
PackageDescription
com.google.gcloud 
com.google.gcloud.datastore -
A client to the Google Cloud Datastore.
-
com.google.gcloud.examples 
com.google.gcloud.spi 
com.google.gcloud.storage -
A client to Google Cloud Storage.
-
-
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/overview-tree.html b/apidocs/overview-tree.html deleted file mode 100644 index 508072d03053..000000000000 --- a/apidocs/overview-tree.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - - - -Class Hierarchy (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Hierarchy For All Packages

-Package Hierarchies: - -
-
-

Class Hierarchy

- -

Interface Hierarchy

- -

Enum Hierarchy

- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/package-list b/apidocs/package-list deleted file mode 100644 index a46b575328b1..000000000000 --- a/apidocs/package-list +++ /dev/null @@ -1,5 +0,0 @@ -com.google.gcloud -com.google.gcloud.datastore -com.google.gcloud.examples -com.google.gcloud.spi -com.google.gcloud.storage diff --git a/apidocs/resources/background.gif b/apidocs/resources/background.gif deleted file mode 100644 index f471940fde2f39ef8943a6af9569bcf986b1579b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2313 zcmV+k3HJ6!Nk%w1VKM-40OkMy00030|NlK(aXwsfKV5S}VtGJbbVOr%L0@%CZH88Q zl{{NzcR^uxNo<2iYk@pjY)*5FJz8x~bc{)B zfk z+1T6M-s9WdW8dcJ-wO*3@9+W*5AY543-j^$^!EPz_4eHZ2#>)41`h@dc!2OAgN6$a zCS2I?;lqgx6IR4nkpTe;1RN0f=zxMq2O=q`94V5d$&e>Unta)^<;;^G3>e7yp=ZvW z6DIW3xpSvaogXF?_4%`@(V;s}NR^5J!3hrtJV@1QRV&r5S*L!zYE|rss${iFkg&!? zTN5V#)~=bmMorwgZsEpdOE)iExo+FO-8;8Kga{=HbSQCnF=E6W3?o*|ID%uwi5**> zJXy127Y9m+=HQ|PhXWi+xNwoWv}n_%Pq%(e+H~mGqhq5kv4Mo|-n~g|7!F*xZ{xv< zCpXS~dGg^IGK?4@J-T%b(XnUHFul6n<@2&4)zzyO2) z3Q8`i0+UKY*`$}e9mmp;tg*))`|PsK1|hAo%u0K$vDwm4gaSkm0j{`26k#qAKmbuhxZ#cquDR>B zD{s8+&TH-uNg$C#68QG}1HMBHfrP&L@@w$F_!itRzXdCN@V|LDAu%3!IDtq1#1UV7 z#1RxvT=B(DWbCoU5l=ia$Pp`Hgb_?Mp@hmtxZDI2N-)v#$}PXVvdm1d>@v(v`0TUJ zF)Pu89(q`zv=w^nVTIF3@3BYIPA}c`(@ZCAwbNBEt@PDUKe5CTR8aB66IE1!w%Amt zy+jpcn~k>GZpVFg+H6x{_uOksvBlq0OyT$6TyQZ37k(cOxZr|JEx1sGm<(M9gH z-~PMqyn|tT=))UN`|-FFFUA#KToK0fUOaz=7}Z~KeHhVC&%O27cTfHQ^WBU8z4p&T zp#>D|V}XShTD;Hx745Iz{`>K-Z$A|7!*Boo{mY;G21vjH8t{M!OrQc6$iN0V@PQDF zpadsK!3tXNf*8!81~qnXWuHZ)kytd=_y+ADWvw31ouV;CdZ#ya*(l7-A-C-Y^+iit8O zBy3*`Ls$|5Hn4m_^I^|C7{m7EFn|5vTk;|oywIgCc9Bb*=L+Y$)M>9GC<|HGs@6NB zHLY%03!dDf=eDRt2O6lVSFRcsuWZEwU?=z$CZ0W?#VJfdN>HG(l%oKpyiftJc|Y)xkjSJYCrQal-0PC~()T9xwF!Jf zVi1UA#3BBbh(i8r5&v#Pz!cF41KjbCc?4u2@@Q~oKLirt2TM30;y6b+zyX2`Yl9u; z`0$3;v0-YUp&7NdPT#q`cZlbij$jvbRk6R>8g*>}*b9E+WDwmpHAAxYzyT aU_pX{M6b8i>#Dq3onfZy}_nli%!Q$ZV%e&!tN2 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 YpWXKgmku8Vj|K)Vje`mzEKCg608Q#dYybcN diff --git a/apidocs/serialized-form.html b/apidocs/serialized-form.html deleted file mode 100644 index c7dde85901d1..000000000000 --- a/apidocs/serialized-form.html +++ /dev/null @@ -1,1702 +0,0 @@ - - - - - - -Serialized Form (GCloud Java 0.0.4 API) - - - - - - - -
- - - - - -
- - -
-

Serialized Form

-
-
- -
- -
- - - - - -
- - -

Copyright © 2015 Google. All rights reserved.

- - diff --git a/apidocs/stylesheet.css b/apidocs/stylesheet.css deleted file mode 100644 index 0aeaa97fe05f..000000000000 --- a/apidocs/stylesheet.css +++ /dev/null @@ -1,474 +0,0 @@ -/* Javadoc style sheet */ -/* -Overall document style -*/ -body { - background-color:#ffffff; - color:#353833; - font-family:Arial, Helvetica, sans-serif; - font-size:76%; - margin:0; -} -a:link, a:visited { - text-decoration:none; - color:#4c6b87; -} -a:hover, a:focus { - text-decoration:none; - color:#bb7a2a; -} -a:active { - text-decoration:none; - color:#4c6b87; -} -a[name] { - color:#353833; -} -a[name]:hover { - text-decoration:none; - color:#353833; -} -pre { - font-size:1.3em; -} -h1 { - font-size:1.8em; -} -h2 { - font-size:1.5em; -} -h3 { - font-size:1.4em; -} -h4 { - font-size:1.3em; -} -h5 { - font-size:1.2em; -} -h6 { - font-size:1.1em; -} -ul { - list-style-type:disc; -} -code, tt { - font-size:1.2em; -} -dt code { - font-size:1.2em; -} -table tr td dt code { - font-size:1.2em; - vertical-align:top; -} -sup { - font-size:.6em; -} -/* -Document title and Copyright styles -*/ -.clear { - clear:both; - height:0px; - overflow:hidden; -} -.aboutLanguage { - float:right; - padding:0px 21px; - font-size:.8em; - z-index:200; - margin-top:-7px; -} -.legalCopy { - margin-left:.5em; -} -.bar a, .bar a:link, .bar a:visited, .bar a:active { - color:#FFFFFF; - text-decoration:none; -} -.bar a:hover, .bar a:focus { - color:#bb7a2a; -} -.tab { - background-color:#0066FF; - background-image:url(resources/titlebar.gif); - background-position:left top; - background-repeat:no-repeat; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} -/* -Navigation bar styles -*/ -.bar { - background-image:url(resources/background.gif); - background-repeat:repeat-x; - color:#FFFFFF; - padding:.8em .5em .4em .8em; - height:auto;/*height:1.8em;*/ - font-size:1em; - margin:0; -} -.topNav { - background-image:url(resources/background.gif); - background-repeat:repeat-x; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; -} -.bottomNav { - margin-top:10px; - background-image:url(resources/background.gif); - background-repeat:repeat-x; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; -} -.subNav { - background-color:#dee3e9; - border-bottom:1px solid #9eadc0; - float:left; - width:100%; - overflow:hidden; -} -.subNav div { - clear:left; - float:left; - padding:0 0 5px 6px; -} -ul.navList, ul.subNavList { - float:left; - margin:0 25px 0 0; - padding:0; -} -ul.navList li{ - list-style:none; - float:left; - padding:3px 6px; -} -ul.subNavList li{ - list-style:none; - float:left; - font-size:90%; -} -.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { - color:#FFFFFF; - text-decoration:none; -} -.topNav a:hover, .bottomNav a:hover { - text-decoration:none; - color:#bb7a2a; -} -.navBarCell1Rev { - background-image:url(resources/tab.gif); - background-color:#a88834; - color:#FFFFFF; - margin: auto 5px; - border:1px solid #c9aa44; -} -/* -Page header and footer styles -*/ -.header, .footer { - clear:both; - margin:0 20px; - padding:5px 0 0 0; -} -.indexHeader { - margin:10px; - position:relative; -} -.indexHeader h1 { - font-size:1.3em; -} -.title { - color:#2c4557; - margin:10px 0; -} -.subTitle { - margin:5px 0 0 0; -} -.header ul { - margin:0 0 25px 0; - padding:0; -} -.footer ul { - margin:20px 0 5px 0; -} -.header ul li, .footer ul li { - list-style:none; - font-size:1.2em; -} -/* -Heading styles -*/ -div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { - background-color:#dee3e9; - border-top:1px solid #9eadc0; - border-bottom:1px solid #9eadc0; - margin:0 0 6px -8px; - padding:2px 5px; -} -ul.blockList ul.blockList ul.blockList li.blockList h3 { - background-color:#dee3e9; - border-top:1px solid #9eadc0; - border-bottom:1px solid #9eadc0; - margin:0 0 6px -8px; - padding:2px 5px; -} -ul.blockList ul.blockList li.blockList h3 { - padding:0; - margin:15px 0; -} -ul.blockList li.blockList h2 { - padding:0px 0 20px 0; -} -/* -Page layout container styles -*/ -.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { - clear:both; - padding:10px 20px; - position:relative; -} -.indexContainer { - margin:10px; - position:relative; - font-size:1.0em; -} -.indexContainer h2 { - font-size:1.1em; - padding:0 0 3px 0; -} -.indexContainer ul { - margin:0; - padding:0; -} -.indexContainer ul li { - list-style:none; -} -.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { - font-size:1.1em; - font-weight:bold; - margin:10px 0 0 0; - color:#4E4E4E; -} -.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { - margin:10px 0 10px 20px; -} -.serializedFormContainer dl.nameValue dt { - margin-left:1px; - font-size:1.1em; - display:inline; - font-weight:bold; -} -.serializedFormContainer dl.nameValue dd { - margin:0 0 0 1px; - font-size:1.1em; - display:inline; -} -/* -List styles -*/ -ul.horizontal li { - display:inline; - font-size:0.9em; -} -ul.inheritance { - margin:0; - padding:0; -} -ul.inheritance li { - display:inline; - list-style:none; -} -ul.inheritance li ul.inheritance { - margin-left:15px; - padding-left:15px; - padding-top:1px; -} -ul.blockList, ul.blockListLast { - margin:10px 0 10px 0; - padding:0; -} -ul.blockList li.blockList, ul.blockListLast li.blockList { - list-style:none; - margin-bottom:25px; -} -ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { - padding:0px 20px 5px 10px; - border:1px solid #9eadc0; - background-color:#f9f9f9; -} -ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { - padding:0 0 5px 8px; - background-color:#ffffff; - border:1px solid #9eadc0; - border-top:none; -} -ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { - margin-left:0; - padding-left:0; - padding-bottom:15px; - border:none; - border-bottom:1px solid #9eadc0; -} -ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { - list-style:none; - border-bottom:none; - padding-bottom:0; -} -table tr td dl, table tr td dl dt, table tr td dl dd { - margin-top:0; - margin-bottom:1px; -} -/* -Table styles -*/ -.contentContainer table, .classUseContainer table, .constantValuesContainer table { - border-bottom:1px solid #9eadc0; - width:100%; -} -.contentContainer ul li table, .classUseContainer ul li table, .constantValuesContainer ul li table { - width:100%; -} -.contentContainer .description table, .contentContainer .details table { - border-bottom:none; -} -.contentContainer ul li table th.colOne, .contentContainer ul li table th.colFirst, .contentContainer ul li table th.colLast, .classUseContainer ul li table th, .constantValuesContainer ul li table th, .contentContainer ul li table td.colOne, .contentContainer ul li table td.colFirst, .contentContainer ul li table td.colLast, .classUseContainer ul li table td, .constantValuesContainer ul li table td{ - vertical-align:top; - padding-right:20px; -} -.contentContainer ul li table th.colLast, .classUseContainer ul li table th.colLast,.constantValuesContainer ul li table th.colLast, -.contentContainer ul li table td.colLast, .classUseContainer ul li table td.colLast,.constantValuesContainer ul li table td.colLast, -.contentContainer ul li table th.colOne, .classUseContainer ul li table th.colOne, -.contentContainer ul li table td.colOne, .classUseContainer ul li table td.colOne { - padding-right:3px; -} -.overviewSummary caption, .packageSummary caption, .contentContainer ul.blockList li.blockList caption, .summary caption, .classUseContainer caption, .constantValuesContainer caption { - position:relative; - text-align:left; - background-repeat:no-repeat; - color:#FFFFFF; - font-weight:bold; - clear:none; - overflow:hidden; - padding:0px; - margin:0px; -} -caption a:link, caption a:hover, caption a:active, caption a:visited { - color:#FFFFFF; -} -.overviewSummary caption span, .packageSummary caption span, .contentContainer ul.blockList li.blockList caption span, .summary caption span, .classUseContainer caption span, .constantValuesContainer caption span { - white-space:nowrap; - padding-top:8px; - padding-left:8px; - display:block; - float:left; - background-image:url(resources/titlebar.gif); - height:18px; -} -.overviewSummary .tabEnd, .packageSummary .tabEnd, .contentContainer ul.blockList li.blockList .tabEnd, .summary .tabEnd, .classUseContainer .tabEnd, .constantValuesContainer .tabEnd { - width:10px; - background-image:url(resources/titlebar_end.gif); - background-repeat:no-repeat; - background-position:top right; - position:relative; - float:left; -} -ul.blockList ul.blockList li.blockList table { - margin:0 0 12px 0px; - width:100%; -} -.tableSubHeadingColor { - background-color: #EEEEFF; -} -.altColor { - background-color:#eeeeef; -} -.rowColor { - background-color:#ffffff; -} -.overviewSummary td, .packageSummary td, .contentContainer ul.blockList li.blockList td, .summary td, .classUseContainer td, .constantValuesContainer td { - text-align:left; - padding:3px 3px 3px 7px; -} -th.colFirst, th.colLast, th.colOne, .constantValuesContainer th { - background:#dee3e9; - border-top:1px solid #9eadc0; - border-bottom:1px solid #9eadc0; - text-align:left; - padding:3px 3px 3px 7px; -} -td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { - font-weight:bold; -} -td.colFirst, th.colFirst { - border-left:1px solid #9eadc0; - white-space:nowrap; -} -td.colLast, th.colLast { - border-right:1px solid #9eadc0; -} -td.colOne, th.colOne { - border-right:1px solid #9eadc0; - border-left:1px solid #9eadc0; -} -table.overviewSummary { - padding:0px; - margin-left:0px; -} -table.overviewSummary td.colFirst, table.overviewSummary th.colFirst, -table.overviewSummary td.colOne, table.overviewSummary th.colOne { - width:25%; - vertical-align:middle; -} -table.packageSummary td.colFirst, table.overviewSummary th.colFirst { - width:25%; - vertical-align:middle; -} -/* -Content styles -*/ -.description pre { - margin-top:0; -} -.deprecatedContent { - margin:0; - padding:10px 0; -} -.docSummary { - padding:0; -} -/* -Formatting effect styles -*/ -.sourceLineNo { - color:green; - padding:0 30px 0 0; -} -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:.9em; -} -.block { - display:block; - margin:3px 0 0 0; -} -.strong { - font-weight:bold; -} diff --git a/changelog.html b/changelog.html deleted file mode 100644 index bf3f1493fc65..000000000000 --- a/changelog.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - - - - - - GCloud Java – Change Log Report - - - - - - - - - - - - - -
- - - - - -
-
- -
- - -
- -
-

Change Log Report

-

Total number of changed sets: 1

-
-

Changes between 2015-04-19 and 2015-05-20

-

Total commits: 62
Total number of files changed: 84

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TimestampAuthorDetails
2015-05-18 10:56:25aozarov <aozarov@gmail.com>src/test/java/com/google/gcloud/storage/ListResultTest.java v 8cfb28657c714f8c7768fcd0240c32896f5ae8e3

fix merge conflict
2015-05-17 18:59:52ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v 8fec7f340c50b2d53eb4e79ab536b309159060d4
src/main/java/com/google/gcloud/storage/BlobReadChannelImpl.java v 8fec7f340c50b2d53eb4e79ab536b309159060d4
src/main/java/com/google/gcloud/storage/BlobWriterChannelImpl.java v 8fec7f340c50b2d53eb4e79ab536b309159060d4
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v 8fec7f340c50b2d53eb4e79ab536b309159060d4

extract reader/writer impl, increase their default buffer and minimize footprint when possible
2015-05-15 21:44:15ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/storage/ListResult.java v 87792edc42c5ca2d2ad23820b93fbd737bc51668
src/test/java/com/google/gcloud/storage/SerializationTest.java v 87792edc42c5ca2d2ad23820b93fbd737bc51668

fix test and add some javadoc
2015-05-15 17:42:04aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/ServiceOptions.java v ce107b2c98a18704fcd02c5064e5f3ab3ec136e3
src/main/java/com/google/gcloud/datastore/DatastoreServiceOptions.java v ce107b2c98a18704fcd02c5064e5f3ab3ec136e3
src/main/java/com/google/gcloud/storage/BatchRequest.java v ce107b2c98a18704fcd02c5064e5f3ab3ec136e3
src/main/java/com/google/gcloud/storage/BatchResponse.java v ce107b2c98a18704fcd02c5064e5f3ab3ec136e3
src/main/java/com/google/gcloud/storage/ListResult.java v ce107b2c98a18704fcd02c5064e5f3ab3ec136e3
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v ce107b2c98a18704fcd02c5064e5f3ab3ec136e3
src/main/java/com/google/gcloud/storage/StorageServiceOptions.java v ce107b2c98a18704fcd02c5064e5f3ab3ec136e3

adding an option to page from ListResult
2015-05-15 15:27:44aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/storage/Bucket.java v 8f08f2d6aaf1074a11701363b1dc22243f2e2b19
src/main/java/com/google/gcloud/storage/Cors.java v 8f08f2d6aaf1074a11701363b1dc22243f2e2b19
src/test/java/com/google/gcloud/storage/BlobTest.java v 8f08f2d6aaf1074a11701363b1dc22243f2e2b19
src/test/java/com/google/gcloud/storage/BucketTest.java v 8f08f2d6aaf1074a11701363b1dc22243f2e2b19

add tests for bucket and blob
2015-05-15 14:29:34aozarov <aozarov@gmail.com>src/test/java/com/google/gcloud/datastore/BaseEntityTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/BlobValueTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/BooleanValueTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/DatastoreHelperTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/DatastoreServiceExceptionTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/DatastoreServiceOptionsTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/DatastoreServiceTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/DateTimeValueTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/DoubleValueTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/EntityValueTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/KeyFactoryTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/KeyValueTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/ListValueTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/LongValueTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/NullValueTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/ProjectionEntityTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/RawValueTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/StringValueTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/datastore/ValueTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/storage/BatchRequestTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/storage/BatchResponseTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/storage/CorsTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/storage/ListResultTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb
src/test/java/com/google/gcloud/storage/OptionTest.java v 28c9010c8b60e62577fa2dccb9153e200b7dffcb

s/junit.framework.TestCase/org.junit.Assert/g
2015-05-15 09:46:28aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/storage/Acl.java v ccd84c30ee9370261b81c25a84347198e2c4312b

make Project constructor public
2015-05-14 20:30:19ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/storage/BatchResponse.java v ed351d47806f3a730e821cc58e3905adb1670397
src/main/java/com/google/gcloud/storage/ListResult.java v ed351d47806f3a730e821cc58e3905adb1670397
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v ed351d47806f3a730e821cc58e3905adb1670397
src/test/java/com/google/gcloud/storage/BatchRequestTest.java v ed351d47806f3a730e821cc58e3905adb1670397
src/test/java/com/google/gcloud/storage/BatchResponseTest.java v ed351d47806f3a730e821cc58e3905adb1670397
src/test/java/com/google/gcloud/storage/CorsTest.java v ed351d47806f3a730e821cc58e3905adb1670397
src/test/java/com/google/gcloud/storage/ListResultTest.java v ed351d47806f3a730e821cc58e3905adb1670397
src/test/java/com/google/gcloud/storage/OptionTest.java v ed351d47806f3a730e821cc58e3905adb1670397
src/test/java/com/google/gcloud/storage/SerializationTest.java v ed351d47806f3a730e821cc58e3905adb1670397

basic tests
2015-05-14 17:33:08aozarov <aozarov@gmail.com>src/test/java/com/google/gcloud/storage/BatchRequestTest.java v b941c0809ccd5eba269a1d2fa8090233c5cdfdbd

work in progress
2015-05-14 10:08:43aozarov <aozarov@gmail.com>src/test/java/com/google/gcloud/storage/BatchRequestTest.java v faab59d5f1a428c9c41547d71e668ef6cd53cb36

adding BatchRequestTest
2015-05-13 19:02:22aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/storage/Acl.java v 3fdecb69cb866c424a6ab0a6d1fb6756f528b453
src/test/java/com/google/gcloud/storage/AclTest.java v 3fdecb69cb866c424a6ab0a6d1fb6756f528b453

acl test
2015-05-13 17:45:56aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v 0299172485f5f06dd36a308ade6ef0cf2b784145

add apiary references to all example actions
2015-05-13 16:28:29aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/storage/Blob.java v 96b3ada3ece83a95e42489715d760a66f9494f05
src/main/java/com/google/gcloud/storage/Bucket.java v 96b3ada3ece83a95e42489715d760a66f9494f05
src/main/java/com/google/gcloud/storage/StorageService.java v 96b3ada3ece83a95e42489715d760a66f9494f05

Replace given null values with Apiary nulls and provide doesNotExists option
2015-05-12 22:02:20ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v 4b8bd324d670988430c9634ce9271cc87cb075b7
src/main/java/com/google/gcloud/storage/BatchResponse.java v 4b8bd324d670988430c9634ce9271cc87cb075b7

add comments to example
2015-05-12 19:26:24ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/storage/Acl.java v 17ec594784481c17f380499f2586ff15ec6b78db
src/main/java/com/google/gcloud/storage/BatchRequest.java v 17ec594784481c17f380499f2586ff15ec6b78db
src/main/java/com/google/gcloud/storage/BatchResponse.java v 17ec594784481c17f380499f2586ff15ec6b78db
src/main/java/com/google/gcloud/storage/Blob.java v 17ec594784481c17f380499f2586ff15ec6b78db
src/main/java/com/google/gcloud/storage/Bucket.java v 17ec594784481c17f380499f2586ff15ec6b78db
src/main/java/com/google/gcloud/storage/Cors.java v 17ec594784481c17f380499f2586ff15ec6b78db
src/main/java/com/google/gcloud/storage/ListResult.java v 17ec594784481c17f380499f2586ff15ec6b78db
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v 17ec594784481c17f380499f2586ff15ec6b78db
src/test/java/com/google/gcloud/storage/SerializationTest.java v 17ec594784481c17f380499f2586ff15ec6b78db

add serialization test
2015-05-12 14:02:30aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v 6c59a54b8bdd75d899981aa10da6c4887da72b91
src/main/java/com/google/gcloud/storage/Blob.java v 6c59a54b8bdd75d899981aa10da6c4887da72b91
src/main/java/com/google/gcloud/storage/Bucket.java v 6c59a54b8bdd75d899981aa10da6c4887da72b91
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v 6c59a54b8bdd75d899981aa10da6c4887da72b91

add metadata update to example and fix builder user-settable fields
2015-05-11 17:12:38aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/storage/BatchResponse.java v 9761b3c91d96f83a7fc801b076f8daca696f8959
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v 9761b3c91d96f83a7fc801b076f8daca696f8959

make batch gets return null as well on 404
2015-05-11 16:49:12aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/storage/StorageService.java v 535b0a17db8e3dd4249c311b847200b991798c19

add another shortcut for ComposeRequest
2015-05-11 16:45:00aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/storage/StorageService.java v 4481a4a580898c49cc902cabf58f51c7a05afb66

add another shortcut for CopyRequest
2015-05-11 16:32:32aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v 6e4a2e4e8ad813311a183454437e998074f83f65
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v 6e4a2e4e8ad813311a183454437e998074f83f65
src/main/java/com/google/gcloud/storage/StorageService.java v 6e4a2e4e8ad813311a183454437e998074f83f65
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v 6e4a2e4e8ad813311a183454437e998074f83f65
src/main/java/com/google/gcloud/storage/package-info.java v 6e4a2e4e8ad813311a183454437e998074f83f65

complete package-info and make get return null on 404
2015-05-08 17:41:10aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/storage/package-info.java v 92c6df8f5110c7088d7f66af0dc4ca317107c697

some doc
2015-05-08 17:17:07aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v c87bd8db392749a797a5db4fe3d32a455142731f
src/main/java/com/google/gcloud/storage/BatchRequest.java v c87bd8db392749a797a5db4fe3d32a455142731f
src/main/java/com/google/gcloud/storage/BatchResponse.java v c87bd8db392749a797a5db4fe3d32a455142731f
src/main/java/com/google/gcloud/storage/Option.java v c87bd8db392749a797a5db4fe3d32a455142731f
src/main/java/com/google/gcloud/storage/StorageService.java v c87bd8db392749a797a5db4fe3d32a455142731f
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v c87bd8db392749a797a5db4fe3d32a455142731f

change sourceOptions
2015-05-08 13:29:32aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v 19f155b786f53da6dc88b95077915a052f90ca98
src/main/java/com/google/gcloud/storage/Blob.java v 19f155b786f53da6dc88b95077915a052f90ca98
src/main/java/com/google/gcloud/storage/Bucket.java v 19f155b786f53da6dc88b95077915a052f90ca98

work in progress
2015-05-08 13:03:36aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v d50ccf67dec88bb059455e673d675a5edd621155
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v d50ccf67dec88bb059455e673d675a5edd621155

fix example
2015-05-07 20:29:35ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/datastore/DatastoreServiceFactory.java v 2e22d5bb756e3a9e0745b0f30476bed907d8fff2
src/main/java/com/google/gcloud/storage/Acl.java v 2e22d5bb756e3a9e0745b0f30476bed907d8fff2
src/main/java/com/google/gcloud/storage/BatchRequest.java v 2e22d5bb756e3a9e0745b0f30476bed907d8fff2
src/main/java/com/google/gcloud/storage/Blob.java v 2e22d5bb756e3a9e0745b0f30476bed907d8fff2
src/main/java/com/google/gcloud/storage/Bucket.java v 2e22d5bb756e3a9e0745b0f30476bed907d8fff2
src/main/java/com/google/gcloud/storage/Cors.java v 2e22d5bb756e3a9e0745b0f30476bed907d8fff2
src/main/java/com/google/gcloud/storage/StorageService.java v 2e22d5bb756e3a9e0745b0f30476bed907d8fff2
src/main/java/com/google/gcloud/storage/StorageServiceFactory.java v 2e22d5bb756e3a9e0745b0f30476bed907d8fff2

javadoc
2015-05-07 19:36:12ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/DatastoreExample.java v 89e4d1a945d1c2031970149f0448b1d50f592ac6

update datastore example
2015-05-07 17:42:26aozarov <aozarov@gmail.com>README.md v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/ServiceOptions.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/datastore/BaseKey.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/datastore/DatastoreHelper.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/datastore/DatastoreService.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/datastore/DatastoreServiceOptions.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/datastore/IncompleteKey.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/datastore/Key.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/datastore/KeyFactory.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/datastore/QueryResultsImpl.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/datastore/Validator.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/datastore/package-info.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/examples/DatastoreExample.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/examples/StorageExample.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/spi/DefaultDatastoreRpc.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/main/java/com/google/gcloud/storage/StorageServiceOptions.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/test/java/com/google/gcloud/datastore/BaseKeyTest.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/test/java/com/google/gcloud/datastore/DatastoreHelperTest.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/test/java/com/google/gcloud/datastore/DatastoreServiceOptionsTest.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/test/java/com/google/gcloud/datastore/DatastoreServiceTest.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/test/java/com/google/gcloud/datastore/IncompleteKeyTest.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/test/java/com/google/gcloud/datastore/KeyFactoryTest.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/test/java/com/google/gcloud/datastore/LocalGcdHelper.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/test/java/com/google/gcloud/datastore/SerializationTest.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3
src/test/java/com/google/gcloud/storage/SerializationTest.java v b28b8f4d3a634c15d85d41dbf752bb380c6902b3

replace dataset with projectId
2015-05-07 11:31:27aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/storage/StorageService.java v ae4b0c6877c02aa6aea9b4dadc3c541a55f180a8
src/test/java/com/google/gcloud/datastore/DatastoreServiceTest.java v ae4b0c6877c02aa6aea9b4dadc3c541a55f180a8

fix build
2015-05-07 10:19:04aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v ac239d94b3c9c0e4b0d6fe495f8d016430cdf6be

change get to download
2015-05-06 20:27:26aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v 45bd60290c63586a6d5fa5773f3fd37c79832039

remove leftover
2015-05-06 20:01:49aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v d2c63445456b15e5263a7fa574da5b84a677c024
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v d2c63445456b15e5263a7fa574da5b84a677c024
src/main/java/com/google/gcloud/spi/StorageRpc.java v d2c63445456b15e5263a7fa574da5b84a677c024
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v d2c63445456b15e5263a7fa574da5b84a677c024

complete output writer
2015-05-06 16:28:51aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/ServiceOptions.java v 6d4ac35f8e780fa4a7c2d1b443ff2fd9603885f7
src/main/java/com/google/gcloud/datastore/DatastoreServiceOptions.java v 6d4ac35f8e780fa4a7c2d1b443ff2fd9603885f7
src/main/java/com/google/gcloud/examples/StorageExample.java v 6d4ac35f8e780fa4a7c2d1b443ff2fd9603885f7
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v 6d4ac35f8e780fa4a7c2d1b443ff2fd9603885f7
src/main/java/com/google/gcloud/spi/StorageRpc.java v 6d4ac35f8e780fa4a7c2d1b443ff2fd9603885f7
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v 6d4ac35f8e780fa4a7c2d1b443ff2fd9603885f7
src/main/java/com/google/gcloud/storage/StorageServiceOptions.java v 6d4ac35f8e780fa4a7c2d1b443ff2fd9603885f7

work in progress
2015-05-06 14:35:48aozarov <aozarov@gmail.com>pom.xml v cbe93b92ab338d5b1259476ac6bdd716422321d3

add jar with dependencies
2015-05-05 20:35:15ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v a96435119c1d687a4b6e30b51745787cdddee60f
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v a96435119c1d687a4b6e30b51745787cdddee60f

work in progress
2015-05-05 17:41:39aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v e830ad33e3bbee940416e007e8c43b940581eb8a
src/main/java/com/google/gcloud/spi/StorageRpc.java v e830ad33e3bbee940416e007e8c43b940581eb8a
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v e830ad33e3bbee940416e007e8c43b940581eb8a

work in progress
2015-05-05 15:37:59aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/datastore/DatastoreServiceOptions.java v 4260e8ee8b5b1d6f59fae63148fa115df7f11b16
src/main/java/com/google/gcloud/examples/StorageExample.java v 4260e8ee8b5b1d6f59fae63148fa115df7f11b16
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v 4260e8ee8b5b1d6f59fae63148fa115df7f11b16
src/main/java/com/google/gcloud/spi/StorageRpc.java v 4260e8ee8b5b1d6f59fae63148fa115df7f11b16
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v 4260e8ee8b5b1d6f59fae63148fa115df7f11b16
src/main/java/com/google/gcloud/storage/StorageServiceOptions.java v 4260e8ee8b5b1d6f59fae63148fa115df7f11b16

work in progress
2015-05-04 17:35:16aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v 2d279f42ad248e4a160a34ce9a1128bf9010523b
src/main/java/com/google/gcloud/spi/StorageRpc.java v 2d279f42ad248e4a160a34ce9a1128bf9010523b
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v 2d279f42ad248e4a160a34ce9a1128bf9010523b

work in progress
2015-05-04 16:51:49aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v 9b751aee2b873b2cabc84ee5e080d6c6241c524a
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v 9b751aee2b873b2cabc84ee5e080d6c6241c524a
src/main/java/com/google/gcloud/spi/StorageRpc.java v 9b751aee2b873b2cabc84ee5e080d6c6241c524a
src/main/java/com/google/gcloud/storage/BlobReadChannel.java v 9b751aee2b873b2cabc84ee5e080d6c6241c524a
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v 9b751aee2b873b2cabc84ee5e080d6c6241c524a
src/main/java/com/google/gcloud/storage/StorageServiceOptions.java v 9b751aee2b873b2cabc84ee5e080d6c6241c524a

implement Serializable reader
2015-05-04 13:30:14aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/ServiceOptions.java v e3222e5b6d51531aab8a20f532b6e0c9ddd2df32

update ini hanlding
2015-05-04 12:31:40aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/ServiceOptions.java v 64da673f705f6c04c9ce8cfd7cf55a34637d48f2
src/main/java/com/google/gcloud/examples/StorageExample.java v 64da673f705f6c04c9ce8cfd7cf55a34637d48f2

find project-id from env
2015-05-03 18:01:43ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v f0920d0552c9ac83640856187cf9bd25c8669ceb

work in progress
2015-05-03 17:50:12ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v 59410aba329e3b319f4a66cae5bf64a642de6d9f
src/main/java/com/google/gcloud/storage/BatchRequest.java v 59410aba329e3b319f4a66cae5bf64a642de6d9f
src/main/java/com/google/gcloud/storage/BatchResponse.java v 59410aba329e3b319f4a66cae5bf64a642de6d9f

add multi info to example
2015-05-03 17:17:04ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v 4c2f40e88a03b2d44aae3a5b1030459deb5189ea

complete batch
2015-05-02 12:51:08ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v 2ed5ce181bcad063237092663b7ca849274d8ccd
src/main/java/com/google/gcloud/spi/StorageRpc.java v 2ed5ce181bcad063237092663b7ca849274d8ccd
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v 2ed5ce181bcad063237092663b7ca849274d8ccd

work in progress
2015-05-01 17:39:00aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v a4ee293c3d60e1e21bf18621d45895f26918b300
src/main/java/com/google/gcloud/storage/BatchRequest.java v a4ee293c3d60e1e21bf18621d45895f26918b300
src/main/java/com/google/gcloud/storage/BatchResponse.java v a4ee293c3d60e1e21bf18621d45895f26918b300
src/main/java/com/google/gcloud/storage/StorageService.java v a4ee293c3d60e1e21bf18621d45895f26918b300
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v a4ee293c3d60e1e21bf18621d45895f26918b300

work in progress
2015-05-01 14:43:18ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v 6df1164c1cf1a872045e0c0aac5dc3a86db25837
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v 6df1164c1cf1a872045e0c0aac5dc3a86db25837
src/main/java/com/google/gcloud/spi/StorageRpc.java v 6df1164c1cf1a872045e0c0aac5dc3a86db25837
src/main/java/com/google/gcloud/storage/BatchRequest.java v 6df1164c1cf1a872045e0c0aac5dc3a86db25837
src/main/java/com/google/gcloud/storage/BatchResponse.java v 6df1164c1cf1a872045e0c0aac5dc3a86db25837
src/main/java/com/google/gcloud/storage/StorageService.java v 6df1164c1cf1a872045e0c0aac5dc3a86db25837
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v 6df1164c1cf1a872045e0c0aac5dc3a86db25837

adding batch
2015-04-29 17:49:13ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v ad396b77829e5a473d42953fd2aeee21d8c1be2c

work in progress
2015-04-28 20:26:27ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v acff3c160062c1fdae1739e9da09df66965fa165

add default content type to compose
2015-04-28 17:37:36aozarov <aozarov@gmail.com>pom.xml v 9cb77fa923468d1666cd00306c3acf2ea740a133
src/main/java/com/google/gcloud/examples/StorageExample.java v 9cb77fa923468d1666cd00306c3acf2ea740a133
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v 9cb77fa923468d1666cd00306c3acf2ea740a133
src/main/java/com/google/gcloud/spi/StorageRpc.java v 9cb77fa923468d1666cd00306c3acf2ea740a133
src/main/java/com/google/gcloud/storage/Acl.java v 9cb77fa923468d1666cd00306c3acf2ea740a133
src/main/java/com/google/gcloud/storage/BlobIterOptions.java v 9cb77fa923468d1666cd00306c3acf2ea740a133
src/main/java/com/google/gcloud/storage/BlobList.java v 9cb77fa923468d1666cd00306c3acf2ea740a133
src/main/java/com/google/gcloud/storage/BlobListOptions.java v 9cb77fa923468d1666cd00306c3acf2ea740a133
src/main/java/com/google/gcloud/storage/Bucket.java v 9cb77fa923468d1666cd00306c3acf2ea740a133
src/main/java/com/google/gcloud/storage/ListResult.java v 9cb77fa923468d1666cd00306c3acf2ea740a133
src/main/java/com/google/gcloud/storage/StorageService.java v 9cb77fa923468d1666cd00306c3acf2ea740a133
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v 9cb77fa923468d1666cd00306c3acf2ea740a133
src/main/java/com/google/gcloud/storage/Validator.java v 9cb77fa923468d1666cd00306c3acf2ea740a133

work in progress
2015-04-24 17:44:06aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v a4076b7da82887b93344833c25836230a57ca066
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v a4076b7da82887b93344833c25836230a57ca066
src/main/java/com/google/gcloud/spi/StorageRpc.java v a4076b7da82887b93344833c25836230a57ca066
src/main/java/com/google/gcloud/storage/BlobIterOptions.java v a4076b7da82887b93344833c25836230a57ca066
src/main/java/com/google/gcloud/storage/BlobList.java v a4076b7da82887b93344833c25836230a57ca066
src/main/java/com/google/gcloud/storage/BlobListOptions.java v a4076b7da82887b93344833c25836230a57ca066
src/main/java/com/google/gcloud/storage/ListOptions.java v a4076b7da82887b93344833c25836230a57ca066
src/main/java/com/google/gcloud/storage/StorageService.java v a4076b7da82887b93344833c25836230a57ca066
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v a4076b7da82887b93344833c25836230a57ca066

work in progress
2015-04-24 16:13:45aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/AuthCredentials.java v 09a890f99c36819fcaeec3dd120ad25114e09931
src/main/java/com/google/gcloud/ServiceOptions.java v 09a890f99c36819fcaeec3dd120ad25114e09931
src/main/java/com/google/gcloud/datastore/DatastoreServiceOptions.java v 09a890f99c36819fcaeec3dd120ad25114e09931
src/main/java/com/google/gcloud/datastore/Value.java v 09a890f99c36819fcaeec3dd120ad25114e09931
src/main/java/com/google/gcloud/storage/StorageServiceOptions.java v 09a890f99c36819fcaeec3dd120ad25114e09931
src/test/java/com/google/gcloud/datastore/SerializationTest.java v 09a890f99c36819fcaeec3dd120ad25114e09931
src/test/java/com/google/gcloud/storage/SerializationTest.java v 09a890f99c36819fcaeec3dd120ad25114e09931

work in progress
2015-04-23 22:27:12ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/ServiceOptions.java v c1488178dccfcef9749f9d9ae95eed7109e39f40
src/main/java/com/google/gcloud/datastore/DatastoreServiceOptions.java v c1488178dccfcef9749f9d9ae95eed7109e39f40
src/main/java/com/google/gcloud/spi/ServiceRpcFactory.java v c1488178dccfcef9749f9d9ae95eed7109e39f40
src/main/java/com/google/gcloud/storage/StorageServiceOptions.java v c1488178dccfcef9749f9d9ae95eed7109e39f40
src/test/java/com/google/gcloud/datastore/DatastoreServiceOptionsTest.java v c1488178dccfcef9749f9d9ae95eed7109e39f40

work in progress
2015-04-23 17:27:16aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/AuthCredentials.java v d504256207b9248462c425612a8baef2b496ca3b
src/main/java/com/google/gcloud/ServiceOptions.java v d504256207b9248462c425612a8baef2b496ca3b
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v d504256207b9248462c425612a8baef2b496ca3b

work in progress
2015-04-23 17:09:36aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/AuthCredentials.java v c92f2ea8075db60d3ca7ab3041605b7ac7d0ecd1
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v c92f2ea8075db60d3ca7ab3041605b7ac7d0ecd1

make AuthCredentials serializable
2015-04-22 17:37:14ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/AuthCredentials.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/ExceptionHandler.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/RetryHelper.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/RetryParams.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/ServiceOptions.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/examples/StorageExample.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/spi/StorageRpc.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/spi/StorageRpcFactory.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/storage/Acl.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/storage/Blob.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/storage/BlobReadChannel.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/storage/BlobWriteChannel.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/storage/Bucket.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/storage/Cors.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/storage/ListOptions.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/storage/Option.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/storage/StorageService.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/storage/StorageServiceException.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/storage/StorageServiceFactory.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/storage/StorageServiceOptions.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/storage/Validator.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/main/java/com/google/gcloud/storage/package-info.java v f327dad7fc163181aa7049d687c5361ff5b82101
src/test/java/com/google/gcloud/ExceptionHandlerTest.java v f327dad7fc163181aa7049d687c5361ff5b82101

work in progress
2015-04-21 20:18:37ozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v 803527d695eafdfaa71a0597cab53a135c8512c3
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v 803527d695eafdfaa71a0597cab53a135c8512c3
src/main/java/com/google/gcloud/storage/Acl.java v 803527d695eafdfaa71a0597cab53a135c8512c3
src/main/java/com/google/gcloud/storage/Blob.java v 803527d695eafdfaa71a0597cab53a135c8512c3
src/main/java/com/google/gcloud/storage/Bucket.java v 803527d695eafdfaa71a0597cab53a135c8512c3

work in progress
2015-04-21 17:35:00aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/examples/StorageExample.java v 2841929248e58d8c1cc9af128b224d37efd10daf
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v 2841929248e58d8c1cc9af128b224d37efd10daf
src/main/java/com/google/gcloud/spi/StorageRpc.java v 2841929248e58d8c1cc9af128b224d37efd10daf
src/main/java/com/google/gcloud/storage/Blob.java v 2841929248e58d8c1cc9af128b224d37efd10daf
src/main/java/com/google/gcloud/storage/Bucket.java v 2841929248e58d8c1cc9af128b224d37efd10daf
src/main/java/com/google/gcloud/storage/ListOptions.java v 2841929248e58d8c1cc9af128b224d37efd10daf
src/main/java/com/google/gcloud/storage/StorageService.java v 2841929248e58d8c1cc9af128b224d37efd10daf
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v 2841929248e58d8c1cc9af128b224d37efd10daf

work in progress
2015-04-21 11:42:59aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v 89a50240860944602a489f20a89c1f07ef946ae5

work in progress
2015-04-21 11:35:32aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java v 8ef30c8163ff6add0d5e3ef8c784d6926fc3066d
src/main/java/com/google/gcloud/spi/StorageRpc.java v 8ef30c8163ff6add0d5e3ef8c784d6926fc3066d
src/main/java/com/google/gcloud/storage/StorageService.java v 8ef30c8163ff6add0d5e3ef8c784d6926fc3066d
src/main/java/com/google/gcloud/storage/StorageServiceException.java v 8ef30c8163ff6add0d5e3ef8c784d6926fc3066d
src/main/java/com/google/gcloud/storage/StorageServiceFactory.java v 8ef30c8163ff6add0d5e3ef8c784d6926fc3066d
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java v 8ef30c8163ff6add0d5e3ef8c784d6926fc3066d

work in progress
2015-04-21 09:08:46aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/ExceptionHandler.java v b8c2da84e96570e7ff32ce75930da0ceeaa9dd52
src/main/java/com/google/gcloud/datastore/DatastoreServiceException.java v b8c2da84e96570e7ff32ce75930da0ceeaa9dd52
src/main/java/com/google/gcloud/datastore/DatastoreServiceImpl.java v b8c2da84e96570e7ff32ce75930da0ceeaa9dd52
src/test/java/com/google/gcloud/datastore/DatastoreServiceExceptionTest.java v b8c2da84e96570e7ff32ce75930da0ceeaa9dd52

s/retriable/retryable/g
2015-04-21 08:56:34Arie <aozarov@users.noreply.github.com>README.md v 42c11d0c9a926ae6ed9fd16ed15ebb544fc3a225

Update README.md
2015-04-21 08:55:40aozarov <aozarov@gmail.com>src/main/java/com/google/gcloud/datastore/DatastoreServiceFactory.java v 7e932b71ab52d7589ae4f80b2152c9d5513ec45a
src/main/java/com/google/gcloud/datastore/DatastoreServiceImpl.java v 7e932b71ab52d7589ae4f80b2152c9d5513ec45a
src/main/java/com/google/gcloud/datastore/package-info.java v 7e932b71ab52d7589ae4f80b2152c9d5513ec45a
src/main/java/com/google/gcloud/examples/DatastoreExample.java v 7e932b71ab52d7589ae4f80b2152c9d5513ec45a
src/test/java/com/google/gcloud/datastore/DatastoreServiceTest.java v 7e932b71ab52d7589ae4f80b2152c9d5513ec45a

fix retry helper for datastore and change the way we get a default instance of the service
-
-
-
- -
- -
-
-
-

Copyright © 2015 - Google. - All rights reserved. - -

-
- - - -
-
- - diff --git a/checkstyle.html b/checkstyle.html deleted file mode 100644 index d7a00054a802..000000000000 --- a/checkstyle.html +++ /dev/null @@ -1,1286 +0,0 @@ - - - - - - - - - GCloud Java – Checkstyle Results - - - - - - - - - - - - - -
- - - - - -
-
- -
- - -
- -
-

Checkstyle Results

-

The following document contains the results of Checkstyle 6.2. rss feed

-
-

Summary

- - - - - - - - - - -
Files Info Warnings Errors
870890
-
-

Files

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
File I W E
com/google/gcloud/AuthCredentials.java010
com/google/gcloud/ServiceOptions.java040
com/google/gcloud/datastore/BaseEntity.java020
com/google/gcloud/datastore/Blob.java020
com/google/gcloud/datastore/DatastoreService.java040
com/google/gcloud/datastore/DatastoreServiceImpl.java010
com/google/gcloud/datastore/DateTime.java010
com/google/gcloud/datastore/GqlQuery.java020
com/google/gcloud/datastore/Key.java040
com/google/gcloud/datastore/KeyFactory.java040
com/google/gcloud/datastore/ListValue.java020
com/google/gcloud/datastore/PathElement.java010
com/google/gcloud/datastore/StructuredQuery.java020
com/google/gcloud/datastore/ValueType.java010
com/google/gcloud/examples/DatastoreExample.java050
com/google/gcloud/examples/StorageExample.java090
com/google/gcloud/spi/DatastoreRpc.java020
com/google/gcloud/spi/DefaultDatastoreRpc.java010
com/google/gcloud/spi/DefaultStorageRpc.java050
com/google/gcloud/spi/ServiceRpcProvider.java020
com/google/gcloud/spi/StorageRpc.java080
com/google/gcloud/storage/Acl.java060
com/google/gcloud/storage/BatchResponse.java010
com/google/gcloud/storage/Blob.java020
com/google/gcloud/storage/BlobReadChannel.java020
com/google/gcloud/storage/BlobWriteChannel.java010
com/google/gcloud/storage/Bucket.java030
com/google/gcloud/storage/Cors.java030
com/google/gcloud/storage/ListResult.java010
com/google/gcloud/storage/Option.java010
com/google/gcloud/storage/StorageServiceException.java010
com/google/gcloud/storage/StorageServiceImpl.java050
-
-

Rules

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CategoryRuleViolationsSeverity
codingOverloadMethodsDeclarationOrder5 Warning
importsCustomImportOrder -
    -
  • sortImportsInGroupAlphabetically: "true"
  • -
  • customImportOrderRules: "STATIC###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE###STANDARD_JAVA_PACKAGE"
  • -
  • thirdPartyPackageRegExp: ".*"
  • -
  • specialImportsRegExp: "com.google"
5 Warning
indentationIndentation -
    -
  • lineWrappingIndentation: "4"
  • -
  • caseIndent: "2"
  • -
  • arrayInitIndent: "2"
  • -
  • throwsIndent: "4"
  • -
  • basicOffset: "2"
  • -
  • braceAdjustment: "0"
4 Warning
javadocJavadocMethod -
    -
  • allowMissingParamTags: "true"
  • -
  • allowedAnnotations: "Override, Test"
  • -
  • allowThrowsTagsForSubclasses: "true"
  • -
  • scope: "public"
  • -
  • allowMissingReturnTag: "true"
  • -
  • minLineCount: "2"
  • -
  • allowMissingThrowsTags: "true"
33 Warning
JavadocParagraph8 Warning
modifierModifierOrder7 Warning
namingMemberName -
    -
  • format: "^[a-z][a-z0-9][a-zA-Z0-9]*$"
3 Warning
MethodName -
    -
  • format: "^[a-z][a-z0-9][a-zA-Z0-9_]*$"
2 Warning
ParameterName -
    -
  • format: "^[a-z][a-z0-9][a-zA-Z0-9]*$"
9 Warning
sizesLineLength -
    -
  • max: "100"
  • -
  • ignorePattern: "^package.*|^import.*|a href|href|http://|https://|ftp://"
3 Warning
whitespaceEmptyLineSeparator -
    -
  • allowNoEmptyLineBetweenFields: "true"
2 Warning
OperatorWrap -
    -
  • tokens: "BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR "
  • -
  • option: "NL"
1 Warning
WhitespaceAround -
    -
  • allowEmptyLoops: "true"
  • -
  • allowEmptyTypes: "true"
  • -
  • allowEmptyMethods: "true"
  • -
  • allowEmptyConstructors: "true"
2 Warning
-
-

Details

-
-

com/google/gcloud/AuthCredentials.java

- - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningindentationIndentation'catch' child have incorrect indentation level 7, expected level should be 8.128
-
-

com/google/gcloud/ServiceOptions.java

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningimportsCustomImportOrderWrong lexicographical order for 'java.io.InputStream' import.34
 WarningindentationIndentation'member def type' have incorrect indentation level 3, expected level should be 4.209
 WarningindentationIndentation'method def' child have incorrect indentation level 3, expected level should be 4.209
 WarningwhitespaceWhitespaceAroundWhitespaceAround: 'while' is not followed by whitespace.223
-
-

com/google/gcloud/datastore/BaseEntity.java

- - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningcodingOverloadMethodsDeclarationOrderOverload methods should not be split. Previous overloaded method located at line '82'.104
 WarningcodingOverloadMethodsDeclarationOrderOverload methods should not be split. Previous overloaded method located at line '78'.109
-
-

com/google/gcloud/datastore/Blob.java

- - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningimportsCustomImportOrderWrong lexicographical order for 'java.io.InputStream' import.31
 WarningjavadocJavadocMethodMissing a Javadoc comment.138
-
-

com/google/gcloud/datastore/DatastoreService.java

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocSummaryJavadocFirst sentence should be present.84
 WarningjavadocSummaryJavadocFirst sentence should be present.91
 WarningjavadocSummaryJavadocFirst sentence should be present.98
 WarningjavadocSummaryJavadocFirst sentence should be present.105
-
-

com/google/gcloud/datastore/DatastoreServiceImpl.java

- - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningcodingOverloadMethodsDeclarationOrderOverload methods should not be split. Previous overloaded method located at line '213'.223
-
-

com/google/gcloud/datastore/DateTime.java

- - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocMethodMissing a Javadoc comment.80
-
-

com/google/gcloud/datastore/GqlQuery.java

- - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocMethodMissing a Javadoc comment.189
 WarningsizesLineLengthLine is longer than 100 characters (found 108).403
-
-

com/google/gcloud/datastore/Key.java

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocMethodMissing a Javadoc comment.76
 WarningjavadocJavadocMethodMissing a Javadoc comment.82
 WarningjavadocJavadocMethodMissing a Javadoc comment.196
 WarningjavadocJavadocMethodMissing a Javadoc comment.202
-
-

com/google/gcloud/datastore/KeyFactory.java

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocMethodMissing a Javadoc comment.34
 WarningjavadocJavadocMethodMissing a Javadoc comment.41
 WarningjavadocJavadocMethodMissing a Javadoc comment.47
 WarningjavadocJavadocMethodMissing a Javadoc comment.53
-
-

com/google/gcloud/datastore/ListValue.java

- - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocMethodMissing a Javadoc comment.73
 WarningjavadocJavadocMethodMissing a Javadoc comment.80
-
-

com/google/gcloud/datastore/PathElement.java

- - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocMethodMissing a Javadoc comment.120
-
-

com/google/gcloud/datastore/StructuredQuery.java

- - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocMethodMissing a Javadoc comment.227
 WarningjavadocJavadocMethodMissing a Javadoc comment.580
-
-

com/google/gcloud/datastore/ValueType.java

- - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningsizesLineLengthLine is longer than 100 characters (found 107).100
-
-

com/google/gcloud/examples/DatastoreExample.java

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocParagraph<p> tag should be precede with empty line.41
 WarningjavadocJavadocParagraph<p> tag should be precede with empty line.43
 WarningwhitespaceEmptyLineSeparator'METHOD_DEF' should be separated from previous statement.62
 WarningjavadocJavadocMethodMissing a Javadoc comment.173
 WarningwhitespaceWhitespaceAroundWhitespaceAround: ':' is not preceded with whitespace.209
-
-

com/google/gcloud/examples/StorageExample.java

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningimportsCustomImportOrderWrong lexicographical order for 'java.io.InputStream' import.35
 WarningjavadocJavadocParagraph<p> tag should be precede with empty line.49
 WarningjavadocJavadocParagraph<p> tag should be precede with empty line.51
 WarningjavadocJavadocParagraphEmpty line should be followed by <p> tag on the next line.64
 WarningmodifierModifierOrder'abstract' modifier out of order with the JLS suggestions.74
 WarningmodifierModifierOrder'abstract' modifier out of order with the JLS suggestions.85
 WarningmodifierModifierOrder'abstract' modifier out of order with the JLS suggestions.101
 WarningjavadocJavadocMethodMissing a Javadoc comment.481
 WarningjavadocJavadocMethodMissing a Javadoc comment.495
-
-

com/google/gcloud/spi/DatastoreRpc.java

- - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningwhitespaceEmptyLineSeparator'package' should be separated from previous statement.16
 WarningjavadocJavadocMethodMissing a Javadoc comment.85
-
-

com/google/gcloud/spi/DefaultDatastoreRpc.java

- - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningimportsCustomImportOrderWrong lexicographical order for 'com.google.api.services.datastore.client.Datastore' import.31
-
-

com/google/gcloud/spi/DefaultStorageRpc.java

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningimportsCustomImportOrderWrong lexicographical order for 'com.google.api.services.storage.model.Bucket' import.52
 WarningjavadocJavadocMethodMissing a Javadoc comment.80
 WarningnamingParameterNameParameter name 'e' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.383
 WarningnamingParameterNameParameter name 'e' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.397
 WarningnamingParameterNameParameter name 'e' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.412
-
-

com/google/gcloud/spi/ServiceRpcProvider.java

- - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocMethodMissing a Javadoc comment.27
 WarningjavadocJavadocMethodMissing a Javadoc comment.33
-
-

com/google/gcloud/spi/StorageRpc.java

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningnamingMemberNameMember name 'x' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.77
 WarningnamingMemberNameMember name 'y' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.78
 WarningnamingParameterNameParameter name 'x' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.80
 WarningnamingParameterNameParameter name 'y' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.80
 WarningnamingParameterNameParameter name 'x' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.85
 WarningnamingParameterNameParameter name 'y' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.85
 WarningnamingMethodNameMethod name 'x' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9_]*$'.89
 WarningnamingMethodNameMethod name 'y' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9_]*$'.93
-
-

com/google/gcloud/storage/Acl.java

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningmodifierModifierOrder'abstract' modifier out of order with the JLS suggestions.39
 WarningnamingParameterNameParameter name 'o' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.64
 WarningwhitespaceOperatorWrap'&&' should be on a new line.72
 WarningnamingMemberNameMember name 'pRole' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.182
 WarningjavadocJavadocMethodMissing a Javadoc comment.189
 WarningnamingParameterNameParameter name 'pRole' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.189
-
-

com/google/gcloud/storage/BatchResponse.java

- - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocMethodMissing a Javadoc comment.115
-
-

com/google/gcloud/storage/Blob.java

- - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocMethodMissing a Javadoc comment.223
 WarningjavadocJavadocMethodMissing a Javadoc comment.343
-
-

com/google/gcloud/storage/BlobReadChannel.java

- - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocParagraphEmpty line should be followed by <p> tag on the next line.26
 WarningjavadocJavadocParagraphEmpty line should be followed by <p> tag on the next line.28
-
-

com/google/gcloud/storage/BlobWriteChannel.java

- - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocParagraphEmpty line should be followed by <p> tag on the next line.25
-
-

com/google/gcloud/storage/Bucket.java

- - - - - - - - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningmodifierModifierOrder'abstract' modifier out of order with the JLS suggestions.88
 WarningmodifierModifierOrder'static' modifier out of order with the JLS suggestions.393
 WarningjavadocJavadocMethodMissing a Javadoc comment.583
-
-

com/google/gcloud/storage/Cors.java

- - - - - - - - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocMethodMissing a Javadoc comment.80
 WarningjavadocJavadocMethodMissing a Javadoc comment.88
 WarningjavadocJavadocMethodMissing a Javadoc comment.175
-
-

com/google/gcloud/storage/ListResult.java

- - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocMethodMissing a Javadoc comment.40
-
-

com/google/gcloud/storage/Option.java

- - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocSummaryJavadocFirst sentence should be present.27
-
-

com/google/gcloud/storage/StorageServiceException.java

- - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningjavadocJavadocMethodMissing a Javadoc comment.32
-
-

com/google/gcloud/storage/StorageServiceImpl.java

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SeverityCategoryRuleMessageLine
 WarningsizesLineLengthLine is longer than 100 characters (found 101).56
 WarningmodifierModifierOrder'abstract' modifier out of order with the JLS suggestions.158
 WarningcodingOverloadMethodsDeclarationOrderOverload methods should not be split. Previous overloaded method located at line '211'.236
 WarningindentationIndentation'method def modifier' have incorrect indentation level 1, expected level should be 2.426
 WarningcodingOverloadMethodsDeclarationOrderOverload methods should not be split. Previous overloaded method located at line '437'.480
-
-
-
- -
- -
-
-
-

Copyright © 2015 - Google. - All rights reserved. - -

-
- - - -
-
- - diff --git a/checkstyle.rss b/checkstyle.rss deleted file mode 100644 index 54379ece7ead..000000000000 --- a/checkstyle.rss +++ /dev/null @@ -1,1272 +0,0 @@ - - - - - GCloud Java - Checkstyle report - https://github.com/GoogleCloudPlatform/gcloud-java - GCloud Java - Checkstyle report - en-us - ©2015 Google - - File: 87, - Errors: 0, - Warnings: 89, - Infos: 0 - - https://github.com/GoogleCloudPlatform/gcloud-java/checkstyle.html - -

Click here for the full Checkstyle report.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FilesIWE
- com/google/gcloud/ExceptionHandler.java - - 0 - - 0 - - 0 -
- com/google/gcloud/spi/DatastoreRpc.java - - 0 - - 2 - - 0 -
- com/google/gcloud/storage/BlobWriterChannelImpl.java - - 0 - - 0 - - 0 -
- com/google/gcloud/examples/StorageExample.java - - 0 - - 9 - - 0 -
- com/google/gcloud/datastore/BlobValue.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/BaseDatastoreBatchWriter.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/DatastoreServiceException.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/DatastoreBatchWriter.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/ProjectionEntity.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/BaseKey.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/DatastoreServiceFactory.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/ListValue.java - - 0 - - 2 - - 0 -
- com/google/gcloud/datastore/IncompleteKey.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/DoubleValue.java - - 0 - - 0 - - 0 -
- com/google/gcloud/examples/DatastoreExample.java - - 0 - - 5 - - 0 -
- com/google/gcloud/datastore/KeyValue.java - - 0 - - 0 - - 0 -
- com/google/gcloud/BaseService.java - - 0 - - 0 - - 0 -
- com/google/gcloud/storage/Option.java - - 0 - - 1 - - 0 -
- com/google/gcloud/datastore/GqlQuery.java - - 0 - - 2 - - 0 -
- com/google/gcloud/storage/Acl.java - - 0 - - 6 - - 0 -
- com/google/gcloud/datastore/DateTimeValue.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/BooleanValue.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/DatastoreReaderWriter.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/Batch.java - - 0 - - 0 - - 0 -
- com/google/gcloud/storage/StorageServiceOptions.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/Value.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/ValueBuilder.java - - 0 - - 0 - - 0 -
- com/google/gcloud/storage/BatchResponse.java - - 0 - - 1 - - 0 -
- com/google/gcloud/datastore/Validator.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/DatastoreReader.java - - 0 - - 0 - - 0 -
- com/google/gcloud/AuthCredentials.java - - 0 - - 1 - - 0 -
- com/google/gcloud/RetryHelper.java - - 0 - - 0 - - 0 -
- com/google/gcloud/spi/StorageRpc.java - - 0 - - 8 - - 0 -
- com/google/gcloud/datastore/RawValue.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/NullValue.java - - 0 - - 0 - - 0 -
- com/google/gcloud/spi/DatastoreRpcFactory.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/KeyFactory.java - - 0 - - 4 - - 0 -
- com/google/gcloud/datastore/ValueType.java - - 0 - - 1 - - 0 -
- com/google/gcloud/datastore/LongValue.java - - 0 - - 0 - - 0 -
- com/google/gcloud/spi/DefaultStorageRpc.java - - 0 - - 5 - - 0 -
- com/google/gcloud/datastore/Serializable.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/DatastoreWriter.java - - 0 - - 0 - - 0 -
- com/google/gcloud/storage/BlobWriteChannel.java - - 0 - - 1 - - 0 -
- com/google/gcloud/spi/ServiceRpcProvider.java - - 0 - - 2 - - 0 -
- com/google/gcloud/Service.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/BatchImpl.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/EntityValue.java - - 0 - - 0 - - 0 -
- com/google/gcloud/storage/StorageServiceFactory.java - - 0 - - 0 - - 0 -
- com/google/gcloud/storage/ListResult.java - - 0 - - 1 - - 0 -
- com/google/gcloud/datastore/Cursor.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/Blob.java - - 0 - - 2 - - 0 -
- com/google/gcloud/datastore/Transaction.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/package-info.java - - 0 - - 0 - - 0 -
- com/google/gcloud/storage/Bucket.java - - 0 - - 3 - - 0 -
- com/google/gcloud/datastore/QueryResults.java - - 0 - - 0 - - 0 -
- com/google/gcloud/spi/StorageRpcFactory.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/DatastoreServiceImpl.java - - 0 - - 1 - - 0 -
- com/google/gcloud/datastore/Key.java - - 0 - - 4 - - 0 -
- com/google/gcloud/datastore/DatastoreServiceOptions.java - - 0 - - 0 - - 0 -
- com/google/gcloud/storage/StorageService.java - - 0 - - 0 - - 0 -
- com/google/gcloud/storage/BlobReadChannelImpl.java - - 0 - - 0 - - 0 -
- com/google/gcloud/storage/Blob.java - - 0 - - 2 - - 0 -
- com/google/gcloud/datastore/TransactionImpl.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/DatastoreHelper.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/Entity.java - - 0 - - 0 - - 0 -
- com/google/gcloud/RetryParams.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/StringValue.java - - 0 - - 0 - - 0 -
- com/google/gcloud/storage/BlobReadChannel.java - - 0 - - 2 - - 0 -
- com/google/gcloud/spi/ServiceRpcFactory.java - - 0 - - 0 - - 0 -
- com/google/gcloud/storage/Cors.java - - 0 - - 3 - - 0 -
- com/google/gcloud/spi/DefaultDatastoreRpc.java - - 0 - - 1 - - 0 -
- com/google/gcloud/storage/StorageServiceException.java - - 0 - - 1 - - 0 -
- com/google/gcloud/ServiceOptions.java - - 0 - - 4 - - 0 -
- com/google/gcloud/datastore/QueryResultsImpl.java - - 0 - - 0 - - 0 -
- com/google/gcloud/storage/package-info.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/FullEntity.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/TransactionOption.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/StructuredQuery.java - - 0 - - 2 - - 0 -
- com/google/gcloud/datastore/DateTime.java - - 0 - - 1 - - 0 -
- com/google/gcloud/storage/StorageServiceImpl.java - - 0 - - 5 - - 0 -
- com/google/gcloud/storage/BatchRequest.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/DatastoreService.java - - 0 - - 4 - - 0 -
- com/google/gcloud/datastore/ValueMarshaller.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/BatchOption.java - - 0 - - 0 - - 0 -
- com/google/gcloud/datastore/BaseEntity.java - - 0 - - 2 - - 0 -
- com/google/gcloud/datastore/PathElement.java - - 0 - - 1 - - 0 -
- com/google/gcloud/datastore/Query.java - - 0 - - 0 - - 0 -
- -
-
-
-
- diff --git a/cobertura/com.google.gcloud.AuthCredentials.html b/cobertura/com.google.gcloud.AuthCredentials.html deleted file mode 100644 index afa80be53ce7..000000000000 --- a/cobertura/com.google.gcloud.AuthCredentials.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.AuthCredentials
-
 
- - - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
AuthCredentials
77%
7/9
N/A
1.3
AuthCredentials$AppEngineAuthCredentials
75%
3/4
N/A
1.3
AuthCredentials$ApplicationDefaultAuthCredentials
28%
2/7
N/A
1.3
AuthCredentials$ComputeEngineAuthCredentials
20%
2/10
N/A
1.3
AuthCredentials$ServiceAccountAuthCredentials
47%
8/17
50%
4/8
1.3
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkNotNull;
 20  
 
 21  
 import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
 22  
 import com.google.api.client.googleapis.compute.ComputeCredential;
 23  
 import com.google.api.client.googleapis.extensions.appengine.auth.oauth2.AppIdentityCredential;
 24  
 import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
 25  
 import com.google.api.client.http.HttpRequestInitializer;
 26  
 import com.google.api.client.http.HttpTransport;
 27  
 import com.google.api.client.http.javanet.NetHttpTransport;
 28  
 import com.google.api.client.json.jackson.JacksonFactory;
 29  
 import com.google.auth.http.HttpCredentialsAdapter;
 30  
 import com.google.auth.oauth2.GoogleCredentials;
 31  
 
 32  
 import java.io.IOException;
 33  
 import java.io.ObjectInputStream;
 34  
 import java.io.ObjectStreamException;
 35  
 import java.io.Serializable;
 36  
 import java.security.GeneralSecurityException;
 37  
 import java.security.PrivateKey;
 38  
 import java.util.Objects;
 39  
 import java.util.Set;
 40  
 
 41  
 /**
 42  
  * Credentials for accessing Google Cloud services.
 43  
  */
 44  
 public abstract class AuthCredentials implements Serializable {
 45  
 
 46  
   private static final long serialVersionUID = 236297804453464604L;
 47  
 
 48  4
   private static class AppEngineAuthCredentials extends AuthCredentials {
 49  
 
 50  
     private static final long serialVersionUID = 7931300552744202954L;
 51  
 
 52  2
     private static final AuthCredentials INSTANCE = new AppEngineAuthCredentials();
 53  
 
 54  
     @Override
 55  
     protected HttpRequestInitializer httpRequestInitializer(HttpTransport transport,
 56  
         Set<String> scopes) {
 57  0
       return new AppIdentityCredential(scopes);
 58  
     }
 59  
 
 60  
     private Object readResolve() throws ObjectStreamException {
 61  4
       return INSTANCE;
 62  
     }
 63  
   }
 64  
 
 65  110
   private static class ServiceAccountAuthCredentials extends AuthCredentials {
 66  
 
 67  
     private static final long serialVersionUID = 8007708734318445901L;
 68  
     private final String account;
 69  
     private final PrivateKey privateKey;
 70  
 
 71  2
     private static final AuthCredentials NO_CREDENTIALS = new ServiceAccountAuthCredentials();
 72  
 
 73  0
     ServiceAccountAuthCredentials(String account, PrivateKey privateKey) {
 74  0
       this.account = checkNotNull(account);
 75  0
       this.privateKey = checkNotNull(privateKey);
 76  0
     }
 77  
 
 78  
     ServiceAccountAuthCredentials() {
 79  
       account = null;
 80  
       privateKey = null;
 81  
     }
 82  
 
 83  
     @Override
 84  
     protected HttpRequestInitializer httpRequestInitializer(
 85  
         HttpTransport transport, Set<String> scopes) {
 86  76
       GoogleCredential.Builder builder = new GoogleCredential.Builder()
 87  
           .setTransport(transport)
 88  
           .setJsonFactory(new JacksonFactory());
 89  76
       if (privateKey != null) {
 90  0
         builder.setServiceAccountPrivateKey(privateKey);
 91  0
         builder.setServiceAccountId(account);
 92  0
         builder.setServiceAccountScopes(scopes);
 93  
       }
 94  76
       return builder.build();
 95  
     }
 96  
 
 97  
     @Override
 98  
     public int hashCode() {
 99  0
       return Objects.hash(account, privateKey);
 100  
     }
 101  
 
 102  
     @Override
 103  
     public boolean equals(Object obj) {
 104  6
       if (!(obj instanceof ServiceAccountAuthCredentials)) {
 105  0
         return false;
 106  
       }
 107  6
       ServiceAccountAuthCredentials other = (ServiceAccountAuthCredentials) obj;
 108  6
       return Objects.equals(account, other.account)
 109  
           && Objects.equals(privateKey, other.privateKey);
 110  
     }
 111  
   }
 112  
 
 113  
   private static class ComputeEngineAuthCredentials extends AuthCredentials {
 114  
 
 115  
     private static final long serialVersionUID = -5217355402127260144L;
 116  
 
 117  
     private transient ComputeCredential computeCredential;
 118  
 
 119  106
     ComputeEngineAuthCredentials() throws IOException, GeneralSecurityException {
 120  106
       computeCredential = getComputeCredential();
 121  0
     }
 122  
 
 123  
     private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
 124  0
       in.defaultReadObject();
 125  
       try {
 126  0
         computeCredential = getComputeCredential();
 127  0
       } catch (GeneralSecurityException e) {
 128  0
        throw new IOException(e);
 129  0
       }
 130  0
     }
 131  
 
 132  
     @Override
 133  
     protected HttpRequestInitializer httpRequestInitializer(HttpTransport transport,
 134  
         Set<String> scopes) {
 135  0
       return computeCredential;
 136  
     }
 137  
   }
 138  
 
 139  
   private static class ApplicationDefaultAuthCredentials extends AuthCredentials {
 140  
 
 141  
     private static final long serialVersionUID = -8306873864136099893L;
 142  
 
 143  
     private transient GoogleCredentials googleCredentials;
 144  
 
 145  106
     ApplicationDefaultAuthCredentials() throws IOException {
 146  106
       googleCredentials = GoogleCredentials.getApplicationDefault();
 147  0
     }
 148  
 
 149  
     private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
 150  0
       in.defaultReadObject();
 151  0
       googleCredentials =  GoogleCredentials.getApplicationDefault();
 152  0
     }
 153  
 
 154  
     @Override
 155  
     protected HttpRequestInitializer httpRequestInitializer(HttpTransport transport,
 156  
         Set<String> scopes) {
 157  0
       return new HttpCredentialsAdapter(googleCredentials);
 158  
     }
 159  
   }
 160  
 
 161  
   protected abstract HttpRequestInitializer httpRequestInitializer(HttpTransport transport,
 162  
       Set<String> scopes);
 163  
 
 164  
   public static AuthCredentials createForAppEngine() {
 165  4
     return AppEngineAuthCredentials.INSTANCE;
 166  
   }
 167  
 
 168  
   public static AuthCredentials createForComputeEngine()
 169  
       throws IOException, GeneralSecurityException {
 170  106
     return new ComputeEngineAuthCredentials();
 171  
   }
 172  
 
 173  
   /**
 174  
    * Returns the Application Default Credentials.
 175  
    *
 176  
    * <p>
 177  
    * Returns the Application Default Credentials which are credentials that identify and authorize
 178  
    * the whole application. This is the built-in service account if running on Google Compute Engine
 179  
    * or the credentials file from the path in the environment variable
 180  
    * GOOGLE_APPLICATION_CREDENTIALS.
 181  
    * </p>
 182  
    *
 183  
    * @return the credentials instance.
 184  
    * @throws IOException if the credentials cannot be created in the current environment.
 185  
    */
 186  
   public static AuthCredentials createApplicationDefaults() throws IOException {
 187  106
     return new ApplicationDefaultAuthCredentials();
 188  
   }
 189  
 
 190  
   public static AuthCredentials createFor(String account, PrivateKey privateKey) {
 191  0
     return new ServiceAccountAuthCredentials(account, privateKey);
 192  
   }
 193  
 
 194  
   public static AuthCredentials noCredentials() {
 195  110
     return ServiceAccountAuthCredentials.NO_CREDENTIALS;
 196  
   }
 197  
 
 198  
   static ComputeCredential getComputeCredential() throws IOException, GeneralSecurityException {
 199  182
     NetHttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
 200  
     // Try to connect using Google Compute Engine service account credentials.
 201  182
     ComputeCredential credential = new ComputeCredential(transport, new JacksonFactory());
 202  
     // Force token refresh to detect if we are running on Google Compute Engine.
 203  182
     credential.refreshToken();
 204  0
     return credential;
 205  
   }
 206  
 }
- - - - diff --git a/cobertura/com.google.gcloud.BaseService.html b/cobertura/com.google.gcloud.BaseService.html deleted file mode 100644 index 605055c24126..000000000000 --- a/cobertura/com.google.gcloud.BaseService.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.BaseService
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
BaseService
100%
1/1
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud;
 18  
 
 19  
 public abstract class BaseService<O extends ServiceOptions> implements Service<O> {
 20  
 
 21  
   private final O options;
 22  
 
 23  
   protected BaseService(O options) {
 24  
     this.options = options;
 25  
   }
 26  
 
 27  
   @Override
 28  
   public O options() {
 29  240
     return options;
 30  
   }
 31  
 }
- - - - diff --git a/cobertura/com.google.gcloud.ExceptionHandler.html b/cobertura/com.google.gcloud.ExceptionHandler.html deleted file mode 100644 index 3784d8a53546..000000000000 --- a/cobertura/com.google.gcloud.ExceptionHandler.html +++ /dev/null @@ -1,504 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.ExceptionHandler
-
 
- - - - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
ExceptionHandler
96%
53/55
100%
28/28
2.273
ExceptionHandler$1
N/A
N/A
2.273
ExceptionHandler$Builder
100%
15/15
100%
6/6
2.273
ExceptionHandler$Interceptor
N/A
N/A
2.273
ExceptionHandler$Interceptor$RetryResult
100%
3/3
N/A
2.273
ExceptionHandler$RetryInfo
58%
7/12
0%
0/4
2.273
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud;
 18  
 
 19  
 import static com.google.common.base.MoreObjects.firstNonNull;
 20  
 import static com.google.common.base.Preconditions.checkNotNull;
 21  
 
 22  
 import com.google.common.annotations.VisibleForTesting;
 23  
 import com.google.common.base.Preconditions;
 24  
 import com.google.common.collect.ImmutableList;
 25  
 import com.google.common.collect.ImmutableSet;
 26  
 import com.google.common.collect.Sets;
 27  
 
 28  
 import java.io.Serializable;
 29  
 import java.lang.reflect.Method;
 30  
 import java.util.Set;
 31  
 import java.util.concurrent.Callable;
 32  
 
 33  
 /**
 34  
  * Exception handling used by {@link RetryHelper}.
 35  
  */
 36  20
 public final class ExceptionHandler implements Serializable {
 37  
 
 38  
   private static final long serialVersionUID = -2460707015779532919L;
 39  
 
 40  2
   private static final ExceptionHandler DEFAULT_INSTANCE =
 41  
       builder().retryOn(Exception.class).abortOn(RuntimeException.class).build();
 42  
 
 43  
   private final ImmutableList<Interceptor> interceptors;
 44  
   private final ImmutableSet<Class<? extends Exception>> retriableExceptions;
 45  
   private final ImmutableSet<Class<? extends Exception>> nonRetriableExceptions;
 46  20
   private final Set<RetryInfo> retryInfo = Sets.newHashSet();
 47  
 
 48  
   public interface Interceptor extends Serializable {
 49  
 
 50  2
     enum RetryResult {
 51  
 
 52  2
       RETRY(true), ABORT(false);
 53  
 
 54  
       private final boolean booleanValue;
 55  
 
 56  
       RetryResult(boolean booleanValue) {
 57  
         this.booleanValue = booleanValue;
 58  
       }
 59  
 
 60  
       boolean booleanValue() {
 61  126
         return booleanValue;
 62  
       }
 63  
     }
 64  
 
 65  
     /**
 66  
      * This method is called before exception evaluation and could short-circuit the process.
 67  
      *
 68  
      * @param exception the exception that is being evaluated
 69  
      * @return {@link RetryResult} to indicate if the exception should be ignored (
 70  
      *         {@link RetryResult#RETRY}), propagated ({@link RetryResult#ABORT}), or evaluation
 71  
      *         should proceed ({@code null}).
 72  
      */
 73  
     RetryResult beforeEval(Exception exception);
 74  
 
 75  
     /**
 76  
      * This method is called after the evaluation and could alter its result.
 77  
      *
 78  
      * @param exception the exception that is being evaluated
 79  
      * @param retryResult the result of the evaluation so far.
 80  
      * @return {@link RetryResult} to indicate if the exception should be ignored (
 81  
      *         {@link RetryResult#RETRY}), propagated ({@link RetryResult#ABORT}), or evaluation
 82  
      *         should proceed ({@code null}).
 83  
      */
 84  
     RetryResult afterEval(Exception exception, RetryResult retryResult);
 85  
   }
 86  
 
 87  
   /**
 88  
    * ExceptionHandler builder.
 89  
    */
 90  78
   public static class Builder {
 91  
 
 92  18
     private final ImmutableList.Builder<Interceptor> interceptors = ImmutableList.builder();
 93  18
     private final ImmutableSet.Builder<Class<? extends Exception>> retriableExceptions =
 94  
         ImmutableSet.builder();
 95  18
     private final ImmutableSet.Builder<Class<? extends Exception>> nonRetriableExceptions =
 96  
         ImmutableSet.builder();
 97  
 
 98  36
     private Builder() {}
 99  
 
 100  
 
 101  
     /**
 102  
      * Adds the exception handler interceptors. Call order will be maintained.
 103  
      *
 104  
      * @param interceptors the interceptors for this exception handler
 105  
      * @return the Builder for chaining
 106  
      */
 107  
     public Builder interceptor(Interceptor... interceptors) {
 108  8
       for (Interceptor interceptor : interceptors) {
 109  4
         this.interceptors.add(interceptor);
 110  
       }
 111  4
       return this;
 112  
     }
 113  
 
 114  
     /**
 115  
      * Add the exceptions to ignore/retry-on.
 116  
      *
 117  
      * @param exceptions retry should continue when such exceptions are thrown
 118  
      * @return the Builder for chaining
 119  
      */
 120  
     @SafeVarargs
 121  
     public final Builder retryOn(Class<? extends Exception>... exceptions) {
 122  38
       for (Class<? extends Exception> exception : exceptions) {
 123  22
         retriableExceptions.add(checkNotNull(exception));
 124  
       }
 125  16
       return this;
 126  
     }
 127  
 
 128  
     /**
 129  
      * Adds the exceptions to abort on.
 130  
      *
 131  
      * @param exceptions retry should abort when such exceptions are thrown
 132  
      * @return the Builder for chaining
 133  
      */
 134  
     @SafeVarargs
 135  
     public final Builder abortOn(Class<? extends Exception>... exceptions) {
 136  26
       for (Class<? extends Exception> exception : exceptions) {
 137  16
         nonRetriableExceptions.add(checkNotNull(exception));
 138  
       }
 139  10
       return this;
 140  
     }
 141  
 
 142  
     /**
 143  
      * Returns a new ExceptionHandler instance.
 144  
      */
 145  
     public ExceptionHandler build() {
 146  20
       return new ExceptionHandler(this);
 147  
     }
 148  
   }
 149  
 
 150  
   @VisibleForTesting
 151  1303
   static final class RetryInfo implements Serializable {
 152  
 
 153  
     private static final long serialVersionUID = -4264634837841455974L;
 154  
     private final Class<? extends Exception> exception;
 155  
     private final Interceptor.RetryResult retry;
 156  48
     private final Set<RetryInfo> children = Sets.newHashSet();
 157  
 
 158  48
     RetryInfo(Class<? extends Exception> exception, Interceptor.RetryResult retry) {
 159  48
       this.exception = checkNotNull(exception);
 160  48
       this.retry = retry;
 161  48
     }
 162  
 
 163  
     @Override
 164  
     public int hashCode() {
 165  56
       return exception.hashCode();
 166  
     }
 167  
 
 168  
     @Override
 169  
     public boolean equals(Object obj) {
 170  0
       if (obj == this) {
 171  0
         return true;
 172  
       }
 173  0
       if (!(obj instanceof RetryInfo)) {
 174  0
         return false;
 175  
       }
 176  
       // We only care about exception in equality as we allow only one instance per exception
 177  0
       return ((RetryInfo) obj).exception.equals(exception);
 178  
     }
 179  
   }
 180  
 
 181  20
   private ExceptionHandler(Builder builder) {
 182  20
     interceptors = builder.interceptors.build();
 183  20
     retriableExceptions = builder.retriableExceptions.build();
 184  20
     nonRetriableExceptions = builder.nonRetriableExceptions.build();
 185  20
     Preconditions.checkArgument(
 186  
         Sets.intersection(retriableExceptions, nonRetriableExceptions).isEmpty(),
 187  
         "Same exception was found in both retryable and non-retryable sets");
 188  20
     for (Class<? extends Exception> exception : retriableExceptions) {
 189  26
       addRetryInfo(new RetryInfo(exception, Interceptor.RetryResult.RETRY), retryInfo);
 190  26
     }
 191  20
     for (Class<? extends Exception> exception : nonRetriableExceptions) {
 192  22
       addRetryInfo(new RetryInfo(exception, Interceptor.RetryResult.ABORT), retryInfo);
 193  22
     }
 194  20
   }
 195  
 
 196  
   private static void addRetryInfo(RetryInfo retryInfo, Set<RetryInfo> dest) {
 197  58
     for (RetryInfo current : dest) {
 198  40
       if (current.exception.isAssignableFrom(retryInfo.exception)) {
 199  10
         addRetryInfo(retryInfo, current.children);
 200  10
         return;
 201  
       }
 202  30
       if (retryInfo.exception.isAssignableFrom(current.exception)) {
 203  4
         retryInfo.children.add(current);
 204  
       }
 205  30
     }
 206  48
     dest.removeAll(retryInfo.children);
 207  48
     dest.add(retryInfo);
 208  48
   }
 209  
 
 210  
   private static RetryInfo findMostSpecificRetryInfo(Set<RetryInfo> retryInfo,
 211  
       Class<? extends Exception> exception) {
 212  772
     for (RetryInfo current : retryInfo) {
 213  617
       if (current.exception.isAssignableFrom(exception)) {
 214  390
         RetryInfo match = findMostSpecificRetryInfo(current.children, exception);
 215  390
         return match == null ? current : match;
 216  
       }
 217  227
     }
 218  382
     return null;
 219  
   }
 220  
 
 221  
   // called for Class<? extends Callable>, therefore a "call" method must be found.
 222  
   private static Method getCallableMethod(Class<?> clazz) {
 223  
     try {
 224  292
       return clazz.getDeclaredMethod("call");
 225  4
     } catch (NoSuchMethodException e) {
 226  
       // check parent
 227  4
       return getCallableMethod(clazz.getSuperclass());
 228  0
     } catch (SecurityException e) {
 229  
       // This should never happen
 230  0
       throw new IllegalStateException("Unexpected exception", e);
 231  
     }
 232  
   }
 233  
 
 234  
   void verifyCaller(Callable<?> callable) {
 235  288
     Method callMethod = getCallableMethod(callable.getClass());
 236  568
     for (Class<?> exceptionOrError : callMethod.getExceptionTypes()) {
 237  290
       Preconditions.checkArgument(Exception.class.isAssignableFrom(exceptionOrError),
 238  
           "Callable method exceptions must be derived from Exception");
 239  
       @SuppressWarnings("unchecked")
 240  286
       Class<? extends Exception> exception = (Class<? extends Exception>) exceptionOrError;
 241  286
       Preconditions.checkArgument(findMostSpecificRetryInfo(retryInfo, exception) != null,
 242  
           "Declared exception '" + exception + "' is not covered by exception handler");
 243  
     }
 244  278
   }
 245  
 
 246  
   public Set<Class<? extends Exception>> getRetriableExceptions() {
 247  
     return retriableExceptions;
 248  
   }
 249  
 
 250  
   public Set<Class<? extends Exception>> getNonRetriableExceptions() {
 251  
     return nonRetriableExceptions;
 252  
   }
 253  
 
 254  
   boolean shouldRetry(Exception ex) {
 255  126
     for (Interceptor interceptor : interceptors) {
 256  40
       Interceptor.RetryResult retryResult = interceptor.beforeEval(ex);
 257  40
       if (retryResult != null) {
 258  30
         return retryResult.booleanValue();
 259  
       }
 260  10
     }
 261  96
     RetryInfo retryInfo = findMostSpecificRetryInfo(this.retryInfo, ex.getClass());
 262  96
     Interceptor.RetryResult retryResult =
 263  
         retryInfo == null ? Interceptor.RetryResult.ABORT : retryInfo.retry;
 264  96
     for (Interceptor interceptor : interceptors) {
 265  10
       retryResult = firstNonNull(interceptor.afterEval(ex, retryResult), retryResult);
 266  10
     }
 267  96
     return retryResult.booleanValue();
 268  
   }
 269  
 
 270  
   /**
 271  
    * Returns an instance which retry any checked exception and abort on any runtime exception.
 272  
    */
 273  
   public static ExceptionHandler getDefaultInstance() {
 274  12
     return DEFAULT_INSTANCE;
 275  
   }
 276  
 
 277  
   public static Builder builder() {
 278  18
     return new Builder();
 279  
   }
 280  
 }
- - - - diff --git a/cobertura/com.google.gcloud.RetryHelper.html b/cobertura/com.google.gcloud.RetryHelper.html deleted file mode 100644 index 4650fcefebfc..000000000000 --- a/cobertura/com.google.gcloud.RetryHelper.html +++ /dev/null @@ -1,469 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.RetryHelper
-
 
- - - - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
RetryHelper
85%
51/60
77%
14/18
1.818
RetryHelper$Context
100%
2/2
N/A
1.818
RetryHelper$NonRetriableException
N/A
N/A
1.818
RetryHelper$RetriesExhaustedException
N/A
N/A
1.818
RetryHelper$RetryHelperException
N/A
N/A
1.818
RetryHelper$RetryInterruptedException
0%
0/2
N/A
1.818
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkNotNull;
 20  
 import static java.lang.StrictMath.max;
 21  
 import static java.lang.StrictMath.min;
 22  
 import static java.lang.StrictMath.pow;
 23  
 import static java.lang.StrictMath.random;
 24  
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 25  
 
 26  
 import com.google.common.annotations.VisibleForTesting;
 27  
 import com.google.common.base.MoreObjects;
 28  
 import com.google.common.base.MoreObjects.ToStringHelper;
 29  
 import com.google.common.base.Stopwatch;
 30  
 
 31  
 import java.io.InterruptedIOException;
 32  
 import java.nio.channels.ClosedByInterruptException;
 33  
 import java.util.concurrent.Callable;
 34  
 import java.util.logging.Level;
 35  
 import java.util.logging.Logger;
 36  
 
 37  
 /**
 38  
  * Utility class for retrying operations. For more details about the parameters, see
 39  
  * {@link RetryParams}. If the request is never successful, a {@link RetriesExhaustedException} will
 40  
  * be thrown.
 41  
  *
 42  
  * @param <V> return value of the closure that is being run with retries
 43  
  */
 44  68
 public class RetryHelper<V> {
 45  
 
 46  2
   private static final Logger log = Logger.getLogger(RetryHelper.class.getName());
 47  
 
 48  
   private final Stopwatch stopwatch;
 49  
   private final Callable<V> callable;
 50  
   private final RetryParams params;
 51  
   private final ExceptionHandler exceptionHandler;
 52  
   private int attemptNumber;
 53  
 
 54  
 
 55  2
   private static final ThreadLocal<Context> context = new ThreadLocal<>();
 56  
 
 57  
   public static class RetryHelperException extends RuntimeException {
 58  
 
 59  
     private static final long serialVersionUID = -2907061015610448235L;
 60  
 
 61  
     RetryHelperException() {}
 62  
 
 63  
     RetryHelperException(String message) {
 64  
       super(message);
 65  
     }
 66  
 
 67  
     RetryHelperException(Throwable cause) {
 68  
       super(cause);
 69  
     }
 70  
 
 71  
     RetryHelperException(String message, Throwable cause) {
 72  
       super(message, cause);
 73  
     }
 74  
   }
 75  
 
 76  
   /**
 77  
    * Thrown when a RetryHelper failed to complete its work due to interruption. Throwing this
 78  
    * exception also sets the thread interrupt flag.
 79  
    */
 80  
   public static final class RetryInterruptedException extends RetryHelperException {
 81  
 
 82  
     private static final long serialVersionUID = 1678966737697204885L;
 83  
 
 84  
     RetryInterruptedException() {}
 85  
 
 86  
     /**
 87  
      * Sets the caller thread interrupt flag and throws {@code RetryInterruptedException}.
 88  
      */
 89  
     public static void propagate() throws RetryInterruptedException {
 90  0
       Thread.currentThread().interrupt();
 91  0
       throw new RetryInterruptedException();
 92  
     }
 93  
   }
 94  
 
 95  
   /**
 96  
    * Thrown when a RetryHelper has attempted the maximum number of attempts allowed by RetryParams
 97  
    * and was not successful.
 98  
    */
 99  
   public static final class RetriesExhaustedException extends RetryHelperException {
 100  
 
 101  
     private static final long serialVersionUID = 780199686075408083L;
 102  
 
 103  
     RetriesExhaustedException(String message) {
 104  
       super(message);
 105  
     }
 106  
 
 107  
     RetriesExhaustedException(String message, Throwable cause) {
 108  
       super(message, cause);
 109  
     }
 110  
   }
 111  
 
 112  
   /**
 113  
    * Thrown when RetryHelper callable has indicate it should not be retried.
 114  
    */
 115  
   public static final class NonRetriableException extends RetryHelperException {
 116  
 
 117  
     private static final long serialVersionUID = -2331878521983499652L;
 118  
 
 119  
     NonRetriableException(Throwable throwable) {
 120  
       super(throwable);
 121  
     }
 122  
   }
 123  
 
 124  
   static class Context {
 125  
 
 126  
     private final RetryHelper<?> helper;
 127  
 
 128  
     Context(RetryHelper<?> helper) {
 129  
       this.helper = helper;
 130  
     }
 131  
 
 132  
     public RetryParams getRetryParams() {
 133  16
       return helper.params;
 134  
     }
 135  
 
 136  
     public int getAttemptNumber() {
 137  52
       return helper.attemptNumber;
 138  
     }
 139  
   }
 140  
 
 141  
   @VisibleForTesting
 142  
   static void setContext(Context ctx) {
 143  528
     if (ctx == null) {
 144  258
       context.remove();
 145  
     } else {
 146  270
       context.set(ctx);
 147  
     }
 148  528
   }
 149  
 
 150  
   static Context getContext() {
 151  342
     return context.get();
 152  
   }
 153  
 
 154  
   @VisibleForTesting
 155  
   RetryHelper(Callable<V> callable, RetryParams params, ExceptionHandler exceptionHandler,
 156  264
       Stopwatch stopwatch) {
 157  264
     this.callable = checkNotNull(callable);
 158  264
     this.params = checkNotNull(params);
 159  264
     this.stopwatch = checkNotNull(stopwatch);
 160  264
     this.exceptionHandler = checkNotNull(exceptionHandler);
 161  264
     exceptionHandler.verifyCaller(callable);
 162  264
   }
 163  
 
 164  
   @Override
 165  
   public String toString() {
 166  8
     ToStringHelper toStringHelper = MoreObjects.toStringHelper(this);
 167  8
     toStringHelper.add("params", params);
 168  8
     toStringHelper.add("stopwatch", stopwatch);
 169  8
     toStringHelper.add("attemptNumber", attemptNumber);
 170  8
     toStringHelper.add("callable", callable);
 171  8
     toStringHelper.add("exceptionHandler", exceptionHandler);
 172  8
     return toStringHelper.toString();
 173  
   }
 174  
 
 175  
   private V doRetry() throws RetryHelperException {
 176  264
     stopwatch.start();
 177  
     while (true) {
 178  328
       attemptNumber++;
 179  
       Exception exception;
 180  
       try {
 181  328
         V value = callable.call();
 182  248
         if (attemptNumber > 1 && log.isLoggable(Level.FINE)) {
 183  0
           log.fine(this + ": attempt #" + attemptNumber + " succeeded");
 184  
         }
 185  248
         return value;
 186  0
       } catch (InterruptedException | InterruptedIOException | ClosedByInterruptException e) {
 187  0
         if (!exceptionHandler.shouldRetry(e)) {
 188  0
           RetryInterruptedException.propagate();
 189  
         }
 190  0
         exception = e;
 191  80
       } catch (Exception e) {
 192  80
         if (!exceptionHandler.shouldRetry(e)) {
 193  8
           throw new NonRetriableException(e);
 194  
         }
 195  72
         exception = e;
 196  0
       }
 197  72
       if (attemptNumber >= params.getRetryMaxAttempts()
 198  
           || attemptNumber >= params.getRetryMinAttempts()
 199  
           && stopwatch.elapsed(MILLISECONDS) >= params.getTotalRetryPeriodMillis()) {
 200  8
         throw new RetriesExhaustedException(this + ": Too many failures, giving up", exception);
 201  
       }
 202  64
       long sleepDurationMillis = getSleepDuration(params, attemptNumber);
 203  64
       if (log.isLoggable(Level.FINE)) {
 204  0
         log.fine(this + ": Attempt #" + attemptNumber + " failed [" + exception
 205  
             + "], sleeping for " + sleepDurationMillis + " ms");
 206  
       }
 207  
       try {
 208  64
         Thread.sleep(sleepDurationMillis);
 209  0
       } catch (InterruptedException e) {
 210  
         // propagate as RetryInterruptedException
 211  0
         RetryInterruptedException.propagate();
 212  64
       }
 213  64
     }
 214  
   }
 215  
 
 216  
   @VisibleForTesting
 217  
   static long getSleepDuration(RetryParams retryParams, int attemptsSoFar) {
 218  88
     long initialDelay = retryParams.getInitialRetryDelayMillis();
 219  88
     double backoffFactor = retryParams.getRetryDelayBackoffFactor();
 220  88
     long maxDelay = retryParams.getMaxRetryDelayMillis();
 221  88
     long retryDelay = getExponentialValue(initialDelay, backoffFactor, maxDelay, attemptsSoFar);
 222  88
     return (long) ((random() / 2.0 + .75) * retryDelay);
 223  
   }
 224  
 
 225  
   private static long getExponentialValue(long initialDelay, double backoffFactor, long maxDelay,
 226  
       int attemptsSoFar) {
 227  88
     return (long) min(maxDelay, pow(backoffFactor, max(1, attemptsSoFar) - 1) * initialDelay);
 228  
   }
 229  
 
 230  
   public static <V> V runWithRetries(Callable<V> callable) throws RetryHelperException {
 231  8
     return runWithRetries(callable, RetryParams.getDefaultInstance(),
 232  
         ExceptionHandler.getDefaultInstance());
 233  
   }
 234  
 
 235  
   public static <V> V runWithRetries(Callable<V> callable, RetryParams params,
 236  
       ExceptionHandler exceptionHandler) throws RetryHelperException {
 237  262
     return runWithRetries(callable, params, exceptionHandler, Stopwatch.createUnstarted());
 238  
   }
 239  
 
 240  
   @VisibleForTesting
 241  
   static <V> V runWithRetries(Callable<V> callable, RetryParams params,
 242  
       ExceptionHandler exceptionHandler, Stopwatch stopwatch) throws RetryHelperException {
 243  264
     RetryHelper<V> retryHelper = new RetryHelper<>(callable, params, exceptionHandler, stopwatch);
 244  264
     Context previousContext = getContext();
 245  264
     setContext(new Context(retryHelper));
 246  
     try {
 247  264
       return retryHelper.doRetry();
 248  
     } finally {
 249  248
       setContext(previousContext);
 250  
     }
 251  
   }
 252  
 }
- - - - diff --git a/cobertura/com.google.gcloud.RetryParams.html b/cobertura/com.google.gcloud.RetryParams.html deleted file mode 100644 index f32b8b3299dc..000000000000 --- a/cobertura/com.google.gcloud.RetryParams.html +++ /dev/null @@ -1,544 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.RetryParams
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
RetryParams
94%
33/35
75%
21/28
1.455
RetryParams$1
N/A
N/A
1.455
RetryParams$Builder
100%
31/31
100%
2/2
1.455
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkArgument;
 20  
 
 21  
 import com.google.common.base.MoreObjects;
 22  
 import com.google.common.base.MoreObjects.ToStringHelper;
 23  
 
 24  
 import java.io.Serializable;
 25  
 import java.util.Objects;
 26  
 
 27  
 /**
 28  
  * Parameters for configuring retries with an exponential backoff. Initial request is executed
 29  
  * immediately. If the request fails but passes the {@link ExceptionHandler} criteria the calling
 30  
  * thread sleeps for {@code initialRetryDelayMillis}. Each subsequent failure the sleep interval is
 31  
  * calculated as:
 32  
  * <p>
 33  
  * {@code retryDelayBackoffFactor ^ attempts * initialRetryDelayMillis} but would be upper-bounded
 34  
  * to {@code maxRetryDelayMillis}
 35  
  * </p>
 36  
  * This proceeds until either the request is successful, {@code retryMaxAttempts} are made, or both
 37  
  * {@code retryMinAttempts} are made and {@code totalRetryPeriodMillis} have elapsed. To construct
 38  
  * {@code RetryParams}, first create a {@link RetryParams.Builder}. The builder is mutable and each
 39  
  * of the parameters can be set (any unset parameters will fallback to the defaults). The
 40  
  * {@code Builder} can be then used to create an immutable {@code RetryParams} object. For default
 41  
  * {@code RetryParams} use {@link #getDefaultInstance}. Default settings are subject to change
 42  
  * release to release. If you require specific settings, explicitly create an instance of
 43  
  * {@code RetryParams} with all the required settings.
 44  
  *
 45  
  * @see RetryHelper
 46  
  */
 47  34
 public final class RetryParams implements Serializable {
 48  
 
 49  
   private static final long serialVersionUID = -8492751576749007700L;
 50  
 
 51  
   public static final int DEFAULT_RETRY_MIN_ATTEMPTS = 3;
 52  
   public static final int DEFAULT_RETRY_MAX_ATTEMPTS = 6;
 53  
   public static final long DEFAULT_INITIAL_RETRY_DELAY_MILLIS = 250L;
 54  
   public static final long DEFAULT_MAX_RETRY_DELAY_MILLIS = 10_000L;
 55  
   public static final double DEFAULT_RETRY_DELAY_BACKOFF_FACTOR = 2.0;
 56  
   public static final long DEFAULT_TOTAL_RETRY_PERIOD_MILLIS = 50_000L;
 57  
 
 58  
   private final int retryMinAttempts;
 59  
   private final int retryMaxAttempts;
 60  
   private final long initialRetryDelayMillis;
 61  
   private final long maxRetryDelayMillis;
 62  
   private final double retryDelayBackoffFactor;
 63  
   private final long totalRetryPeriodMillis;
 64  
 
 65  2
   private static final RetryParams DEFAULT_INSTANCE = new RetryParams(new Builder());
 66  2
   private static final RetryParams NO_RETRIES =
 67  
       builder().retryMaxAttempts(1).retryMinAttempts(1).build();
 68  
 
 69  
 
 70  
   /**
 71  
    * RetryParams builder.
 72  
    */
 73  250
   public static final class Builder {
 74  
 
 75  
     private int retryMinAttempts;
 76  
     private int retryMaxAttempts;
 77  
     private long initialRetryDelayMillis;
 78  
     private long maxRetryDelayMillis;
 79  
     private double retryDelayBackoffFactor;
 80  
     private long totalRetryPeriodMillis;
 81  
 
 82  
     private Builder() {
 83  34
       this(null);
 84  34
     }
 85  
 
 86  36
     Builder(/* Nullable */RetryParams retryParams) {
 87  36
       if (retryParams == null) {
 88  34
         retryMinAttempts = DEFAULT_RETRY_MIN_ATTEMPTS;
 89  34
         retryMaxAttempts = DEFAULT_RETRY_MAX_ATTEMPTS;
 90  34
         initialRetryDelayMillis = DEFAULT_INITIAL_RETRY_DELAY_MILLIS;
 91  34
         maxRetryDelayMillis = DEFAULT_MAX_RETRY_DELAY_MILLIS;
 92  34
         retryDelayBackoffFactor = DEFAULT_RETRY_DELAY_BACKOFF_FACTOR;
 93  34
         totalRetryPeriodMillis = DEFAULT_TOTAL_RETRY_PERIOD_MILLIS;
 94  
       } else {
 95  2
         retryMinAttempts = retryParams.getRetryMinAttempts();
 96  2
         retryMaxAttempts = retryParams.getRetryMaxAttempts();
 97  2
         initialRetryDelayMillis = retryParams.getInitialRetryDelayMillis();
 98  2
         maxRetryDelayMillis = retryParams.getMaxRetryDelayMillis();
 99  2
         retryDelayBackoffFactor = retryParams.getRetryDelayBackoffFactor();
 100  2
         totalRetryPeriodMillis = retryParams.getTotalRetryPeriodMillis();
 101  
       }
 102  36
     }
 103  
 
 104  
     /**
 105  
      * Sets retryMinAttempts.
 106  
      *
 107  
      * @param retryMinAttempts the retryMinAttempts to set
 108  
      * @return the Builder for chaining
 109  
      */
 110  
     public Builder retryMinAttempts(int retryMinAttempts) {
 111  14
       this.retryMinAttempts = retryMinAttempts;
 112  14
       return this;
 113  
     }
 114  
 
 115  
     /**
 116  
      * Sets retryMaxAttempts.
 117  
      *
 118  
      * @param retryMaxAttempts the retryMaxAttempts to set
 119  
      * @return the Builder for chaining
 120  
      */
 121  
     public Builder retryMaxAttempts(int retryMaxAttempts) {
 122  20
       this.retryMaxAttempts = retryMaxAttempts;
 123  20
       return this;
 124  
     }
 125  
 
 126  
     /**
 127  
      * Sets initialRetryDelayMillis.
 128  
      *
 129  
      * @param initialRetryDelayMillis the initialRetryDelayMillis to set
 130  
      * @return the Builder for chaining
 131  
      */
 132  
     public Builder initialRetryDelayMillis(long initialRetryDelayMillis) {
 133  16
       this.initialRetryDelayMillis = initialRetryDelayMillis;
 134  16
       return this;
 135  
     }
 136  
 
 137  
     /**
 138  
      * Sets maxRetryDelayMillis.
 139  
      *
 140  
      * @param maxRetryDelayMillis the maxRetryDelayMillis to set
 141  
      * @return the Builder for chaining
 142  
      */
 143  
     public Builder maxRetryDelayMillis(long maxRetryDelayMillis) {
 144  8
       this.maxRetryDelayMillis = maxRetryDelayMillis;
 145  8
       return this;
 146  
     }
 147  
 
 148  
     /**
 149  
      * Sets retryDelayBackoffFactor.
 150  
      *
 151  
      * @param retryDelayBackoffFactor the retryDelayBackoffFactor to set
 152  
      * @return the Builder for chaining
 153  
      */
 154  
     public Builder retryDelayBackoffFactor(double retryDelayBackoffFactor) {
 155  6
       this.retryDelayBackoffFactor = retryDelayBackoffFactor;
 156  6
       return this;
 157  
     }
 158  
 
 159  
     /**
 160  
      * Sets totalRetryPeriodMillis.
 161  
      *
 162  
      * @param totalRetryPeriodMillis the totalRetryPeriodMillis to set
 163  
      * @return the Builder for chaining
 164  
      */
 165  
     public Builder totalRetryPeriodMillis(long totalRetryPeriodMillis) {
 166  12
       this.totalRetryPeriodMillis = totalRetryPeriodMillis;
 167  12
       return this;
 168  
     }
 169  
 
 170  
     /**
 171  
      * Create an instance of RetryParams with the parameters set in this builder.
 172  
      *
 173  
      * @return a new instance of RetryParams
 174  
      */
 175  
     public RetryParams build() {
 176  34
       return new RetryParams(this);
 177  
     }
 178  
   }
 179  
 
 180  
   /**
 181  
    * Create a new RetryParams with the parameters from a {@link RetryParams.Builder}
 182  
    *
 183  
    * @param builder the parameters to use to construct the RetryParams object
 184  
    */
 185  36
   private RetryParams(Builder builder) {
 186  36
     retryMinAttempts = builder.retryMinAttempts;
 187  36
     retryMaxAttempts = builder.retryMaxAttempts;
 188  36
     initialRetryDelayMillis = builder.initialRetryDelayMillis;
 189  36
     maxRetryDelayMillis = builder.maxRetryDelayMillis;
 190  36
     retryDelayBackoffFactor = builder.retryDelayBackoffFactor;
 191  36
     totalRetryPeriodMillis = builder.totalRetryPeriodMillis;
 192  36
     checkArgument(retryMinAttempts >= 0, "retryMinAttempts must not be negative");
 193  34
     checkArgument(retryMaxAttempts >= retryMinAttempts,
 194  
         "retryMaxAttempts must not be smaller than retryMinAttempts");
 195  32
     checkArgument(initialRetryDelayMillis >= 0, "initialRetryDelayMillis must not be negative");
 196  30
     checkArgument(maxRetryDelayMillis >= initialRetryDelayMillis,
 197  
         "maxRetryDelayMillis must not be smaller than initialRetryDelayMillis");
 198  28
     checkArgument(retryDelayBackoffFactor >= 0, "retryDelayBackoffFactor must not be negative");
 199  26
     checkArgument(totalRetryPeriodMillis >= 0, "totalRetryPeriodMillis must not be negative");
 200  24
   }
 201  
 
 202  
   /**
 203  
    * Returns an instance with the default parameters.
 204  
    */
 205  
   public static RetryParams getDefaultInstance() {
 206  24
     return DEFAULT_INSTANCE;
 207  
   }
 208  
 
 209  
   public static RetryParams noRetries() {
 210  82
     return NO_RETRIES;
 211  
   }
 212  
 
 213  
   /**
 214  
    * Returns the retryMinAttempts.
 215  
    */
 216  
   public int getRetryMinAttempts() {
 217  
     return retryMinAttempts;
 218  
   }
 219  
 
 220  
   /**
 221  
    * Returns the retryMaxAttempts.
 222  
    */
 223  
   public int getRetryMaxAttempts() {
 224  
     return retryMaxAttempts;
 225  
   }
 226  
 
 227  
   /**
 228  
    * Returns the initialRetryDelayMillis.
 229  
    */
 230  
   public long getInitialRetryDelayMillis() {
 231  
     return initialRetryDelayMillis;
 232  
   }
 233  
 
 234  
   /**
 235  
    * Returns the maxRetryDelayMillis.
 236  
    */
 237  
   public long getMaxRetryDelayMillis() {
 238  
     return maxRetryDelayMillis;
 239  
   }
 240  
 
 241  
   /**
 242  
    * Returns the maxRetryDelayBackoffFactor.
 243  
    */
 244  
   public double getRetryDelayBackoffFactor() {
 245  
     return retryDelayBackoffFactor;
 246  
   }
 247  
 
 248  
   /**
 249  
    * Returns the totalRetryPeriodMillis.
 250  
    */
 251  
   public long getTotalRetryPeriodMillis() {
 252  
     return totalRetryPeriodMillis;
 253  
   }
 254  
 
 255  
   @Override
 256  
   public int hashCode() {
 257  0
     return Objects.hash(retryMinAttempts, retryMaxAttempts, initialRetryDelayMillis,
 258  
         maxRetryDelayMillis, retryDelayBackoffFactor, totalRetryPeriodMillis);
 259  
   }
 260  
 
 261  
   @Override
 262  
   public boolean equals(Object obj) {
 263  6
     if (obj == this) {
 264  2
       return true;
 265  
     }
 266  4
     if (!(obj instanceof RetryParams)) {
 267  0
       return false;
 268  
     }
 269  4
     RetryParams other = (RetryParams) obj;
 270  4
     return retryMinAttempts == other.retryMinAttempts && retryMaxAttempts == other.retryMaxAttempts
 271  
         && initialRetryDelayMillis == other.initialRetryDelayMillis
 272  
         && maxRetryDelayMillis == other.maxRetryDelayMillis
 273  
         && retryDelayBackoffFactor == other.retryDelayBackoffFactor
 274  
         && totalRetryPeriodMillis == other.totalRetryPeriodMillis;
 275  
   }
 276  
 
 277  
   @Override
 278  
   public String toString() {
 279  8
     ToStringHelper toStringHelper = MoreObjects.toStringHelper(this);
 280  8
     toStringHelper.add("retryMinAttempts", retryMinAttempts);
 281  8
     toStringHelper.add("retryMaxAttempts", retryMaxAttempts);
 282  8
     toStringHelper.add("initialRetryDelayMillis", initialRetryDelayMillis);
 283  8
     toStringHelper.add("maxRetryDelayMillis", maxRetryDelayMillis);
 284  8
     toStringHelper.add("retryDelayBackoffFactor", retryDelayBackoffFactor);
 285  8
     toStringHelper.add("totalRetryPeriodMillis", totalRetryPeriodMillis);
 286  8
     return toStringHelper.toString();
 287  
   }
 288  
 
 289  
   public static Builder builder() {
 290  32
     return new Builder();
 291  
   }
 292  
 }
- - - - diff --git a/cobertura/com.google.gcloud.Service.html b/cobertura/com.google.gcloud.Service.html deleted file mode 100644 index 3fd867942b22..000000000000 --- a/cobertura/com.google.gcloud.Service.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.Service
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Service
N/A
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud;
 18  
 
 19  
 public interface Service<O extends ServiceOptions> {
 20  
   O options();
 21  
 }
- - - - diff --git a/cobertura/com.google.gcloud.ServiceOptions.html b/cobertura/com.google.gcloud.ServiceOptions.html deleted file mode 100644 index 397df551e3dc..000000000000 --- a/cobertura/com.google.gcloud.ServiceOptions.html +++ /dev/null @@ -1,549 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.ServiceOptions
-
 
- - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
ServiceOptions
31%
24/76
16%
10/62
2.267
ServiceOptions$Builder
90%
20/22
N/A
2.267
ServiceOptions$DefaultHttpTransportFactory
75%
6/8
50%
1/2
2.267
ServiceOptions$HttpTransportFactory
N/A
N/A
2.267
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud;
 18  
 
 19  
 
 20  
 import static com.google.common.base.MoreObjects.firstNonNull;
 21  
 import static com.google.common.base.Preconditions.checkNotNull;
 22  
 import static java.nio.charset.StandardCharsets.UTF_8;
 23  
 
 24  
 import com.google.api.client.extensions.appengine.http.UrlFetchTransport;
 25  
 import com.google.api.client.http.HttpRequestInitializer;
 26  
 import com.google.api.client.http.HttpTransport;
 27  
 import com.google.api.client.http.javanet.NetHttpTransport;
 28  
 import com.google.gcloud.spi.ServiceRpcFactory;
 29  
 
 30  
 import java.io.BufferedReader;
 31  
 import java.io.File;
 32  
 import java.io.FileReader;
 33  
 import java.io.IOException;
 34  
 import java.io.InputStream;
 35  
 import java.io.InputStreamReader;
 36  
 import java.io.Serializable;
 37  
 import java.lang.reflect.Method;
 38  
 import java.net.HttpURLConnection;
 39  
 import java.net.URL;
 40  
 import java.util.Locale;
 41  
 import java.util.Objects;
 42  
 import java.util.Set;
 43  
 import java.util.regex.Matcher;
 44  
 import java.util.regex.Pattern;
 45  
 
 46  276
 public abstract class ServiceOptions<R, O extends ServiceOptions<R, O>> implements Serializable {
 47  
 
 48  
   private static final String DEFAULT_HOST = "https://www.googleapis.com";
 49  
   private static final long serialVersionUID = 1203687993961393350L;
 50  
   private static final String PROJECT_ENV_NAME = "default_project_id";
 51  
 
 52  
   private final String projectId;
 53  
   private final String host;
 54  
   private final HttpTransportFactory httpTransportFactory;
 55  
   private final AuthCredentials authCredentials;
 56  
   private final RetryParams retryParams;
 57  
   private final ServiceRpcFactory<R, O> serviceRpcFactory;
 58  
 
 59  
   public interface HttpTransportFactory extends Serializable {
 60  
     HttpTransport create();
 61  
   }
 62  
 
 63  4
   private enum DefaultHttpTransportFactory implements HttpTransportFactory {
 64  
 
 65  2
     INSTANCE;
 66  
 
 67  
     @Override
 68  
     public HttpTransport create() {
 69  
       // Consider App Engine
 70  76
       if (appEngineAppId() != null) {
 71  
         try {
 72  0
           return new UrlFetchTransport();
 73  0
         } catch (Exception ignore) {
 74  
           // Maybe not on App Engine
 75  
         }
 76  
       }
 77  
       // Consider Compute
 78  
       try {
 79  76
         return AuthCredentials.getComputeCredential().getTransport();
 80  76
       } catch (Exception e) {
 81  
         // Maybe not on GCE
 82  
       }
 83  76
       return new NetHttpTransport();
 84  
     }
 85  
   }
 86  
 
 87  
 
 88  
 
 89  742
   protected abstract static class Builder<R, O extends ServiceOptions<R, O>,
 90  
       B extends Builder<R, O, B>> {
 91  
 
 92  
     private String projectId;
 93  
     private String host;
 94  
     private HttpTransportFactory httpTransportFactory;
 95  
     private AuthCredentials authCredentials;
 96  
     private RetryParams retryParams;
 97  
     private ServiceRpcFactory<R, O> serviceRpcFactory;
 98  
 
 99  
     protected Builder() {}
 100  
 
 101  46
     protected Builder(ServiceOptions<R, O> options) {
 102  46
       projectId = options.projectId;
 103  46
       host = options.host;
 104  46
       httpTransportFactory = options.httpTransportFactory;
 105  46
       authCredentials = options.authCredentials;
 106  46
       retryParams = options.retryParams;
 107  46
       serviceRpcFactory = options.serviceRpcFactory;
 108  46
     }
 109  
 
 110  
     protected abstract ServiceOptions build();
 111  
 
 112  
     @SuppressWarnings("unchecked")
 113  
     protected B self() {
 114  172
       return (B) this;
 115  
     }
 116  
 
 117  
     public B projectId(String projectId) {
 118  94
       this.projectId = projectId;
 119  94
       return self();
 120  
     }
 121  
 
 122  
     public B host(String host) {
 123  50
       this.host = host;
 124  50
       return self();
 125  
     }
 126  
 
 127  
     public B httpTransportFactory(HttpTransportFactory httpTransportFactory) {
 128  0
       this.httpTransportFactory = httpTransportFactory;
 129  0
       return self();
 130  
     }
 131  
 
 132  
     public B authCredentials(AuthCredentials authCredentials) {
 133  8
       this.authCredentials = authCredentials;
 134  8
       return self();
 135  
     }
 136  
 
 137  
     public B retryParams(RetryParams retryParams) {
 138  6
       this.retryParams = retryParams;
 139  6
       return self();
 140  
     }
 141  
 
 142  
     public B serviceRpcFactory(ServiceRpcFactory<R, O> serviceRpcFactory) {
 143  14
       this.serviceRpcFactory = serviceRpcFactory;
 144  14
       return self();
 145  
     }
 146  
   }
 147  
 
 148  106
   protected ServiceOptions(Builder<R, O, ?> builder) {
 149  106
     projectId = checkNotNull(builder.projectId != null ? builder.projectId : defaultProject());
 150  106
     host = firstNonNull(builder.host, DEFAULT_HOST);
 151  106
     httpTransportFactory =
 152  
         firstNonNull(builder.httpTransportFactory, DefaultHttpTransportFactory.INSTANCE);
 153  106
     authCredentials = firstNonNull(builder.authCredentials, defaultAuthCredentials());
 154  106
     retryParams = builder.retryParams;
 155  106
     serviceRpcFactory = builder.serviceRpcFactory;
 156  106
   }
 157  
 
 158  
   private static AuthCredentials defaultAuthCredentials() {
 159  
     // Consider App Engine. This will not be needed once issue #21 is fixed.
 160  106
     if (appEngineAppId() != null) {
 161  
       try {
 162  0
         return AuthCredentials.createForAppEngine();
 163  0
       } catch (Exception ignore) {
 164  
         // Maybe not on App Engine
 165  
       }
 166  
     }
 167  
 
 168  
     try {
 169  106
       return AuthCredentials.createApplicationDefaults();
 170  106
     } catch (Exception ex) {
 171  
       // fallback to old-style
 172  
     }
 173  
 
 174  
     // Consider old-style Compute. This will not be needed once issue #21 is fixed.
 175  
     try {
 176  106
       return AuthCredentials.createForComputeEngine();
 177  106
     } catch (Exception ignore) {
 178  
       // Maybe not on GCE
 179  
     }
 180  106
     return AuthCredentials.noCredentials();
 181  
   }
 182  
 
 183  
   protected static String appEngineAppId() {
 184  182
     return System.getProperty("com.google.appengine.application.id");
 185  
   }
 186  
 
 187  
   protected String defaultProject() {
 188  0
     String projectId = System.getProperty(PROJECT_ENV_NAME, System.getenv(PROJECT_ENV_NAME));
 189  0
     if (projectId == null) {
 190  0
       projectId = getAppEngineProjectId();
 191  
     }
 192  0
     return projectId != null ? projectId : googleCloudProjectId();
 193  
   }
 194  
 
 195  
   protected static String googleCloudProjectId() {
 196  
     try {
 197  0
       URL url = new URL("http://metadata/computeMetadata/v1/project/project-id");
 198  0
       HttpURLConnection connection = (HttpURLConnection) url.openConnection();
 199  0
       connection.setRequestProperty("X-Google-Metadata-Request", "True");
 200  0
       InputStream input = connection.getInputStream();
 201  0
       if (connection.getResponseCode() == 200) {
 202  0
         try (BufferedReader reader = new BufferedReader(new InputStreamReader(input, UTF_8))) {
 203  0
           return reader.readLine();
 204  0
         }
 205  
       }
 206  0
     } catch (IOException ignore) {
 207  
       // ignore
 208  0
     }
 209  
    File configDir;
 210  0
     if (System.getenv().containsKey("CLOUDSDK_CONFIG")) {
 211  0
       configDir = new File(System.getenv("CLOUDSDK_CONFIG"));
 212  0
     } else if (isWindows() &&  System.getenv().containsKey("APPDATA")) {
 213  0
       configDir = new File(System.getenv("APPDATA"), "gcloud");
 214  
     } else {
 215  0
       configDir = new File(System.getProperty("user.home"), ".config/gcloud");
 216  
     }
 217  0
     try (BufferedReader reader =
 218  
         new BufferedReader(new FileReader(new File(configDir, "properties")))) {
 219  
       String line;
 220  0
       String section = null;
 221  0
       Pattern projectPattern = Pattern.compile("^project\\s*=\\s*(.*)$");
 222  0
       Pattern sectionPattern = Pattern.compile("^\\[(.*)\\]$");
 223  0
       while((line = reader.readLine()) != null) {
 224  0
         if (line.isEmpty() || line.startsWith(";")) {
 225  0
           continue;
 226  
         }
 227  0
         line = line.trim();
 228  0
         Matcher matcher = sectionPattern.matcher(line);
 229  0
         if (matcher.matches()) {
 230  0
           section = matcher.group(1);
 231  0
         } else if (section == null || section.equals("core")) {
 232  0
           matcher = projectPattern.matcher(line);
 233  0
           if (matcher.matches()) {
 234  0
             return matcher.group(1);
 235  
           }
 236  
         }
 237  0
       }
 238  0
     } catch (IOException ex) {
 239  
       // ignore
 240  0
     }
 241  
     // return null if can't determine
 242  0
     return null;
 243  
   }
 244  
 
 245  
   private static boolean isWindows() {
 246  0
     return System.getProperty("os.name").toLowerCase(Locale.ENGLISH).indexOf("windows") > -1;
 247  
   }
 248  
 
 249  
   protected static String getAppEngineProjectId() {
 250  
     // TODO(ozarov): An alternative to reflection would be to depend on AE api jar:
 251  
     // http://mvnrepository.com/artifact/com.google.appengine/appengine-api-1.0-sdk/1.2.0
 252  
     try {
 253  0
       Class<?> factoryClass =
 254  
           Class.forName("com.google.appengine.api.appidentity.AppIdentityServiceFactory");
 255  0
       Method method = factoryClass.getMethod("getAppIdentityService");
 256  0
       Object appIdentityService = method.invoke(null);
 257  0
       method = appIdentityService.getClass().getMethod("getServiceAccountName");
 258  0
       String serviceAccountName = (String) method.invoke(appIdentityService);
 259  0
       int indexOfAtSign = serviceAccountName.indexOf('@');
 260  0
       return serviceAccountName.substring(0, indexOfAtSign);
 261  0
     } catch (Exception ignore) {
 262  
       // return null if can't determine
 263  0
       return null;
 264  
     }
 265  
   }
 266  
 
 267  
   protected abstract Set<String> scopes();
 268  
 
 269  
   public String projectId() {
 270  156
     return projectId;
 271  
   }
 272  
 
 273  
   public String host() {
 274  82
     return host;
 275  
   }
 276  
 
 277  
   public HttpTransportFactory httpTransportFactory() {
 278  0
     return httpTransportFactory;
 279  
   }
 280  
 
 281  
   public AuthCredentials authCredentials() {
 282  80
     return authCredentials;
 283  
   }
 284  
 
 285  
   public RetryParams retryParams() {
 286  44
     return retryParams != null ? retryParams : RetryParams.noRetries();
 287  
   }
 288  
 
 289  
   public ServiceRpcFactory<R, O> serviceRpcFactory() {
 290  86
     return serviceRpcFactory;
 291  
   }
 292  
 
 293  
   public HttpRequestInitializer httpRequestInitializer() {
 294  76
     HttpTransport httpTransport = httpTransportFactory.create();
 295  76
     return authCredentials().httpRequestInitializer(httpTransport, scopes());
 296  
   }
 297  
 
 298  
   @Override
 299  
   public int hashCode() {
 300  0
     return Objects.hash(projectId, host, httpTransportFactory, authCredentials, retryParams,
 301  
         serviceRpcFactory);
 302  
   }
 303  
 
 304  
   protected boolean isEquals(ServiceOptions other) {
 305  8
     return Objects.equals(projectId, other.projectId)
 306  
         && Objects.equals(host, other.host)
 307  
         && Objects.equals(httpTransportFactory, other.httpTransportFactory)
 308  
         && Objects.equals(authCredentials, other.authCredentials)
 309  
         && Objects.equals(retryParams, other.retryParams)
 310  
         && Objects.equals(serviceRpcFactory, other.serviceRpcFactory);
 311  
   }
 312  
 
 313  
   public abstract Builder<R, O, ?> toBuilder();
 314  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.BaseDatastoreBatchWriter.html b/cobertura/com.google.gcloud.datastore.BaseDatastoreBatchWriter.html deleted file mode 100644 index 6241a2f9dbb7..000000000000 --- a/cobertura/com.google.gcloud.datastore.BaseDatastoreBatchWriter.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.BaseDatastoreBatchWriter
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
BaseDatastoreBatchWriter
98%
98/100
96%
48/50
2.3
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.api.services.datastore.DatastoreV1;
 20  
 import com.google.common.base.Preconditions;
 21  
 import com.google.common.collect.Iterables;
 22  
 import com.google.common.collect.Lists;
 23  
 
 24  
 import java.util.Collections;
 25  
 import java.util.Iterator;
 26  
 import java.util.LinkedHashMap;
 27  
 import java.util.LinkedHashSet;
 28  
 import java.util.LinkedList;
 29  
 import java.util.List;
 30  
 import java.util.Map;
 31  
 import java.util.Set;
 32  
 
 33  
 /**
 34  
  * Base class for DatastoreBatchWriter.
 35  
  */
 36  
 public abstract class BaseDatastoreBatchWriter implements DatastoreBatchWriter {
 37  
 
 38  
   private final String name;
 39  66
   private final Map<Key, FullEntity<Key>> toAdd = new LinkedHashMap<>();
 40  66
   private final List<FullEntity<IncompleteKey>> toAddAutoId = new LinkedList<>();
 41  66
   private final Map<Key, FullEntity<Key>> toUpdate = new LinkedHashMap<>();
 42  66
   private final Map<Key, FullEntity<Key>> toPut = new LinkedHashMap<>();
 43  66
   private final Set<Key> toDelete = new LinkedHashSet<>();
 44  66
   private boolean active = true;
 45  
 
 46  66
   protected BaseDatastoreBatchWriter(String name) {
 47  66
     this.name = name;
 48  66
   }
 49  
 
 50  
   @SuppressWarnings("unchecked")
 51  
   @Override
 52  
   public final void addWithDeferredIdAllocation(FullEntity<?>... entities) {
 53  10
     validateActive();
 54  18
     for (FullEntity<?> entity : entities) {
 55  10
       IncompleteKey key = entity.key();
 56  10
       Preconditions.checkArgument(key != null, "Entity must have a key");
 57  10
       if (key instanceof Key) {
 58  2
         addInternal((FullEntity<Key>) entity);
 59  
       } else {
 60  8
         toAddAutoId.add((FullEntity<IncompleteKey>) entity);
 61  
       }
 62  
     }
 63  8
   }
 64  
 
 65  
   private void addInternal(FullEntity<Key> entity) {
 66  40
     Key key = entity.key();
 67  40
     if (toAdd.containsKey(key) || toUpdate.containsKey(key) || toPut.containsKey(key)) {
 68  6
       throw newInvalidRequest("Entity with the key %s was already added or updated in this %s",
 69  
           entity.key(), name);
 70  
     }
 71  34
     if (toDelete.remove(key)) {
 72  2
       toPut.put(key, entity);
 73  
     } else {
 74  32
       toAdd.put(key, entity);
 75  
     }
 76  34
   }
 77  
 
 78  
   @Override
 79  
   public final Entity add(FullEntity<?> entity) {
 80  32
     return DatastoreHelper.add(this, entity);
 81  
   }
 82  
 
 83  
   @SuppressWarnings("unchecked")
 84  
   @Override
 85  
   public final List<Entity> add(FullEntity<?>... entities) {
 86  36
     validateActive();
 87  28
     List<IncompleteKey> incompleteKeys = Lists.newArrayListWithExpectedSize(entities.length);
 88  60
     for (FullEntity<?> entity : entities) {
 89  38
       IncompleteKey key = entity.key();
 90  38
       Preconditions.checkArgument(key != null, "Entity must have a key");
 91  38
       if (key instanceof Key) {
 92  32
         addInternal((FullEntity<Key>) entity);
 93  
       } else {
 94  6
         incompleteKeys.add(key);
 95  
       }
 96  
     }
 97  
     Iterator<Key> allocated;
 98  22
     if (!incompleteKeys.isEmpty()) {
 99  4
       IncompleteKey[] toAllocate = Iterables.toArray(incompleteKeys, IncompleteKey.class);
 100  4
       allocated = datastore().allocateId(toAllocate).iterator();
 101  4
     } else {
 102  18
       allocated = Collections.emptyIterator();
 103  
     }
 104  22
     List<Entity> answer = Lists.newArrayListWithExpectedSize(entities.length);
 105  54
     for (FullEntity<?> entity : entities) {
 106  32
       if (entity.key() instanceof Key) {
 107  26
         answer.add(Entity.convert((FullEntity<Key>) entity));
 108  
       } else {
 109  6
         Entity entityWithAllocatedId = Entity.builder(allocated.next(), entity).build();
 110  6
         addInternal(entityWithAllocatedId);
 111  6
         answer.add(entityWithAllocatedId);
 112  
       }
 113  
     }
 114  22
     return answer;
 115  
   }
 116  
 
 117  
   @SafeVarargs
 118  
   @Override
 119  
   public final void update(Entity... entities) {
 120  36
     validateActive();
 121  60
     for (Entity entity : entities) {
 122  34
       Key key = entity.key();
 123  34
       if (toDelete.contains(key)) {
 124  2
         throw newInvalidRequest("Entity with the key %s was already deleted in this %s",
 125  
             entity.key(), name);
 126  
       }
 127  32
       if (toAdd.remove(key) != null || toPut.containsKey(key)) {
 128  4
         toPut.put(key, entity);
 129  
       } else {
 130  28
         toUpdate.put(key, entity);
 131  
       }
 132  
     }
 133  26
   }
 134  
 
 135  
   @SafeVarargs
 136  
   @Override
 137  
   public final void put(Entity... entities) {
 138  30
     validateActive();
 139  50
     for (Entity entity : entities) {
 140  28
       Key key = entity.key();
 141  28
       toAdd.remove(key);
 142  28
       toUpdate.remove(key);
 143  28
       toDelete.remove(key);
 144  28
       toPut.put(key, entity);
 145  
     }
 146  22
   }
 147  
 
 148  
   @Override
 149  
   public final void delete(Key... keys) {
 150  32
     validateActive();
 151  52
     for (Key key : keys) {
 152  28
       toAdd.remove(key);
 153  28
       toUpdate.remove(key);
 154  28
       toPut.remove(key);
 155  28
       toDelete.add(key);
 156  
     }
 157  24
   }
 158  
 
 159  
   @Override
 160  
   public boolean active() {
 161  0
     return active;
 162  
   }
 163  
 
 164  
   protected String name() {
 165  0
     return name;
 166  
   }
 167  
 
 168  
   protected Map<Key, FullEntity<Key>> toAdd() {
 169  46
     return toAdd;
 170  
   }
 171  
 
 172  
   protected List<FullEntity<IncompleteKey>> toAddAutoId() {
 173  46
     return toAddAutoId;
 174  
   }
 175  
 
 176  
   protected Map<Key, FullEntity<Key>> toUpdate() {
 177  46
     return toUpdate;
 178  
   }
 179  
 
 180  
   protected Map<Key, FullEntity<Key>> toPut() {
 181  46
     return toPut;
 182  
   }
 183  
 
 184  
   protected Set<Key> toDelete() {
 185  46
     return toDelete;
 186  
   }
 187  
 
 188  
   protected void deactivate() {
 189  22
     active = false;
 190  22
   }
 191  
 
 192  
   protected void validateActive() {
 193  176
     if (!active) {
 194  42
       throw newInvalidRequest("%s is no longer active", name);
 195  
     }
 196  134
   }
 197  
 
 198  
   protected DatastoreServiceException newInvalidRequest(String msg, Object... params) {
 199  50
     return DatastoreServiceException.throwInvalidRequest(String.format(msg, params));
 200  
   }
 201  
 
 202  
   protected DatastoreV1.Mutation.Builder toMutationPb() {
 203  46
     DatastoreV1.Mutation.Builder mutationPb = DatastoreV1.Mutation.newBuilder();
 204  46
     for (FullEntity<IncompleteKey> entity : toAddAutoId()) {
 205  8
       mutationPb.addInsertAutoId(entity.toPb());
 206  8
     }
 207  46
     for (FullEntity<Key> entity : toAdd().values()) {
 208  22
       mutationPb.addInsert(entity.toPb());
 209  22
     }
 210  46
     for (FullEntity<Key> entity : toUpdate().values()) {
 211  18
       mutationPb.addUpdate(entity.toPb());
 212  18
     }
 213  46
     for (FullEntity<Key> entity : toPut().values()) {
 214  26
       mutationPb.addUpsert(entity.toPb());
 215  26
     }
 216  46
     for (Key key : toDelete()) {
 217  20
       mutationPb.addDelete(key.toPb());
 218  20
     }
 219  46
     return mutationPb;
 220  
   }
 221  
 
 222  
   protected abstract DatastoreService datastore();
 223  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.BaseEntity.html b/cobertura/com.google.gcloud.datastore.BaseEntity.html deleted file mode 100644 index 79ab3d6f9253..000000000000 --- a/cobertura/com.google.gcloud.datastore.BaseEntity.html +++ /dev/null @@ -1,719 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.BaseEntity
-
 
- - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
BaseEntity
87%
42/48
87%
14/16
1.229
BaseEntity$Builder
98%
55/56
75%
3/4
1.229
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.gcloud.datastore.BlobValue.of;
 20  
 import static com.google.gcloud.datastore.BooleanValue.of;
 21  
 import static com.google.gcloud.datastore.DateTimeValue.of;
 22  
 import static com.google.gcloud.datastore.DoubleValue.of;
 23  
 import static com.google.gcloud.datastore.EntityValue.of;
 24  
 import static com.google.gcloud.datastore.KeyValue.of;
 25  
 import static com.google.gcloud.datastore.ListValue.of;
 26  
 import static com.google.gcloud.datastore.LongValue.of;
 27  
 import static com.google.gcloud.datastore.NullValue.of;
 28  
 import static com.google.gcloud.datastore.StringValue.of;
 29  
 
 30  
 import com.google.api.services.datastore.DatastoreV1;
 31  
 import com.google.common.collect.ImmutableSortedMap;
 32  
 import com.google.common.collect.Maps;
 33  
 import com.google.protobuf.InvalidProtocolBufferException;
 34  
 
 35  
 import java.util.HashMap;
 36  
 import java.util.List;
 37  
 import java.util.Map;
 38  
 import java.util.Objects;
 39  
 import java.util.Set;
 40  
 
 41  
 /**
 42  
  * A base class for entities (key and properties).
 43  
  * An entity is Google Cloud Datastore persistent data object.
 44  
  * An entity holds one or more properties, represented by a name (as {@link String})
 45  
  * and a value (as {@link com.google.gcloud.datastore.Value}), and may be associated with a
 46  
  * key. For a list of possible values see {@link ValueType}.
 47  
  *
 48  
  * @see <a href="https://cloud.google.com/datastore/docs/concepts/entities">Google Cloud Datastore Entities, Properties, and Keys</a>
 49  
  */
 50  106
 public abstract class BaseEntity<K extends IncompleteKey> extends Serializable<DatastoreV1.Entity> {
 51  
 
 52  
   private static final long serialVersionUID = 8175618724683792766L;
 53  
 
 54  
   private final transient ImmutableSortedMap<String, Value<?>> properties;
 55  
   private final K key;
 56  
 
 57  812
   abstract static class Builder<K extends IncompleteKey, B extends Builder<K, B>> {
 58  
 
 59  
     private K key;
 60  382
     private final Map<String, Value<?>> properties = new HashMap<>();
 61  
 
 62  280
     Builder() {
 63  280
     }
 64  
 
 65  54
     Builder(K key) {
 66  54
       key(key);
 67  54
     }
 68  
 
 69  
     Builder(BaseEntity<K> entity) {
 70  48
       this(entity.key, entity);
 71  48
     }
 72  
 
 73  48
     Builder(K key, BaseEntity<?> entity) {
 74  48
       key(key);
 75  48
       properties(entity.properties);
 76  48
     }
 77  
 
 78  
     protected K key() {
 79  190
       return key;
 80  
     }
 81  
 
 82  
     protected Map<String, Value<?>> properties() {
 83  0
       return properties;
 84  
     }
 85  
 
 86  
     @SuppressWarnings("unchecked")
 87  
     private B self() {
 88  1452
       return (B) this;
 89  
     }
 90  
 
 91  
     @SuppressWarnings("unchecked")
 92  
     protected B fill(DatastoreV1.Entity entityPb) {
 93  224
       Map<String, Value<?>> copiedProperties = Maps.newHashMap();
 94  224
       for (DatastoreV1.Property property : entityPb.getPropertyList()) {
 95  840
         copiedProperties.put(property.getName(), Value.fromPb(property.getValue()));
 96  840
       }
 97  224
       properties(copiedProperties);
 98  224
       if (entityPb.hasKey()) {
 99  224
         key((K) IncompleteKey.fromPb(entityPb.getKey()));
 100  
       }
 101  224
       return self();
 102  
     }
 103  
 
 104  
     protected B properties(Map<String, Value<?>> properties) {
 105  292
       this.properties.putAll(properties);
 106  292
       return self();
 107  
     }
 108  
 
 109  
     public B key(K key) {
 110  358
       this.key = key;
 111  358
       return self();
 112  
     }
 113  
 
 114  
     /**
 115  
      * Clears all the properties.
 116  
      */
 117  
     public B clear() {
 118  22
       properties.clear();
 119  22
       return self();
 120  
     }
 121  
 
 122  
     /**
 123  
      * Removes a property with the given {@code name}.
 124  
      */
 125  
     public B remove(String name) {
 126  6
       properties.remove(name);
 127  6
       return self();
 128  
     }
 129  
 
 130  
     public B set(String name, Value value) {
 131  88
       properties.put(name, value);
 132  88
       return self();
 133  
     }
 134  
 
 135  
     public B set(String name, String value) {
 136  72
       properties.put(name, of(value));
 137  72
       return self();
 138  
     }
 139  
 
 140  
     public B set(String name, long value) {
 141  32
       properties.put(name, of(value));
 142  32
       return self();
 143  
     }
 144  
 
 145  
     public B set(String name, double value) {
 146  30
       properties.put(name, of(value));
 147  30
       return self();
 148  
     }
 149  
 
 150  
     public B set(String name, boolean value) {
 151  36
       properties.put(name, of(value));
 152  36
       return self();
 153  
     }
 154  
 
 155  
     public B set(String name, DateTime value) {
 156  30
       properties.put(name, of(value));
 157  30
       return self();
 158  
     }
 159  
 
 160  
     public B set(String name, Key value) {
 161  32
       properties.put(name, of(value));
 162  32
       return self();
 163  
     }
 164  
 
 165  
     public B set(String name, FullEntity<?> value) {
 166  64
       properties.put(name, of(value));
 167  64
       return self();
 168  
     }
 169  
 
 170  
     public B set(String name, List<? extends Value<?>> values) {
 171  62
       properties.put(name, of(values));
 172  62
       return self();
 173  
     }
 174  
 
 175  
     public B set(String name, Value<?> value, Value<?>... other) {
 176  32
       properties.put(name, of(value, other));
 177  32
       return self();
 178  
     }
 179  
 
 180  
     public B set(String name, Blob value) {
 181  32
       properties.put(name, of(value));
 182  32
       return self();
 183  
     }
 184  
 
 185  
     public B setNull(String name) {
 186  40
       properties.put(name, of());
 187  40
       return self();
 188  
     }
 189  
 
 190  
     public abstract BaseEntity build();
 191  
   }
 192  
 
 193  406
   BaseEntity(Builder<K, ?> builder) {
 194  406
     this.key = builder.key;
 195  406
     this.properties = ImmutableSortedMap.copyOf(builder.properties);
 196  406
   }
 197  
 
 198  0
   BaseEntity(BaseEntity<K> from) {
 199  0
     this.key = from.key();
 200  0
     this.properties = from.properties;
 201  0
   }
 202  
 
 203  
   @Override
 204  
   public int hashCode() {
 205  0
     return Objects.hash(key, properties);
 206  
   }
 207  
 
 208  
   @Override
 209  
   public boolean equals(Object obj) {
 210  290
     if (obj == this) {
 211  48
       return true;
 212  
     }
 213  242
     if (!(obj instanceof BaseEntity)) {
 214  0
       return false;
 215  
     }
 216  242
     BaseEntity other = (BaseEntity) obj;
 217  242
     return Objects.equals(key, other.key)
 218  
         && Objects.equals(properties, other.properties);
 219  
   }
 220  
 
 221  
   /**
 222  
    * Returns true if entity has a non-null key.
 223  
    */
 224  
   public boolean hasKey() {
 225  18
     return key != null;
 226  
   }
 227  
 
 228  
   /**
 229  
    * Returns the associated key or null if it does not have one.
 230  
    */
 231  
   public K key() {
 232  650
     return key;
 233  
   }
 234  
 
 235  
   /**
 236  
    * Returns {@code true} if the entity contains a property with the given {@code name}.
 237  
    */
 238  
   public boolean contains(String name) {
 239  10
     return properties.containsKey(name);
 240  
   }
 241  
 
 242  
   /**
 243  
    * Returns the {@link Value} for the given property {@code name}.
 244  
    *
 245  
    * @throws DatastoreServiceException if not such property.
 246  
    */
 247  
   public <V extends Value<?>> V getValue(String name) {
 248  
     @SuppressWarnings("unchecked")
 249  112
     V property = (V) properties.get(name);
 250  112
     if (property == null) {
 251  6
       throw DatastoreServiceException.throwInvalidRequest("No such property %s", name);
 252  
     }
 253  106
     return property;
 254  
   }
 255  
 
 256  
   /**
 257  
    * Returns true if property is instanceof NullValue.
 258  
    *
 259  
    * @throws DatastoreServiceException if not such property.
 260  
    */
 261  
   public boolean isNull(String name) {
 262  10
     return getValue(name) instanceof NullValue;
 263  
   }
 264  
 
 265  
 
 266  
   /**
 267  
    * Returns the property value as a string.
 268  
    *
 269  
    * @throws DatastoreServiceException if not such property.
 270  
    * @throws ClassCastException if value is not a string.
 271  
    */
 272  
   @SuppressWarnings("unchecked")
 273  
   public String getString(String name) {
 274  22
     return ((Value<String>) getValue(name)).get();
 275  
   }
 276  
 
 277  
   /**
 278  
    * Returns the property value as long.
 279  
    *
 280  
    * @throws DatastoreServiceException if not such property.
 281  
    * @throws ClassCastException if value is not a long.
 282  
    */
 283  
   @SuppressWarnings("unchecked")
 284  
   public long getLong(String name) {
 285  12
     return ((Value<Long>) getValue(name)).get();
 286  
   }
 287  
 
 288  
   /**
 289  
    * Returns the property value as a double.
 290  
    *
 291  
    * @throws DatastoreServiceException if not such property.
 292  
    * @throws ClassCastException if value is not a double.
 293  
    */
 294  
   @SuppressWarnings("unchecked")
 295  
   public double getDouble(String name) {
 296  4
     return ((Value<Double>) getValue(name)).get();
 297  
   }
 298  
 
 299  
   /**
 300  
    * Returns the property value as a boolean.
 301  
    *
 302  
    * @throws DatastoreServiceException if not such property.
 303  
    * @throws ClassCastException if value is not a boolean.
 304  
    */
 305  
   @SuppressWarnings("unchecked")
 306  
   public boolean getBoolean(String name) {
 307  6
     return ((Value<Boolean>) getValue(name)).get();
 308  
   }
 309  
 
 310  
   /**
 311  
    * Returns the property value as a DateTime.
 312  
    *
 313  
    * @throws DatastoreServiceException if not such property.
 314  
    * @throws ClassCastException if value is not a DateTime.
 315  
    */
 316  
   @SuppressWarnings("unchecked")
 317  
   public DateTime getDateTime(String name) {
 318  4
     return ((Value<DateTime>) getValue(name)).get();
 319  
   }
 320  
 
 321  
   /**
 322  
    * Returns the property value as a Key.
 323  
    *
 324  
    * @throws DatastoreServiceException if not such property.
 325  
    * @throws ClassCastException if value is not a Key.
 326  
    */
 327  
   @SuppressWarnings("unchecked")
 328  
   public Key getKey(String name) {
 329  4
     return ((Value<Key>) getValue(name)).get();
 330  
   }
 331  
 
 332  
   /**
 333  
    * Returns the property value as an entity.
 334  
    *
 335  
    * @throws DatastoreServiceException if not such property.
 336  
    * @throws ClassCastException if value is not an entity.
 337  
    */
 338  
   @SuppressWarnings("unchecked")
 339  
   public <K extends IncompleteKey> FullEntity<K> getEntity(String name) {
 340  12
     return ((Value<FullEntity<K>>) getValue(name)).get();
 341  
   }
 342  
 
 343  
   /**
 344  
    * Returns the property value as a list of values.
 345  
    *
 346  
    * @throws DatastoreServiceException if not such property.
 347  
    * @throws ClassCastException if value is not a list of values.
 348  
    */
 349  
   @SuppressWarnings("unchecked")
 350  
   public List<? extends Value<?>> getList(String name) {
 351  10
     return ((Value<List<? extends Value<?>>>) getValue(name)).get();
 352  
   }
 353  
 
 354  
   /**
 355  
    * Returns the property value as a blob.
 356  
    *
 357  
    * @throws DatastoreServiceException if not such property.
 358  
    * @throws ClassCastException if value is not a blob.
 359  
    */
 360  
   @SuppressWarnings("unchecked")
 361  
   public Blob getBlob(String name) {
 362  4
     return ((Value<Blob>) getValue(name)).get();
 363  
   }
 364  
 
 365  
   /**
 366  
    * Returns the properties name.
 367  
    */
 368  
   public Set<String> names() {
 369  10
     return properties.keySet();
 370  
   }
 371  
 
 372  
   ImmutableSortedMap<String, Value<?>> properties() {
 373  48
     return properties;
 374  
   }
 375  
 
 376  
   @Override
 377  
   protected Object fromPb(byte[] bytesPb) throws InvalidProtocolBufferException {
 378  10
     Builder builder = emptyBuilder();
 379  10
     builder.fill(DatastoreV1.Entity.parseFrom(bytesPb));
 380  10
     return builder.build();
 381  
   }
 382  
 
 383  
   protected abstract Builder emptyBuilder();
 384  
 
 385  
   @Override
 386  
   protected final DatastoreV1.Entity toPb() {
 387  396
     DatastoreV1.Entity.Builder entityPb = DatastoreV1.Entity.newBuilder();
 388  396
     for (Map.Entry<String, Value<?>> entry : properties.entrySet()) {
 389  1292
       DatastoreV1.Property.Builder propertyPb = DatastoreV1.Property.newBuilder();
 390  1292
       propertyPb.setName(entry.getKey());
 391  1292
       propertyPb.setValue(entry.getValue().toPb());
 392  1292
       entityPb.addProperty(propertyPb.build());
 393  1292
     }
 394  396
     if (key != null) {
 395  396
       entityPb.setKey(key.toPb());
 396  
     }
 397  396
     return entityPb.build();
 398  
   }
 399  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.BaseKey.html b/cobertura/com.google.gcloud.datastore.BaseKey.html deleted file mode 100644 index eb0656191b5b..000000000000 --- a/cobertura/com.google.gcloud.datastore.BaseKey.html +++ /dev/null @@ -1,349 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.BaseKey
-
 
- - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
BaseKey
93%
30/32
59%
13/22
1.524
BaseKey$Builder
100%
28/28
50%
2/4
1.524
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.gcloud.datastore.Validator.validateDatabase;
 20  
 import static com.google.gcloud.datastore.Validator.validateKind;
 21  
 import static com.google.gcloud.datastore.Validator.validateNamespace;
 22  
 
 23  
 import com.google.api.services.datastore.DatastoreV1;
 24  
 import com.google.common.base.Preconditions;
 25  
 import com.google.common.collect.ImmutableList;
 26  
 
 27  
 import java.util.LinkedList;
 28  
 import java.util.List;
 29  
 import java.util.Objects;
 30  
 
 31  
 /**
 32  
  * Base class for keys.
 33  
  */
 34  26
 abstract class BaseKey extends Serializable<DatastoreV1.Key> {
 35  
 
 36  
   private static final long serialVersionUID = -4671243265877410635L;
 37  
 
 38  
   private final transient String projectId;
 39  
   private final transient String namespace;
 40  
   private final transient ImmutableList<PathElement> path;
 41  
 
 42  
   abstract static class Builder<B extends Builder<B>> {
 43  
 
 44  
     String projectId;
 45  
     String namespace;
 46  
     String kind;
 47  
     final List<PathElement> ancestors;
 48  
 
 49  
     private static final int MAX_PATH = 100;
 50  
 
 51  108
     Builder(String projectId) {
 52  108
       this.projectId = validateDatabase(projectId);
 53  106
       ancestors = new LinkedList<>();
 54  106
     }
 55  
 
 56  
     Builder(String projectId, String kind) {
 57  84
       this(projectId);
 58  82
       this.kind = validateKind(kind);
 59  80
     }
 60  
 
 61  70
     Builder(BaseKey copyFrom) {
 62  70
       projectId = copyFrom.projectId();
 63  70
       namespace = copyFrom.namespace();
 64  70
       ancestors = new LinkedList<>(copyFrom.ancestors());
 65  70
       kind = copyFrom.kind();
 66  70
     }
 67  
 
 68  
     @SuppressWarnings("unchecked")
 69  
     B self() {
 70  114
       return (B) this;
 71  
     }
 72  
 
 73  
     public B ancestors(PathElement ancestor) {
 74  16
       Preconditions.checkState(ancestors.size() < MAX_PATH, "path can have at most 100 elements");
 75  16
       ancestors.add(ancestor);
 76  16
       return self();
 77  
     }
 78  
 
 79  
     public B ancestors(PathElement ancestor, PathElement... other) {
 80  4
       return ancestors(ImmutableList.<PathElement>builder().add(ancestor).add(other).build());
 81  
     }
 82  
 
 83  
     public B ancestors(Iterable<PathElement> ancestors) {
 84  12
       ImmutableList<PathElement> list = ImmutableList.copyOf(ancestors);
 85  12
       Preconditions.checkState(this.ancestors.size() + list.size() < MAX_PATH,
 86  
           "path can have at most 100 elements");
 87  12
       this.ancestors.addAll(list);
 88  12
       return self();
 89  
     }
 90  
 
 91  
     public B kind(String kind) {
 92  34
       this.kind = validateKind(kind);
 93  32
       return self();
 94  
     }
 95  
 
 96  
     public B projectId(String projectId) {
 97  12
       this.projectId = validateDatabase(projectId);
 98  10
       return self();
 99  
     }
 100  
 
 101  
     public B namespace(String namespace) {
 102  44
       this.namespace = validateNamespace(namespace);
 103  44
       return self();
 104  
     }
 105  
 
 106  
     protected abstract BaseKey build();
 107  
   }
 108  
 
 109  662
   BaseKey(String projectId, String namespace, ImmutableList<PathElement> path) {
 110  662
     Preconditions.checkArgument(!path.isEmpty(), "Path must not be empty");
 111  662
     this.projectId = projectId;
 112  662
     this.namespace = namespace;
 113  662
     this.path = path;
 114  662
   }
 115  
 
 116  
   /**
 117  
    * Returns the key's projectId.
 118  
    */
 119  
   public String projectId() {
 120  1670
     return projectId;
 121  
   }
 122  
 
 123  
   /**
 124  
    * Returns the key's namespace or {@code null} if not provided.
 125  
    */
 126  
   public String namespace() {
 127  1664
     return namespace;
 128  
   }
 129  
 
 130  
   /**
 131  
    * Returns an immutable list with the key's ancestors.
 132  
    */
 133  
   public List<PathElement> ancestors() {
 134  126
     return path().subList(0, path().size() - 1);
 135  
   }
 136  
 
 137  
   /**
 138  
    * Returns an immutable list of the key's path (ancestors + self).
 139  
    */
 140  
   List<PathElement> path() {
 141  3180
     return path;
 142  
   }
 143  
 
 144  
   PathElement leaf() {
 145  682
     return path().get(path().size() - 1);
 146  
   }
 147  
 
 148  
   /**
 149  
    * Returns the key's kind.
 150  
    */
 151  
   public String kind() {
 152  110
     return leaf().kind();
 153  
   }
 154  
 
 155  
   @Override
 156  
   public int hashCode() {
 157  688
     return Objects.hash(projectId(), namespace(), path());
 158  
   }
 159  
 
 160  
   @Override
 161  
   public boolean equals(Object obj) {
 162  484
     if (obj == this) {
 163  52
       return true;
 164  
     }
 165  432
     if (!(obj instanceof BaseKey)) {
 166  0
       return false;
 167  
     }
 168  432
     BaseKey other = (BaseKey) obj;
 169  432
     return Objects.equals(projectId(), other.projectId())
 170  
         && Objects.equals(namespace(), other.namespace())
 171  
         && Objects.equals(path(), other.path());
 172  
   }
 173  
 
 174  
   @Override
 175  
   protected DatastoreV1.Key toPb() {
 176  812
     DatastoreV1.Key.Builder keyPb = DatastoreV1.Key.newBuilder();
 177  812
     DatastoreV1.PartitionId.Builder partitionIdPb = DatastoreV1.PartitionId.newBuilder();
 178  812
     if (projectId != null) {
 179  812
       partitionIdPb.setDatasetId(projectId);
 180  
     }
 181  812
     if (namespace != null) {
 182  0
       partitionIdPb.setNamespace(namespace);
 183  
     }
 184  812
     if (partitionIdPb.hasDatasetId() || partitionIdPb.hasNamespace()) {
 185  812
       keyPb.setPartitionId(partitionIdPb.build());
 186  
     }
 187  812
     for (PathElement pathEntry : path) {
 188  1074
       keyPb.addPathElement(pathEntry.toPb());
 189  1074
     }
 190  812
     return keyPb.build();
 191  
   }
 192  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.Batch.html b/cobertura/com.google.gcloud.datastore.Batch.html deleted file mode 100644 index 7ac1dcd5cc62..000000000000 --- a/cobertura/com.google.gcloud.datastore.Batch.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.Batch
-
 
- - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Batch
N/A
N/A
1
Batch$Response
N/A
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import java.util.List;
 20  
 
 21  
 /**
 22  
  * An interface to represent a batch of write operations.
 23  
  * Any write operation that is applied on a batch will only be sent
 24  
  * to the Datastore upon {@link #submit}.
 25  
  * A usage example:
 26  
  * <pre> {@code
 27  
  *   Entity entity1 = datastore.get(key1);
 28  
  *   Batch batch = datastore.newBatch();
 29  
  *   Entity entity2 = Entity.builder(key2).set("name", "John").build();
 30  
  *   entity1 = Entity.builder(entity1).clear().setNull("bla").build();
 31  
  *   Entity entity3 = Entity.builder(key3).set("title", "title").build();
 32  
  *   batch.update(entity1);
 33  
  *   batch.add(entity2, entity3);
 34  
  *   batch.submit();
 35  
  * } </pre>
 36  
  */
 37  
 public interface Batch extends DatastoreBatchWriter {
 38  
 
 39  
   interface Response {
 40  
     List<Key> generatedKeys();
 41  
   }
 42  
 
 43  
   /**
 44  
    * Submit the batch to the Datastore.
 45  
    *
 46  
    * @throws DatastoreServiceException if there was any failure or if batch is not longer active
 47  
    */
 48  
   Response submit();
 49  
 
 50  
   /**
 51  
    * Returns the batch associated {@link DatastoreService}.
 52  
    */
 53  
   DatastoreService datastore();
 54  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.BatchImpl.html b/cobertura/com.google.gcloud.datastore.BatchImpl.html deleted file mode 100644 index 5b4367380273..000000000000 --- a/cobertura/com.google.gcloud.datastore.BatchImpl.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.BatchImpl
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
BatchImpl
88%
16/18
50%
2/4
1.333
BatchImpl$ResponseImpl
100%
1/1
N/A
1.333
BatchImpl$ResponseImpl$1
100%
2/2
N/A
1.333
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.api.services.datastore.DatastoreV1;
 20  
 import com.google.common.base.Function;
 21  
 import com.google.common.collect.Lists;
 22  
 import com.google.gcloud.datastore.BatchOption.ForceWrites;
 23  
 
 24  
 import java.util.List;
 25  
 import java.util.Map;
 26  
 
 27  
 
 28  
 class BatchImpl extends BaseDatastoreBatchWriter implements Batch {
 29  
 
 30  
   private final DatastoreServiceImpl datastore;
 31  
   private final boolean force;
 32  
 
 33  
   static class ResponseImpl implements Batch.Response {
 34  
 
 35  
     private final DatastoreV1.CommitResponse response;
 36  
 
 37  
     public ResponseImpl(DatastoreV1.CommitResponse response) {
 38  
       this.response = response;
 39  
     }
 40  
 
 41  
     @Override
 42  
     public List<Key> generatedKeys() {
 43  2
       return Lists.transform(response.getMutationResult().getInsertAutoIdKeyList(),
 44  4
           new Function<DatastoreV1.Key, Key>() {
 45  
             @Override public Key apply(DatastoreV1.Key keyPb) {
 46  4
               return Key.fromPb(keyPb);
 47  
             }
 48  
           });
 49  
     }
 50  
   }
 51  
 
 52  
   BatchImpl(DatastoreServiceImpl datastore, BatchOption... options) {
 53  4
     super("batch");
 54  4
     this.datastore = datastore;
 55  4
     Map<Class<? extends BatchOption>, BatchOption> optionsMap = BatchOption.asImmutableMap(options);
 56  4
     if (optionsMap.containsKey(ForceWrites.class)) {
 57  0
       force = ((ForceWrites) optionsMap.get(ForceWrites.class)).force();
 58  
     } else {
 59  4
       force = datastore.options().force();
 60  
     }
 61  4
   }
 62  
 
 63  
   @Override
 64  
   public Batch.Response submit() {
 65  6
     validateActive();
 66  4
     DatastoreV1.Mutation.Builder mutationPb = toMutationPb();
 67  4
     if (force) {
 68  0
       mutationPb.setForce(force);
 69  
     }
 70  4
     DatastoreV1.CommitRequest.Builder requestPb = DatastoreV1.CommitRequest.newBuilder();
 71  4
     requestPb.setMode(DatastoreV1.CommitRequest.Mode.NON_TRANSACTIONAL);
 72  4
     requestPb.setMutation(mutationPb);
 73  4
     DatastoreV1.CommitResponse responsePb = datastore.commit(requestPb.build());
 74  4
     deactivate();
 75  4
     return new ResponseImpl(responsePb);
 76  
   }
 77  
 
 78  
   @Override
 79  
   public DatastoreService datastore() {
 80  2
     return datastore;
 81  
   }
 82  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.BatchOption.html b/cobertura/com.google.gcloud.datastore.BatchOption.html deleted file mode 100644 index 3764472cc64c..000000000000 --- a/cobertura/com.google.gcloud.datastore.BatchOption.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.BatchOption
-
 
- - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
BatchOption
60%
3/5
50%
1/2
1.2
BatchOption$ForceWrites
0%
0/1
N/A
1.2
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.common.collect.ImmutableMap;
 20  
 
 21  
 import java.util.Map;
 22  
 
 23  
 public abstract class BatchOption implements java.io.Serializable {
 24  
 
 25  
   private static final long serialVersionUID = -3932758377282659839L;
 26  
 
 27  
   public static final class ForceWrites extends BatchOption {
 28  
 
 29  
     private static final long serialVersionUID = 2555054296046232799L;
 30  
 
 31  
     private final boolean force;
 32  
 
 33  
     public ForceWrites(boolean force) {
 34  
       this.force = force;
 35  
     }
 36  
 
 37  
     public boolean force() {
 38  0
       return force;
 39  
     }
 40  
   }
 41  
 
 42  
   BatchOption() {
 43  
     // package protected
 44  
   }
 45  
 
 46  
   public static ForceWrites forceWrites() {
 47  0
     return new ForceWrites(true);
 48  
   }
 49  
 
 50  
   static Map<Class<? extends BatchOption>, BatchOption> asImmutableMap(BatchOption... options) {
 51  4
     ImmutableMap.Builder<Class<? extends BatchOption>, BatchOption> builder =
 52  
         ImmutableMap.builder();
 53  4
     for (BatchOption option : options) {
 54  0
       builder.put(option.getClass(), option);
 55  
     }
 56  4
     return builder.build();
 57  
   }
 58  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.Blob.html b/cobertura/com.google.gcloud.datastore.Blob.html deleted file mode 100644 index 3ca427267139..000000000000 --- a/cobertura/com.google.gcloud.datastore.Blob.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.Blob
-
 
- - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Blob
75%
24/32
58%
7/12
1.353
Blob$1
100%
1/1
100%
2/2
1.353
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkNotNull;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 import com.google.api.services.datastore.DatastoreV1.Value;
 23  
 import com.google.common.base.MoreObjects;
 24  
 import com.google.common.base.MoreObjects.ToStringHelper;
 25  
 import com.google.protobuf.ByteString;
 26  
 import com.google.protobuf.InvalidProtocolBufferException;
 27  
 
 28  
 import java.io.BufferedInputStream;
 29  
 import java.io.ByteArrayOutputStream;
 30  
 import java.io.IOException;
 31  
 import java.io.InputStream;
 32  
 import java.nio.ByteBuffer;
 33  
 
 34  
 /**
 35  
  * A Google Cloud Datastore Blob.
 36  
  * This class is immutable.
 37  
  *
 38  
  * @see <a href="https://cloud.google.com/datastore/docs/concepts/entities">Google Cloud Datastore Entities, Properties, and Keys</a>
 39  
  */
 40  2
 public final class Blob extends Serializable<DatastoreV1.Value> {
 41  
 
 42  
   private static final long serialVersionUID = 3835421019618247721L;
 43  
 
 44  
   private final transient ByteString byteString;
 45  
 
 46  54
   Blob(ByteString byteString) {
 47  54
     this.byteString = checkNotNull(byteString);
 48  54
   }
 49  
 
 50  
   @Override
 51  
   public String toString() {
 52  0
     ToStringHelper toStringHelper = MoreObjects.toStringHelper(this);
 53  0
     StringBuilder stBuilder = new StringBuilder();
 54  0
     for (int i = 0; i < Math.min(256, byteString.size()); i++) {
 55  0
       stBuilder.append(String.format("%02x", byteString.byteAt(i)));
 56  
     }
 57  0
     if (byteString.size() > 256) {
 58  0
       stBuilder.append("...");
 59  
     }
 60  0
     return toStringHelper.add("bytes", stBuilder.toString()).toString();
 61  
   }
 62  
 
 63  
   @Override
 64  
   public int hashCode() {
 65  0
     return byteString.hashCode();
 66  
   }
 67  
 
 68  
   @Override
 69  
   public boolean equals(Object obj) {
 70  34
     return obj == this || obj instanceof Blob && byteString.equals(((Blob) obj).byteString);
 71  
   }
 72  
 
 73  
   /**
 74  
    * Returns the size of this blob.
 75  
    */
 76  
   public int length() {
 77  6
     return byteString.size();
 78  
   }
 79  
 
 80  
   /**
 81  
    * Returns a copy as byte array.
 82  
    */
 83  
   public byte[] toByteArray() {
 84  10
     return byteString.toByteArray();
 85  
   }
 86  
 
 87  
   /**
 88  
    * Returns a read-only {@link ByteBuffer} for this blob content.
 89  
    */
 90  
   public ByteBuffer asReadOnlyByteBuffer() {
 91  4
     return byteString.asReadOnlyByteBuffer();
 92  
   }
 93  
 
 94  
   /**
 95  
    * Returns an {@link InputStream} for this blob content.
 96  
    */
 97  
   public InputStream asInputStream() {
 98  2
     final ByteBuffer byteBuffer = asReadOnlyByteBuffer();
 99  2
     return new InputStream() {
 100  
       @Override public int read() {
 101  22
         return !byteBuffer.hasRemaining() ? -1 : byteBuffer.get() & 0xFF;
 102  
       }
 103  
     };
 104  
   }
 105  
 
 106  
   /**
 107  
    * Copies bytes into a ByteBuffer.
 108  
    *
 109  
    * @throws java.nio.ReadOnlyBufferException if the target is read-only
 110  
    * @throws java.nio.BufferOverflowException if the target's remaining() space is not large
 111  
    *        enough to hold the data.
 112  
    */
 113  
   public void copyTo(ByteBuffer target) {
 114  2
     byteString.copyTo(target);
 115  2
   }
 116  
 
 117  
   /**
 118  
    * Copies bytes into a buffer.
 119  
    *
 120  
    * @throws IndexOutOfBoundsException if an offset or size is negative or too large
 121  
    */
 122  
   public void copyTo(byte[] target) {
 123  2
     byteString.copyTo(target, 0, 0, length());
 124  2
   }
 125  
 
 126  
   ByteString byteString() {
 127  4
     return byteString;
 128  
   }
 129  
 
 130  
   public static Blob copyFrom(byte[] bytes) {
 131  42
     return new Blob(ByteString.copyFrom(bytes));
 132  
   }
 133  
 
 134  
   public static Blob copyFrom(ByteBuffer bytes) {
 135  4
     return new Blob(ByteString.copyFrom(bytes));
 136  
   }
 137  
 
 138  
   public static Blob copyFrom(InputStream input) throws IOException {
 139  2
     BufferedInputStream bufferedInput = new BufferedInputStream(input);
 140  2
     ByteArrayOutputStream bytes = new ByteArrayOutputStream();
 141  
     int value;
 142  24
     while ((value = bufferedInput.read()) != -1) {
 143  22
       bytes.write(value);
 144  
     }
 145  2
     return copyFrom(bytes.toByteArray());
 146  
   }
 147  
 
 148  
   @Override
 149  
   protected Value toPb() {
 150  2
     return DatastoreV1.Value.newBuilder().setBlobValue(byteString).build();
 151  
   }
 152  
 
 153  
   @Override
 154  
   protected Object fromPb(byte[] bytesPb) throws InvalidProtocolBufferException {
 155  2
     return new Blob(DatastoreV1.Value.parseFrom(bytesPb).getBlobValue());
 156  
   }
 157  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.BlobValue.html b/cobertura/com.google.gcloud.datastore.BlobValue.html deleted file mode 100644 index 510406edc4f5..000000000000 --- a/cobertura/com.google.gcloud.datastore.BlobValue.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.BlobValue
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
BlobValue
100%
7/7
N/A
1
BlobValue$1
100%
6/6
N/A
1
BlobValue$Builder
100%
4/4
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.api.services.datastore.DatastoreV1.Value.BLOB_VALUE_FIELD_NUMBER;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 
 23  8
 public final class BlobValue extends Value<Blob> {
 24  
 
 25  
   private static final long serialVersionUID = -5096238337676649540L;
 26  
 
 27  2
   static final BaseMarshaller<Blob, BlobValue, Builder> MARSHALLER =
 28  12
       new BaseMarshaller<Blob, BlobValue, Builder>() {
 29  
 
 30  
         private static final long serialVersionUID = -823515687083612387L;
 31  
 
 32  
         @Override
 33  
         public int getProtoFieldId() {
 34  2
           return BLOB_VALUE_FIELD_NUMBER;
 35  
         }
 36  
 
 37  
         @Override
 38  
         public Builder newBuilder(Blob value) {
 39  4
           return builder(value);
 40  
         }
 41  
 
 42  
         @Override
 43  
         protected Blob getValue(DatastoreV1.Value from) {
 44  4
           return new Blob(from.getBlobValue());
 45  
         }
 46  
 
 47  
         @Override
 48  
         protected void setValue(BlobValue from, DatastoreV1.Value.Builder to) {
 49  4
           to.setBlobValue(from.get().byteString());
 50  4
         }
 51  
       };
 52  
 
 53  268
   public static final class Builder extends Value.BaseBuilder<Blob, BlobValue, Builder> {
 54  
 
 55  
     private Builder() {
 56  66
       super(ValueType.BLOB);
 57  66
     }
 58  
 
 59  
     @Override
 60  
     public BlobValue build() {
 61  8
       return new BlobValue(this);
 62  
     }
 63  
   }
 64  
 
 65  
   public BlobValue(Blob blob) {
 66  58
     this(builder(blob));
 67  58
   }
 68  
 
 69  
   private BlobValue(Builder builder) {
 70  
     super(builder);
 71  
   }
 72  
 
 73  
   @Override
 74  
   public Builder toBuilder() {
 75  2
     return new Builder().mergeFrom(this);
 76  
   }
 77  
 
 78  
   public static BlobValue of(Blob blob) {
 79  58
     return new BlobValue(blob);
 80  
   }
 81  
 
 82  
   public static Builder builder(Blob blob) {
 83  64
     return new Builder().set(blob);
 84  
   }
 85  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.BooleanValue.html b/cobertura/com.google.gcloud.datastore.BooleanValue.html deleted file mode 100644 index 4a6263c39888..000000000000 --- a/cobertura/com.google.gcloud.datastore.BooleanValue.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.BooleanValue
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
BooleanValue
100%
7/7
N/A
1
BooleanValue$1
100%
5/5
N/A
1
BooleanValue$Builder
100%
4/4
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.api.services.datastore.DatastoreV1.Value.BOOLEAN_VALUE_FIELD_NUMBER;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 
 23  288
 public final class BooleanValue extends Value<Boolean> {
 24  
 
 25  
   private static final long serialVersionUID = -542649497897250340L;
 26  
 
 27  2
   static final BaseMarshaller<Boolean, BooleanValue, Builder> MARSHALLER =
 28  998
       new BaseMarshaller<Boolean, BooleanValue, Builder>() {
 29  
 
 30  
         private static final long serialVersionUID = 7080467411349092522L;
 31  
 
 32  
         @Override
 33  
         public int getProtoFieldId() {
 34  
           return BOOLEAN_VALUE_FIELD_NUMBER;
 35  
         }
 36  
 
 37  
         @Override
 38  
         public Builder newBuilder(Boolean value) {
 39  282
           return builder(value);
 40  
         }
 41  
 
 42  
         @Override
 43  
         protected Boolean getValue(DatastoreV1.Value from) {
 44  282
           return from.getBooleanValue();
 45  
         }
 46  
 
 47  
         @Override
 48  
         protected void setValue(BooleanValue from, DatastoreV1.Value.Builder to) {
 49  434
           to.setBooleanValue(from.get());
 50  434
         }
 51  
       };
 52  
 
 53  1786
   public static final class Builder extends Value.BaseBuilder<Boolean, BooleanValue, Builder> {
 54  
 
 55  
     private Builder() {
 56  376
       super(ValueType.BOOLEAN);
 57  376
     }
 58  
 
 59  
     @Override
 60  
     public BooleanValue build() {
 61  288
       return new BooleanValue(this);
 62  
     }
 63  
   }
 64  
 
 65  
   public BooleanValue(boolean value) {
 66  88
     this(builder(value));
 67  88
   }
 68  
 
 69  
   private BooleanValue(Builder builder) {
 70  
     super(builder);
 71  
   }
 72  
 
 73  
   @Override
 74  
   public Builder toBuilder() {
 75  2
     return new Builder().mergeFrom(this);
 76  
   }
 77  
 
 78  
   public static BooleanValue of(boolean value) {
 79  88
     return new BooleanValue(value);
 80  
   }
 81  
 
 82  
   public static Builder builder(boolean value) {
 83  374
     return new Builder().set(value);
 84  
   }
 85  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.Cursor.html b/cobertura/com.google.gcloud.datastore.Cursor.html deleted file mode 100644 index 2c4a8d1b16d1..000000000000 --- a/cobertura/com.google.gcloud.datastore.Cursor.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.Cursor
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Cursor
61%
16/26
62%
5/8
1.818
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkNotNull;
 20  
 import static java.nio.charset.StandardCharsets.UTF_8;
 21  
 
 22  
 import com.google.api.services.datastore.DatastoreV1;
 23  
 import com.google.api.services.datastore.DatastoreV1.Value;
 24  
 import com.google.common.base.MoreObjects;
 25  
 import com.google.common.base.MoreObjects.ToStringHelper;
 26  
 import com.google.common.base.Preconditions;
 27  
 import com.google.protobuf.ByteString;
 28  
 import com.google.protobuf.InvalidProtocolBufferException;
 29  
 import com.google.protobuf.TextFormat;
 30  
 import com.google.protobuf.TextFormat.ParseException;
 31  
 
 32  
 import java.io.UnsupportedEncodingException;
 33  
 import java.net.URLDecoder;
 34  
 import java.net.URLEncoder;
 35  
 
 36  
 /**
 37  
  * A Google Cloud Datastore cursor.
 38  
  * The cursor can be used to as a starting point or an ending point for a {@link Query}
 39  
  */
 40  2
 public final class Cursor extends Serializable<DatastoreV1.Value> {
 41  
 
 42  
   private static final long serialVersionUID = -1423744878777486541L;
 43  
 
 44  
   private final transient ByteString byteString;
 45  
 
 46  22
   Cursor(ByteString byteString) {
 47  22
     Preconditions.checkArgument(byteString.isValidUtf8(), "content is not a valid UTF-8");
 48  22
     this.byteString = byteString;
 49  22
   }
 50  
 
 51  
   @Override
 52  
   public int hashCode() {
 53  0
     return byteString.hashCode();
 54  
   }
 55  
 
 56  
   @Override
 57  
   public boolean equals(Object obj) {
 58  16
     return obj == this || obj instanceof Cursor && byteString.equals(((Cursor) obj).byteString);
 59  
   }
 60  
 
 61  
   @Override
 62  
   public String toString() {
 63  0
     ToStringHelper toStringHelper = MoreObjects.toStringHelper(this);
 64  0
     StringBuilder stBuilder = new StringBuilder();
 65  0
     for (int i = 0; i < byteString.size(); i++) {
 66  0
       stBuilder.append(String.format("%02x", byteString.byteAt(i)));
 67  
     }
 68  0
     return toStringHelper.add("bytes", stBuilder.toString()).toString();
 69  
   }
 70  
 
 71  
   ByteString byteString() {
 72  4
     return byteString;
 73  
   }
 74  
 
 75  
   /**
 76  
    * Returns the cursor in an encoded form that can be used as part of a URL.
 77  
    */
 78  
   public String toUrlSafe() {
 79  
     try {
 80  2
       return URLEncoder.encode(TextFormat.printToString(toPb()), UTF_8.name());
 81  0
     } catch (UnsupportedEncodingException e) {
 82  0
       throw new IllegalStateException("Unexpected encoding exception", e);
 83  
     }
 84  
   }
 85  
 
 86  
   /**
 87  
    * Create a {@code Cursor} given its URL safe encoded form.
 88  
    */
 89  
   public static Cursor fromUrlSafe(String urlSafe) {
 90  
     try {
 91  2
       String utf8Str = URLDecoder.decode(urlSafe, UTF_8.name());
 92  2
       DatastoreV1.Value.Builder builder = DatastoreV1.Value.newBuilder();
 93  2
       TextFormat.merge(utf8Str, builder);
 94  2
       return fromPb(builder.build());
 95  0
     } catch (UnsupportedEncodingException | ParseException e) {
 96  0
       throw new IllegalStateException("Unexpected decoding exception", e);
 97  
     }
 98  
   }
 99  
 
 100  
   public static Cursor copyFrom(byte[] bytes) {
 101  6
     return new Cursor(ByteString.copyFrom(checkNotNull(bytes)));
 102  
   }
 103  
 
 104  
   @Override
 105  
   protected Value toPb() {
 106  4
     return DatastoreV1.Value.newBuilder().setBlobValue(byteString).build();
 107  
   }
 108  
 
 109  
   @Override
 110  
   protected Object fromPb(byte[] bytesPb) throws InvalidProtocolBufferException {
 111  2
     return fromPb(DatastoreV1.Value.parseFrom(bytesPb));
 112  
   }
 113  
 
 114  
   static Cursor fromPb(DatastoreV1.Value valuePb) {
 115  4
     return new Cursor(valuePb.getBlobValue());
 116  
   }
 117  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.DatastoreBatchWriter.html b/cobertura/com.google.gcloud.datastore.DatastoreBatchWriter.html deleted file mode 100644 index f4c2800cb556..000000000000 --- a/cobertura/com.google.gcloud.datastore.DatastoreBatchWriter.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.DatastoreBatchWriter
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DatastoreBatchWriter
N/A
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import java.util.List;
 20  
 
 21  
 /**
 22  
  * An interface to represent a batch of write operations.
 23  
  * All write operation for a batch writer will be applied to the Datastore in one RPC call.
 24  
  */
 25  
 interface DatastoreBatchWriter extends DatastoreWriter {
 26  
 
 27  
   /**
 28  
    * Datastore add operation.
 29  
    * This method will also allocate id for any entity with an incomplete key.
 30  
    * As oppose to {@link #add(FullEntity)}, this method will defer any necessary id allocation
 31  
    * to submit time.
 32  
    *
 33  
    * @throws IllegalArgumentException if any of the given entities is missing a key
 34  
    * @throws com.google.gcloud.datastore.DatastoreServiceException if a given entity with a
 35  
    *     complete key was already added to this writer or if not active
 36  
    */
 37  
   void addWithDeferredIdAllocation(FullEntity<?>... entity);
 38  
 
 39  
   /**
 40  
    * {@inheritDoc}
 41  
    * For entities with complete keys that were marked for deletion in this writer the operation
 42  
    * will be changed to {@link #put}.
 43  
    * @throws com.google.gcloud.datastore.DatastoreServiceException if a given entity with the
 44  
    *     same complete key was already added to this writer, if writer is not active or
 45  
    *     if id allocation for an entity with an incomplete key failed.
 46  
    */
 47  
   @Override
 48  
   List<Entity> add(FullEntity<?>... entity);
 49  
 
 50  
   /**
 51  
    * {@inheritDoc}
 52  
    * This operation will be converted to {@link #put} operation for entities that were already
 53  
    *     added or put in this writer
 54  
    * @throws com.google.gcloud.datastore.DatastoreServiceException if an entity is marked for
 55  
    *     deletion in this writer or if not active
 56  
    */
 57  
   @Override
 58  
   void update(Entity... entity);
 59  
 
 60  
   /**
 61  
    * {@inheritDoc}
 62  
    * This operation will also remove from this batch any prior writes for entities with the same
 63  
    *     keys
 64  
    * @throws com.google.gcloud.datastore.DatastoreServiceException if not active
 65  
    */
 66  
   @Override
 67  
   void delete(Key... key);
 68  
 
 69  
   /**
 70  
    * {@inheritDoc}
 71  
    * This operation will also remove from this writer any prior writes for the same entities.
 72  
    * @throws com.google.gcloud.datastore.DatastoreServiceException if not active
 73  
    */
 74  
   @Override
 75  
   void put(Entity... entity);
 76  
 
 77  
   /**
 78  
    * Returns {@code true} if still active (write operations were not sent to the Datastore).
 79  
    */
 80  
   boolean active();
 81  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.DatastoreHelper.html b/cobertura/com.google.gcloud.datastore.DatastoreHelper.html deleted file mode 100644 index 21e856959db4..000000000000 --- a/cobertura/com.google.gcloud.datastore.DatastoreHelper.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.DatastoreHelper
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DatastoreHelper
95%
22/23
75%
6/8
1.857
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.common.collect.Iterators;
 20  
 import com.google.common.collect.Maps;
 21  
 
 22  
 import java.util.ArrayList;
 23  
 import java.util.Iterator;
 24  
 import java.util.List;
 25  
 import java.util.Map;
 26  
 
 27  
 /**
 28  
  * Provide functionality that should be added to the appropriate interfaces
 29  
  * via Java 8 default methods.
 30  
  */
 31  
 class DatastoreHelper {
 32  
 
 33  
   private DatastoreHelper() {
 34  
   }
 35  
 
 36  
 
 37  
   static Key allocateId(DatastoreService service, IncompleteKey key) {
 38  8
     return service.allocateId(new IncompleteKey[]{key}).get(0);
 39  
   }
 40  
 
 41  
   static Entity get(DatastoreReader reader, Key key) {
 42  30
     return Iterators.getNext(reader.get(new Key[]{key}), null);
 43  
   }
 44  
 
 45  
   static Entity add(DatastoreWriter writer, FullEntity<?> entity) {
 46  38
     return writer.add(new FullEntity<?>[] {entity}).get(0);
 47  
   }
 48  
 
 49  
   static KeyFactory newKeyFactory(DatastoreServiceOptions options) {
 50  10
     return new KeyFactory(options.projectId(), options.namespace());
 51  
   }
 52  
 
 53  
   /**
 54  
    * Returns a list with a value for each given key (ordered by input).
 55  
    * A {@code null} would be returned for non-existing keys.
 56  
    */
 57  
   static List<Entity> fetch(DatastoreReader reader, Key... keys) {
 58  24
     Iterator<Entity> entities = reader.get(keys);
 59  24
     Map<Key, Entity> map = Maps.newHashMapWithExpectedSize(keys.length);
 60  78
     while (entities.hasNext()) {
 61  54
       Entity entity = entities.next();
 62  54
       map.put(entity.key(), entity);
 63  54
     }
 64  24
     List<Entity> list = new ArrayList<>(keys.length);
 65  102
     for (Key key : keys) {
 66  
       // this will include nulls for non-existing keys
 67  78
       list.add(map.get(key));
 68  
     }
 69  24
     return list;
 70  
   }
 71  
 
 72  
   static <T> T runInTransaction(DatastoreService datastoreService,
 73  
       DatastoreService.TransactionCallable<T> callable, TransactionOption... options) {
 74  4
     Transaction transaction = datastoreService.newTransaction(options);
 75  
     try {
 76  4
       T value = callable.run(transaction);
 77  2
       transaction.commit();
 78  2
       return value;
 79  2
     } catch (Exception ex) {
 80  2
       transaction.rollback();
 81  2
       throw DatastoreServiceException.propagateUserException(ex);
 82  
     } finally {
 83  4
       if (transaction.active()) {
 84  0
         transaction.rollback();
 85  
       }
 86  
     }
 87  
   }
 88  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.DatastoreReader.html b/cobertura/com.google.gcloud.datastore.DatastoreReader.html deleted file mode 100644 index cfc740987eb3..000000000000 --- a/cobertura/com.google.gcloud.datastore.DatastoreReader.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.DatastoreReader
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DatastoreReader
N/A
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import java.util.Iterator;
 20  
 import java.util.List;
 21  
 
 22  
 /**
 23  
  * An interface to represent Google Cloud Datastore read operations.
 24  
  */
 25  
 public interface DatastoreReader {
 26  
 
 27  
   /**
 28  
    * Returns an {@link Entity} for the given {@link Key} or {@code null} if does not exists.
 29  
    *
 30  
    * @throws DatastoreServiceException upon failure.
 31  
    */
 32  
   Entity get(Key key);
 33  
 
 34  
   /**
 35  
    * Returns an {@link Entity} for each given {@link Key} that exists in the Datastore.
 36  
    * The order of the result is unspecified.
 37  
    * Results are loaded lazily therefore it is possible to get a {@code DatastoreServiceException}
 38  
    * from the returned {@code Iterator}'s {@link Iterator#hasNext hasNext} or
 39  
    * {@link Iterator#next next} methods.
 40  
    *
 41  
    * @throws DatastoreServiceException upon failure.
 42  
    * @see #get(Key)
 43  
    */
 44  
   Iterator<Entity> get(Key... key);
 45  
 
 46  
   /**
 47  
    * Returns a list with a value for each given key (ordered by input).
 48  
    * A {@code null} would be returned for non-existing keys.
 49  
    * When possible prefer using {@link #get(Key...)} which does not eagerly loads the results.
 50  
    */
 51  
   List<Entity> fetch(Key... keys);
 52  
 
 53  
   /**
 54  
    * Submit a {@link Query} and returns its result.
 55  
    *
 56  
    * @throws DatastoreServiceException upon failure.
 57  
    */
 58  
   <T> QueryResults<T> run(Query<T> query);
 59  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.DatastoreReaderWriter.html b/cobertura/com.google.gcloud.datastore.DatastoreReaderWriter.html deleted file mode 100644 index 6cb17cf22e7c..000000000000 --- a/cobertura/com.google.gcloud.datastore.DatastoreReaderWriter.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.DatastoreReaderWriter
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DatastoreReaderWriter
N/A
N/A
0
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 
 20  
 /**
 21  
  * An interface that combines both Google Cloud Datastore read and write operations.
 22  
  */
 23  
 public interface DatastoreReaderWriter extends DatastoreReader, DatastoreWriter {
 24  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.DatastoreService.html b/cobertura/com.google.gcloud.datastore.DatastoreService.html deleted file mode 100644 index b77e64bf8eea..000000000000 --- a/cobertura/com.google.gcloud.datastore.DatastoreService.html +++ /dev/null @@ -1,243 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.DatastoreService
-
 
- - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DatastoreService
N/A
N/A
1
DatastoreService$TransactionCallable
N/A
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.gcloud.Service;
 20  
 
 21  
 import java.util.List;
 22  
 
 23  
 /**
 24  
  * An interface for Google Cloud Datastore.
 25  
  */
 26  
 public interface DatastoreService extends Service<DatastoreServiceOptions>, DatastoreReaderWriter {
 27  
 
 28  
   /**
 29  
    * Returns a new Datastore transaction.
 30  
    *
 31  
    * @throws DatastoreServiceException upon failure
 32  
    */
 33  
   Transaction newTransaction(TransactionOption... options);
 34  
 
 35  
 
 36  
   /**
 37  
    * An Callback for running with a Transactional
 38  
    * {@link com.google.gcloud.datastore.DatastoreReaderWriter}.
 39  
    * The associated transaction will be committed after a successful return from the {@code run}
 40  
    * method. Any propagated exception will cause the transaction to be rolled-back.
 41  
    *
 42  
    * @param <T> the type of the return value
 43  
    */
 44  
   interface TransactionCallable<T> {
 45  
     T run(DatastoreReaderWriter readerWriter) throws Exception;
 46  
   }
 47  
 
 48  
 
 49  
   /**
 50  
    * Invokes the callback's {@link DatastoreService.TransactionCallable#run} method with a
 51  
    * {@link DatastoreReaderWriter} that is associated with a new transaction.
 52  
    * The transaction will be committed upon successful invocation.
 53  
    * Any thrown exception will cause the transaction to rollback and will be propagated
 54  
    * as a {@link DatastoreServiceException} with the original exception as its root cause.
 55  
    *
 56  
    * @param callable the callback to call with a newly created transactional readerWriter
 57  
    * @param options the options for the created transaction
 58  
    * @throws DatastoreServiceException upon failure
 59  
    */
 60  
   <T> T runInTransaction(TransactionCallable<T> callable, TransactionOption... options);
 61  
 
 62  
   /**
 63  
    * Returns a new Batch for processing multiple write operations in one request.
 64  
    */
 65  
   Batch newBatch(BatchOption... options);
 66  
 
 67  
   /**
 68  
    * Allocate a unique id for the given key.
 69  
    * The returned key will have the same information (projectId, kind, namespace and ancestors)
 70  
    * as the given key and will have a newly assigned id.
 71  
    *
 72  
    * @throws DatastoreServiceException upon failure
 73  
    */
 74  
   Key allocateId(IncompleteKey key);
 75  
 
 76  
   /**
 77  
    * Returns a list of keys using the allocated ids ordered by the input.
 78  
    *
 79  
    * @throws DatastoreServiceException upon failure
 80  
    * @see #allocateId(IncompleteKey)
 81  
    */
 82  
   List<Key> allocateId(IncompleteKey... key);
 83  
 
 84  
   /**
 85  
    * {@inheritDoc}
 86  
    * @throws DatastoreServiceException upon failure
 87  
    */
 88  
   @Override
 89  
   void update(Entity... entity);
 90  
 
 91  
   /**
 92  
    * {@inheritDoc}
 93  
    * @throws DatastoreServiceException upon failure
 94  
    */
 95  
   @Override
 96  
   void put(Entity... entity);
 97  
 
 98  
   /**
 99  
    * {@inheritDoc}
 100  
    * @throws DatastoreServiceException upon failure
 101  
    */
 102  
   @Override
 103  
   void delete(Key... key);
 104  
 
 105  
   /**
 106  
    * Returns a new KeyFactory for this service
 107  
    */
 108  
   KeyFactory newKeyFactory();
 109  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.DatastoreServiceException.html b/cobertura/com.google.gcloud.datastore.DatastoreServiceException.html deleted file mode 100644 index 5f0f385706ac..000000000000 --- a/cobertura/com.google.gcloud.datastore.DatastoreServiceException.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.DatastoreServiceException
-
 
- - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DatastoreServiceException
84%
22/26
33%
2/6
1.615
DatastoreServiceException$Code
100%
17/17
N/A
1.615
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.common.base.MoreObjects;
 20  
 import com.google.common.collect.ImmutableMap;
 21  
 import com.google.gcloud.RetryHelper;
 22  
 import com.google.gcloud.RetryHelper.RetryHelperException;
 23  
 import com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException;
 24  
 import com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException.Reason;
 25  
 
 26  
 import java.util.HashMap;
 27  
 import java.util.Map;
 28  
 
 29  
 public class DatastoreServiceException extends RuntimeException {
 30  
 
 31  
   private static final long serialVersionUID = 8170357898917041899L;
 32  
   private static final ImmutableMap<String, Code> REASON_TO_CODE;
 33  
   private static final ImmutableMap<Integer, Code> HTTP_TO_CODE;
 34  
 
 35  
   private final Code code;
 36  
 
 37  
   /**
 38  
    * An error code to represent the failure.
 39  
    *
 40  
    * @see <a href="https://cloud.google.com/datastore/docs/concepts/errors#Error_Codes">Google Cloud Datastore error codes</a>
 41  
    */
 42  110
   public enum Code {
 43  
 
 44  2
     ABORTED(Reason.ABORTED),
 45  2
     DEADLINE_EXCEEDED(Reason.DEADLINE_EXCEEDED),
 46  2
     UNAVAILABLE(Reason.UNAVAILABLE),
 47  2
     FAILED_PRECONDITION(Reason.FAILED_PRECONDITION),
 48  2
     INVALID_ARGUMENT(Reason.INVALID_ARGUMENT),
 49  2
     PERMISSION_DENIED(Reason.PERMISSION_DENIED),
 50  2
     UNAUTHORIZED(false, "Unauthorized", 401),
 51  2
     INTERNAL(Reason.INTERNAL),
 52  2
     RESOURCE_EXHAUSTED(Reason.RESOURCE_EXHAUSTED),
 53  2
     UNKNOWN(false, "Unknown failure", -1);
 54  
 
 55  
     private final boolean retryable;
 56  
     private final String description;
 57  
     private final int httpStatus;
 58  
 
 59  
     Code(Reason reason) {
 60  16
       this(reason.retryable(), reason.description(), reason.httpStatus());
 61  16
     }
 62  
 
 63  
     Code(boolean retryable, String description, int httpStatus) {
 64  
       this.retryable = retryable;
 65  
       this.description = description;
 66  
       this.httpStatus = httpStatus;
 67  
     }
 68  
 
 69  
     public String description() {
 70  16
       return description;
 71  
     }
 72  
 
 73  
     public int httpStatus() {
 74  36
       return httpStatus;
 75  
     }
 76  
 
 77  
     /**
 78  
      * Returns {@code true} if this exception is transient and the same request could be retried.
 79  
      * For any retry it is highly recommended to apply an exponential backoff.
 80  
      */
 81  
     public boolean retryable() {
 82  16
       return retryable;
 83  
     }
 84  
 
 85  
     DatastoreServiceException translate(DatastoreRpcException exception, String message) {
 86  24
       return new DatastoreServiceException(this, message, exception);
 87  
     }
 88  
   }
 89  
 
 90  
   static {
 91  2
     ImmutableMap.Builder<String, Code> builder = ImmutableMap.builder();
 92  2
     Map<Integer, Code> httpCodes = new HashMap<>();
 93  22
     for (Code code : Code.values()) {
 94  20
       builder.put(code.name(), code);
 95  20
       httpCodes.put(code.httpStatus(), code);
 96  
     }
 97  2
     REASON_TO_CODE = builder.build();
 98  2
     HTTP_TO_CODE = ImmutableMap.copyOf(httpCodes);
 99  2
   }
 100  
 
 101  
   public DatastoreServiceException(Code code, String message, Exception cause) {
 102  88
     super(MoreObjects.firstNonNull(message, code.description), cause);
 103  88
     this.code = code;
 104  88
   }
 105  
 
 106  
   public DatastoreServiceException(Code code, String message) {
 107  62
     this(code, message, null);
 108  62
   }
 109  
 
 110  
   /**
 111  
    * Returns the code associated with this exception.
 112  
    */
 113  
   public Code code() {
 114  24
     return code;
 115  
   }
 116  
 
 117  
   static DatastoreServiceException translateAndThrow(RetryHelperException ex) {
 118  8
     if (ex.getCause() instanceof DatastoreRpcException) {
 119  8
       return translateAndThrow((DatastoreRpcException) ex.getCause());
 120  
     }
 121  0
     if (ex instanceof RetryHelper.RetryInterruptedException) {
 122  0
       RetryHelper.RetryInterruptedException.propagate();
 123  
     }
 124  0
     throw new DatastoreServiceException(Code.UNKNOWN, ex.getMessage(), ex);
 125  
   }
 126  
 
 127  
   /**
 128  
    * Translate DatastoreException to DatastoreServiceException based on their
 129  
    * HTTP error codes. This method will always throw a new DatastoreServiceException.
 130  
    *
 131  
    * @throws DatastoreServiceException every time
 132  
    */
 133  
   static DatastoreServiceException translateAndThrow(DatastoreRpcException exception) {
 134  24
     String message = exception.getMessage();
 135  24
     Code code = REASON_TO_CODE.get(exception.reason());
 136  24
     if (code == null) {
 137  0
       code = MoreObjects.firstNonNull(HTTP_TO_CODE.get(exception.httpStatus()), Code.UNKNOWN);
 138  
     }
 139  24
     throw code.translate(exception, message);
 140  
   }
 141  
 
 142  
   /**
 143  
    * Throw a DatastoreServiceException with {@code FAILED_PRECONDITION} code and the {@code message}
 144  
    * in a nested exception.
 145  
    *
 146  
    * @throws DatastoreServiceException every time
 147  
    */
 148  
   static DatastoreServiceException throwInvalidRequest(String massage, Object... params) {
 149  60
     throw new DatastoreServiceException(Code.FAILED_PRECONDITION, String.format(massage, params));
 150  
   }
 151  
 
 152  
   static DatastoreServiceException propagateUserException(Exception ex) {
 153  2
     throw new DatastoreServiceException(Code.UNKNOWN, ex.getMessage(), ex);
 154  
   }
 155  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.DatastoreServiceFactory.html b/cobertura/com.google.gcloud.datastore.DatastoreServiceFactory.html deleted file mode 100644 index ce0e78aec352..000000000000 --- a/cobertura/com.google.gcloud.datastore.DatastoreServiceFactory.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.DatastoreServiceFactory
-
 
- - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DatastoreServiceFactory
100%
2/2
N/A
1
DatastoreServiceFactory$1
100%
1/1
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 
 20  
 /**
 21  
  * A base class for DatasoreService factories.
 22  
  */
 23  
 public abstract class DatastoreServiceFactory {
 24  
 
 25  2
   private static final DatastoreServiceFactory INSTANCE = new DatastoreServiceFactory() {
 26  
       @Override
 27  
       public DatastoreService get(DatastoreServiceOptions options) {
 28  40
         return new DatastoreServiceImpl(options);
 29  
       }
 30  
     };
 31  
 
 32  
   /**
 33  
    * Returns the default factory instance.
 34  
    */
 35  
   public static DatastoreServiceFactory instance() {
 36  40
     return INSTANCE;
 37  
   }
 38  
 
 39  
   /**
 40  
    * Returns a {@code DatastoreService} for the given options.
 41  
    */
 42  
   public abstract DatastoreService get(DatastoreServiceOptions options);
 43  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.DatastoreServiceImpl.html b/cobertura/com.google.gcloud.datastore.DatastoreServiceImpl.html deleted file mode 100644 index 66c8ca654186..000000000000 --- a/cobertura/com.google.gcloud.datastore.DatastoreServiceImpl.html +++ /dev/null @@ -1,662 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.DatastoreServiceImpl
-
 
- - - - - - - - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DatastoreServiceImpl
86%
105/121
84%
37/44
2.325
DatastoreServiceImpl$1
60%
3/5
75%
3/4
2.325
DatastoreServiceImpl$2
100%
2/2
N/A
2.325
DatastoreServiceImpl$3
100%
2/2
N/A
2.325
DatastoreServiceImpl$4
100%
2/2
N/A
2.325
DatastoreServiceImpl$5
100%
2/2
N/A
2.325
DatastoreServiceImpl$6
100%
2/2
N/A
2.325
DatastoreServiceImpl$7
100%
2/2
N/A
2.325
DatastoreServiceImpl$8
100%
3/3
N/A
2.325
DatastoreServiceImpl$ResultsIterator
83%
15/18
62%
5/8
2.325
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.api.services.datastore.DatastoreV1;
 20  
 import com.google.common.base.Function;
 21  
 import com.google.common.base.MoreObjects;
 22  
 import com.google.common.base.Preconditions;
 23  
 import com.google.common.collect.AbstractIterator;
 24  
 import com.google.common.collect.ImmutableList;
 25  
 import com.google.common.collect.Iterators;
 26  
 import com.google.common.collect.Sets;
 27  
 import com.google.gcloud.BaseService;
 28  
 import com.google.gcloud.ExceptionHandler;
 29  
 import com.google.gcloud.ExceptionHandler.Interceptor;
 30  
 import com.google.gcloud.RetryHelper;
 31  
 import com.google.gcloud.RetryHelper.RetryHelperException;
 32  
 import com.google.gcloud.RetryParams;
 33  
 import com.google.gcloud.spi.DatastoreRpc;
 34  
 import com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException;
 35  
 import com.google.protobuf.ByteString;
 36  
 
 37  
 import java.util.Arrays;
 38  
 import java.util.Collections;
 39  
 import java.util.Iterator;
 40  
 import java.util.LinkedHashMap;
 41  
 import java.util.LinkedHashSet;
 42  
 import java.util.List;
 43  
 import java.util.Map;
 44  
 import java.util.Set;
 45  
 import java.util.concurrent.Callable;
 46  
 
 47  
 
 48  248
 final class DatastoreServiceImpl extends BaseService<DatastoreServiceOptions>
 49  
     implements DatastoreService {
 50  
 
 51  2
   private static final Interceptor EXCEPTION_HANDLER_INTERCEPTOR =
 52  
       new Interceptor() {
 53  
 
 54  
         private static final long serialVersionUID = 6911242958397733203L;
 55  
 
 56  
         @Override
 57  
         public RetryResult afterEval(Exception exception, RetryResult retryResult) {
 58  0
           return null;
 59  
         }
 60  
 
 61  
         @Override
 62  
         public RetryResult beforeEval(Exception exception) {
 63  10
           if (exception instanceof DatastoreRpcException) {
 64  10
             boolean retryable = ((DatastoreRpcException) exception).retryable();
 65  10
             return retryable ? Interceptor.RetryResult.RETRY : Interceptor.RetryResult.ABORT;
 66  
           }
 67  0
           return null;
 68  
         }
 69  
       };
 70  2
   private static final ExceptionHandler EXCEPTION_HANDLER = ExceptionHandler.builder()
 71  
       .abortOn(RuntimeException.class, DatastoreRpcException.class)
 72  
       .interceptor(EXCEPTION_HANDLER_INTERCEPTOR).build();
 73  
 
 74  
   private final DatastoreRpc datastoreRpc;
 75  
   private final RetryParams retryParams;
 76  
 
 77  
   DatastoreServiceImpl(DatastoreServiceOptions options) {
 78  40
     super(options);
 79  40
     this.datastoreRpc = options.datastoreRpc();
 80  40
     retryParams = MoreObjects.firstNonNull(options.retryParams(), RetryParams.noRetries());
 81  40
   }
 82  
 
 83  
   @Override
 84  
   public Batch newBatch(BatchOption... options) {
 85  4
     return new BatchImpl(this, options);
 86  
   }
 87  
 
 88  
   @Override
 89  
   public Transaction newTransaction(TransactionOption... options) {
 90  12
     return new TransactionImpl(this, options);
 91  
   }
 92  
 
 93  
   @Override
 94  
   public <T> T runInTransaction(TransactionCallable<T> callable, TransactionOption... options) {
 95  0
     return DatastoreHelper.runInTransaction(this, callable, options);
 96  
   }
 97  
 
 98  
   @Override
 99  
   public <T> QueryResults<T> run(Query<T> query) {
 100  62
     return run(null, query);
 101  
   }
 102  
 
 103  
   <T> QueryResults<T> run(DatastoreV1.ReadOptions readOptionsPb, Query<T> query) {
 104  66
     return new QueryResultsImpl<>(this, readOptionsPb, query);
 105  
   }
 106  
 
 107  
   DatastoreV1.RunQueryResponse runQuery(final DatastoreV1.RunQueryRequest requestPb) {
 108  
     try {
 109  66
       return RetryHelper.runWithRetries(new Callable<DatastoreV1.RunQueryResponse>() {
 110  
         @Override public DatastoreV1.RunQueryResponse call() throws DatastoreRpcException {
 111  66
           return datastoreRpc.runQuery(requestPb);
 112  
         }
 113  
       }, retryParams, EXCEPTION_HANDLER);
 114  0
     } catch (RetryHelperException e) {
 115  0
       throw DatastoreServiceException.translateAndThrow(e);
 116  
     }
 117  
   }
 118  
 
 119  
   @Override
 120  
   public Key allocateId(IncompleteKey key) {
 121  6
     return DatastoreHelper.allocateId(this, key);
 122  
   }
 123  
 
 124  
   @Override
 125  
   public List<Key> allocateId(IncompleteKey... keys) {
 126  10
     if (keys.length == 0) {
 127  0
       return Collections.emptyList();
 128  
     }
 129  10
     DatastoreV1.AllocateIdsRequest.Builder requestPb = DatastoreV1.AllocateIdsRequest.newBuilder();
 130  30
     for (IncompleteKey key : keys) {
 131  20
       requestPb.addKey(trimNameOrId(key).toPb());
 132  
     }
 133  10
     DatastoreV1.AllocateIdsResponse responsePb = allocateIds(requestPb.build());
 134  10
     Iterator<DatastoreV1.Key> keyIterator = responsePb.getKeyList().iterator();
 135  10
     ImmutableList.Builder<Key> builder = ImmutableList.<Key>builder().addAll(
 136  20
         Iterators.transform(keyIterator, new Function<DatastoreV1.Key, Key>() {
 137  
           @Override
 138  
           public Key apply(DatastoreV1.Key keyPb) {
 139  20
             return Key.fromPb(keyPb);
 140  
           }
 141  
         }));
 142  10
     return builder.build();
 143  
   }
 144  
 
 145  
   DatastoreV1.AllocateIdsResponse allocateIds(final DatastoreV1.AllocateIdsRequest requestPb) {
 146  
     try {
 147  10
       return RetryHelper.runWithRetries(new Callable<DatastoreV1.AllocateIdsResponse>() {
 148  
         @Override public DatastoreV1.AllocateIdsResponse call() throws DatastoreRpcException {
 149  10
           return datastoreRpc.allocateIds(requestPb);
 150  
         }
 151  
       }, retryParams, EXCEPTION_HANDLER);
 152  0
     } catch (RetryHelperException e) {
 153  0
       throw DatastoreServiceException.translateAndThrow(e);
 154  
     }
 155  
   }
 156  
 
 157  
   private IncompleteKey trimNameOrId(IncompleteKey key) {
 158  20
     if (key instanceof Key) {
 159  8
       return IncompleteKey.builder(key).build();
 160  
     }
 161  12
     return key;
 162  
   }
 163  
 
 164  
   @Override
 165  
   public Entity add(FullEntity<?> entity) {
 166  4
     return DatastoreHelper.add(this, entity);
 167  
   }
 168  
 
 169  
   @SuppressWarnings("unchecked")
 170  
   @Override
 171  
   public List<Entity> add(FullEntity<?>... entities) {
 172  44
     if (entities.length == 0) {
 173  0
       return Collections.emptyList();
 174  
     }
 175  44
     DatastoreV1.Mutation.Builder mutationPb = DatastoreV1.Mutation.newBuilder();
 176  44
     Map<Key, Entity> completeEntities = new LinkedHashMap<>();
 177  130
     for (FullEntity<?> entity : entities) {
 178  86
       Entity completeEntity = null;
 179  86
       if (entity.key() instanceof Key) {
 180  82
         completeEntity = Entity.convert((FullEntity<Key>) entity);
 181  
       }
 182  86
       if (completeEntity != null) {
 183  82
         if (completeEntities.put(completeEntity.key(), completeEntity) != null) {
 184  0
           throw DatastoreServiceException.throwInvalidRequest(
 185  
               "Duplicate entity with the key %s", entity.key());
 186  
         }
 187  82
         mutationPb.addInsert(completeEntity.toPb());
 188  
       } else {
 189  4
         Preconditions.checkArgument(entity.hasKey(), "entity %s is missing a key", entity);
 190  4
         mutationPb.addInsertAutoId(entity.toPb());
 191  
       }
 192  
     }
 193  44
     DatastoreV1.CommitResponse commitResponse = commitMutation(mutationPb);
 194  42
     Iterator<DatastoreV1.Key> allocatedKeys =
 195  
         commitResponse.getMutationResult().getInsertAutoIdKeyList().iterator();
 196  42
     ImmutableList.Builder<Entity> responseBuilder = ImmutableList.builder();
 197  126
     for (FullEntity<?> entity : entities) {
 198  84
       Entity completeEntity = completeEntities.get(entity.key());
 199  84
       if (completeEntity != null) {
 200  80
         responseBuilder.add(completeEntity);
 201  
       } else {
 202  4
         responseBuilder.add(Entity.builder(Key.fromPb(allocatedKeys.next()), entity).build());
 203  
       }
 204  
     }
 205  42
     return responseBuilder.build();
 206  
   }
 207  
 
 208  
   @Override
 209  
   public Entity get(Key key) {
 210  22
     return DatastoreHelper.get(this, key);
 211  
   }
 212  
 
 213  
   @Override
 214  
   public Iterator<Entity> get(Key... keys) {
 215  44
     return get(null, keys);
 216  
   }
 217  
 
 218  
   @Override
 219  
   public List<Entity> fetch(Key... keys) {
 220  22
     return DatastoreHelper.fetch(this, keys);
 221  
   }
 222  
 
 223  
   Iterator<Entity> get(DatastoreV1.ReadOptions readOptionsPb, final Key... keys) {
 224  48
     if (keys.length == 0) {
 225  0
       return Collections.emptyIterator();
 226  
     }
 227  48
     DatastoreV1.LookupRequest.Builder requestPb = DatastoreV1.LookupRequest.newBuilder();
 228  48
     if (readOptionsPb != null) {
 229  4
       requestPb.setReadOptions(readOptionsPb);
 230  
     }
 231  48
     for (Key k : Sets.newLinkedHashSet(Arrays.asList(keys))) {
 232  100
       requestPb.addKey(k.toPb());
 233  100
     }
 234  48
     return new ResultsIterator(requestPb);
 235  
   }
 236  
 
 237  98
   final class ResultsIterator extends AbstractIterator<Entity> {
 238  
 
 239  
     private final DatastoreV1.LookupRequest.Builder requestPb;
 240  
     Iterator<DatastoreV1.EntityResult> iter;
 241  
 
 242  48
     ResultsIterator(DatastoreV1.LookupRequest.Builder requestPb) {
 243  48
       this.requestPb = requestPb;
 244  48
       loadResults();
 245  48
     }
 246  
 
 247  
     private void loadResults() {
 248  48
       DatastoreV1.LookupResponse responsePb = lookup(requestPb.build());
 249  48
       iter = responsePb.getFoundList().iterator();
 250  48
       requestPb.clearKey();
 251  48
       if (responsePb.getDeferredCount() > 0) {
 252  0
         requestPb.addAllKey(responsePb.getDeferredList());
 253  
       }
 254  48
     }
 255  
 
 256  
     @SuppressWarnings("unchecked")
 257  
     @Override
 258  
     protected Entity computeNext() {
 259  98
       if (iter.hasNext()) {
 260  72
         return Entity.fromPb(iter.next().getEntity());
 261  
       }
 262  26
       while (!iter.hasNext()) {
 263  26
         if (requestPb.getKeyCount() == 0) {
 264  26
           return endOfData();
 265  
         }
 266  0
         loadResults();
 267  
       }
 268  0
       return Entity.fromPb(iter.next().getEntity());
 269  
     }
 270  
   }
 271  
 
 272  
   DatastoreV1.LookupResponse lookup(final DatastoreV1.LookupRequest requestPb) {
 273  
     try {
 274  48
       return RetryHelper.runWithRetries(new Callable<DatastoreV1.LookupResponse>() {
 275  
         @Override public DatastoreV1.LookupResponse call() throws DatastoreRpcException {
 276  50
           return datastoreRpc.lookup(requestPb);
 277  
         }
 278  
       }, retryParams, EXCEPTION_HANDLER);
 279  0
     } catch (RetryHelperException e) {
 280  0
       throw DatastoreServiceException.translateAndThrow(e);
 281  
     }
 282  
   }
 283  
 
 284  
   @SafeVarargs
 285  
   @Override
 286  
   public final void update(Entity... entities) {
 287  4
     if (entities.length > 0) {
 288  4
       DatastoreV1.Mutation.Builder mutationPb = DatastoreV1.Mutation.newBuilder();
 289  4
       Map<Key, Entity> dedupEntities = new LinkedHashMap<>();
 290  8
       for (Entity entity : entities) {
 291  4
         dedupEntities.put(entity.key(), entity);
 292  
       }
 293  4
       for (Entity entity : dedupEntities.values()) {
 294  4
         mutationPb.addUpdate(entity.toPb());
 295  4
       }
 296  4
       commitMutation(mutationPb);
 297  
     }
 298  2
   }
 299  
 
 300  
   @SafeVarargs
 301  
   @Override
 302  
   public final void put(Entity... entities) {
 303  10
     if (entities.length > 0) {
 304  10
       DatastoreV1.Mutation.Builder mutationPb = DatastoreV1.Mutation.newBuilder();
 305  10
       Map<Key, Entity> dedupEntities = new LinkedHashMap<>();
 306  24
       for (Entity entity : entities) {
 307  14
         dedupEntities.put(entity.key(), entity);
 308  
       }
 309  10
       for (Entity e : dedupEntities.values()) {
 310  14
         mutationPb.addUpsert(e.toPb());
 311  14
       }
 312  10
       commitMutation(mutationPb);
 313  
     }
 314  10
   }
 315  
 
 316  
   @Override
 317  
   public void delete(Key... keys) {
 318  40
     if (keys.length > 0) {
 319  36
       DatastoreV1.Mutation.Builder mutationPb = DatastoreV1.Mutation.newBuilder();
 320  36
       Set<Key> dedupKeys = new LinkedHashSet<>(Arrays.asList(keys));
 321  36
       for (Key key : dedupKeys) {
 322  96
         mutationPb.addDelete(key.toPb());
 323  96
       }
 324  36
       commitMutation(mutationPb);
 325  
     }
 326  40
   }
 327  
 
 328  
   @Override
 329  
   public KeyFactory newKeyFactory() {
 330  8
     return DatastoreHelper.newKeyFactory(options());
 331  
   }
 332  
 
 333  
   private DatastoreV1.CommitResponse commitMutation(DatastoreV1.Mutation.Builder mutationPb) {
 334  94
     if (options().force()) {
 335  0
       mutationPb.setForce(true);
 336  
     }
 337  94
     DatastoreV1.CommitRequest.Builder requestPb = DatastoreV1.CommitRequest.newBuilder();
 338  94
     requestPb.setMode(DatastoreV1.CommitRequest.Mode.NON_TRANSACTIONAL);
 339  94
     requestPb.setMutation(mutationPb);
 340  94
     return commit(requestPb.build());
 341  
   }
 342  
 
 343  
   DatastoreV1.CommitResponse commit(final DatastoreV1.CommitRequest requestPb) {
 344  
     try {
 345  108
       return RetryHelper.runWithRetries(new Callable<DatastoreV1.CommitResponse>() {
 346  
         @Override public DatastoreV1.CommitResponse call() throws DatastoreRpcException {
 347  108
           return datastoreRpc.commit(requestPb);
 348  
         }
 349  
       }, retryParams, EXCEPTION_HANDLER);
 350  8
     } catch (RetryHelperException e) {
 351  8
       throw DatastoreServiceException.translateAndThrow(e);
 352  
     }
 353  
   }
 354  
 
 355  
   ByteString requestTransactionId(DatastoreV1.BeginTransactionRequest.Builder requestPb) {
 356  12
     return beginTransaction(requestPb.build()).getTransaction();
 357  
   }
 358  
 
 359  
   DatastoreV1.BeginTransactionResponse beginTransaction(
 360  
       final DatastoreV1.BeginTransactionRequest requestPb) {
 361  
     try {
 362  12
       return RetryHelper.runWithRetries(new Callable<DatastoreV1.BeginTransactionResponse>() {
 363  
         @Override
 364  
         public DatastoreV1.BeginTransactionResponse call() throws DatastoreRpcException {
 365  12
           return datastoreRpc.beginTransaction(requestPb);
 366  
         }
 367  
       }, retryParams, EXCEPTION_HANDLER);
 368  0
     } catch (RetryHelperException e) {
 369  0
       throw DatastoreServiceException.translateAndThrow(e);
 370  
     }
 371  
   }
 372  
 
 373  
   void rollbackTransaction(ByteString transaction) {
 374  2
     DatastoreV1.RollbackRequest.Builder requestPb = DatastoreV1.RollbackRequest.newBuilder();
 375  2
     requestPb.setTransaction(transaction);
 376  2
     rollback(requestPb.build());
 377  2
   }
 378  
 
 379  
   void rollback(final DatastoreV1.RollbackRequest requestPb) {
 380  
     try {
 381  2
       RetryHelper.runWithRetries(new Callable<Void>() {
 382  
         @Override public Void call() throws DatastoreRpcException {
 383  2
           datastoreRpc.rollback(requestPb);
 384  2
           return null;
 385  
         }
 386  
       }, retryParams, EXCEPTION_HANDLER);
 387  0
     } catch (RetryHelperException e) {
 388  0
       throw DatastoreServiceException.translateAndThrow(e);
 389  2
     }
 390  2
   }
 391  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.DatastoreServiceOptions.html b/cobertura/com.google.gcloud.datastore.DatastoreServiceOptions.html deleted file mode 100644 index e2a51694fa33..000000000000 --- a/cobertura/com.google.gcloud.datastore.DatastoreServiceOptions.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.DatastoreServiceOptions
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DatastoreServiceOptions
70%
35/50
42%
12/28
2.158
DatastoreServiceOptions$1
N/A
N/A
2.158
DatastoreServiceOptions$Builder
100%
15/15
100%
2/2
2.158
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.gcloud.datastore.Validator.validateNamespace;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 import com.google.api.services.datastore.DatastoreV1.EntityResult;
 23  
 import com.google.api.services.datastore.DatastoreV1.LookupResponse;
 24  
 import com.google.common.collect.ImmutableSet;
 25  
 import com.google.common.collect.Iterables;
 26  
 import com.google.gcloud.ServiceOptions;
 27  
 import com.google.gcloud.spi.DatastoreRpc;
 28  
 import com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException;
 29  
 import com.google.gcloud.spi.ServiceRpcProvider;
 30  
 
 31  
 import java.lang.reflect.Method;
 32  
 import java.util.Iterator;
 33  
 import java.util.Objects;
 34  
 import java.util.Set;
 35  
 
 36  234
 public class DatastoreServiceOptions extends ServiceOptions<DatastoreRpc, DatastoreServiceOptions> {
 37  
 
 38  
   private static final long serialVersionUID = -8636602944160689193L;
 39  
   private static final String DATASET_ENV_NAME = "DATASTORE_DATASET";
 40  
   private static final String DATASTORE_SCOPE = "https://www.googleapis.com/auth/datastore";
 41  
   private static final String USERINFO_SCOPE = "https://www.googleapis.com/auth/userinfo.email";
 42  2
   private static final Set<String> SCOPES = ImmutableSet.of(DATASTORE_SCOPE, USERINFO_SCOPE);
 43  
 
 44  
   private final String namespace;
 45  
   private final boolean force;
 46  
   private final boolean normalizeDataset;
 47  
   private transient DatastoreRpc datastoreRpc;
 48  
 
 49  410
   public static class Builder extends
 50  
       ServiceOptions.Builder<DatastoreRpc, DatastoreServiceOptions, Builder> {
 51  
 
 52  
     private String namespace;
 53  
     private boolean force;
 54  44
     private boolean normalizeDataset = true;
 55  
 
 56  
     private Builder() {
 57  
     }
 58  
 
 59  
     private Builder(DatastoreServiceOptions options) {
 60  44
       super(options);
 61  44
       force = options.force;
 62  44
       namespace = options.namespace;
 63  44
       normalizeDataset = options.normalizeDataset;
 64  44
     }
 65  
 
 66  
     @Override
 67  
     public DatastoreServiceOptions build() {
 68  64
       DatastoreServiceOptions options = new DatastoreServiceOptions(this);
 69  64
       return normalizeDataset ? options.normalize() : options;
 70  
     }
 71  
 
 72  
     public Builder namespace(String namespace) {
 73  6
       this.namespace = validateNamespace(namespace);
 74  6
       return this;
 75  
     }
 76  
 
 77  
     public Builder force(boolean force) {
 78  6
       this.force = force;
 79  6
       return this;
 80  
     }
 81  
 
 82  
     Builder normalizeDataset(boolean normalizeDataset) {
 83  52
       this.normalizeDataset = normalizeDataset;
 84  52
       return this;
 85  
     }
 86  
   }
 87  
 
 88  
   private DatastoreServiceOptions(Builder builder) {
 89  102
     super(builder);
 90  102
     normalizeDataset = builder.normalizeDataset;
 91  102
     namespace = builder.namespace != null ? builder.namespace : defaultNamespace();
 92  102
     force = builder.force;
 93  102
   }
 94  
 
 95  
   private DatastoreServiceOptions normalize() {
 96  38
     if (!normalizeDataset) {
 97  0
       return this;
 98  
     }
 99  
 
 100  38
     Builder builder = toBuilder();
 101  38
     builder.normalizeDataset(false);
 102  
     // Replace provided project-id with full project-id (s~xxx, e~xxx,...)
 103  38
     DatastoreV1.LookupRequest.Builder requestPb = DatastoreV1.LookupRequest.newBuilder();
 104  38
     DatastoreV1.Key key = DatastoreV1.Key.newBuilder()
 105  
         .addPathElement(DatastoreV1.Key.PathElement.newBuilder().setKind("__foo__").setName("bar"))
 106  
         .build();
 107  38
     requestPb.addKey(key);
 108  
     try {
 109  38
       LookupResponse responsePb = datastoreRpc().lookup(requestPb.build());
 110  38
       if (responsePb.getDeferredCount() > 0) {
 111  0
         key = responsePb.getDeferred(0);
 112  
       } else {
 113  38
         Iterator<EntityResult> combinedIter =
 114  
             Iterables.concat(responsePb.getMissingList(), responsePb.getFoundList()).iterator();
 115  38
         key = combinedIter.next().getEntity().getKey();
 116  
       }
 117  38
       builder.projectId(key.getPartitionId().getDatasetId());
 118  38
       return new DatastoreServiceOptions(builder);
 119  0
     } catch (DatastoreRpcException e) {
 120  0
       throw DatastoreServiceException.translateAndThrow(e);
 121  
     }
 122  
   }
 123  
 
 124  
   @Override
 125  
   protected String defaultProject() {
 126  0
     String projectId = System.getProperty(DATASET_ENV_NAME, System.getenv(DATASET_ENV_NAME));
 127  0
     if (projectId == null) {
 128  0
       projectId = appEngineAppId();
 129  
     }
 130  0
     return projectId != null ? projectId : super.defaultProject();
 131  
   }
 132  
 
 133  
   public String namespace() {
 134  82
     return namespace;
 135  
   }
 136  
 
 137  
   private static String defaultNamespace() {
 138  
     // TODO(ozarov): An alternative to reflection would be to depend on AE api jar:
 139  
     // http://mvnrepository.com/artifact/com.google.appengine/appengine-api-1.0-sdk/1.2.0
 140  
     try {
 141  94
       Class<?> clazz = Class.forName("com.google.appengine.api.NamespaceManager");
 142  0
       Method method = clazz.getMethod("get");
 143  0
       String namespace = (String) method.invoke(null);
 144  0
       return namespace == null || namespace.isEmpty() ? null : namespace;
 145  94
     } catch (Exception ignore) {
 146  
       // return null (Datastore default namespace) if could not automatically determine
 147  94
       return null;
 148  
     }
 149  
   }
 150  
 
 151  
   public boolean force() {
 152  106
     return force;
 153  
   }
 154  
 
 155  
   @Override
 156  
   protected Set<String> scopes() {
 157  76
     return SCOPES;
 158  
   }
 159  
 
 160  
   @Override
 161  
   public Builder toBuilder() {
 162  44
     return new Builder(this);
 163  
   }
 164  
 
 165  
   @Override
 166  
   public int hashCode() {
 167  0
     return super.hashCode() ^ Objects.hash(namespace, force, normalizeDataset);
 168  
   }
 169  
 
 170  
   @Override
 171  
   public boolean equals(Object obj) {
 172  4
     if (!(obj instanceof DatastoreServiceOptions)) {
 173  0
       return false;
 174  
     }
 175  4
     DatastoreServiceOptions other = (DatastoreServiceOptions) obj;
 176  4
     return isEquals(other) && Objects.equals(namespace, other.namespace)
 177  
         && Objects.equals(force, other.force)
 178  
         && Objects.equals(normalizeDataset, other.normalizeDataset);
 179  
   }
 180  
 
 181  
   DatastoreRpc datastoreRpc() {
 182  80
     if (datastoreRpc != null) {
 183  0
       return datastoreRpc;
 184  
     }
 185  80
     if (serviceRpcFactory() != null) {
 186  4
       datastoreRpc = serviceRpcFactory().create(this);
 187  
     } else {
 188  76
       datastoreRpc = ServiceRpcProvider.datastore(this);
 189  
     }
 190  80
     return datastoreRpc;
 191  
   }
 192  
 
 193  
   public static DatastoreServiceOptions defaultInstance() {
 194  0
     return builder().build();
 195  
   }
 196  
 
 197  
   public static Builder builder() {
 198  52
     return new Builder();
 199  
   }
 200  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.DatastoreWriter.html b/cobertura/com.google.gcloud.datastore.DatastoreWriter.html deleted file mode 100644 index a73137018002..000000000000 --- a/cobertura/com.google.gcloud.datastore.DatastoreWriter.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.DatastoreWriter
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DatastoreWriter
N/A
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import java.util.List;
 20  
 
 21  
 /**
 22  
  * An interface to represent Google Cloud Datastore write operations.
 23  
  */
 24  
 public interface DatastoreWriter {
 25  
 
 26  
   /**
 27  
    * Datastore add operation.
 28  
    * This method will automatically allocate an id if necessary.
 29  
    *
 30  
    * @param entity the entity to add
 31  
    * @return an {@code Entity} with the same properties and a key that is either newly allocated
 32  
    *     or the same one if key is already complete
 33  
    * @throws DatastoreServiceException upon failure
 34  
    * @throws IllegalArgumentException if the given entity is missing a key
 35  
    */
 36  
   Entity add(FullEntity<?> entity);
 37  
 
 38  
   /**
 39  
    * Datastore add operation.
 40  
    * This method will automatically allocate id for any entity with an incomplete key.
 41  
    *
 42  
    * @return a list of {@code Entity} ordered by input with the same properties and a key that
 43  
    *     is either newly allocated or the same one if was already complete
 44  
    * @throws DatastoreServiceException upon failure
 45  
    * @throws IllegalArgumentException if any of the given entities is missing a key
 46  
    * @see #add(FullEntity)
 47  
    */
 48  
   List<Entity> add(FullEntity<?>... entity);
 49  
 
 50  
   /**
 51  
    * A Datastore update operation.
 52  
    * The operation will fail if an entity with the same key does not already exist.
 53  
    */
 54  
   void update(Entity... entity);
 55  
 
 56  
   /**
 57  
    * A Datastore put (a.k.a upsert) operation.
 58  
    * The operation will add or modify the entities.
 59  
    */
 60  
   void put(Entity... entity);
 61  
 
 62  
   /**
 63  
    * A datastore delete operation.
 64  
    * It is OK request a deletion of a non-existing entity.
 65  
    */
 66  
   void delete(Key... key);
 67  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.DateTime.html b/cobertura/com.google.gcloud.datastore.DateTime.html deleted file mode 100644 index baaa5e9373ea..000000000000 --- a/cobertura/com.google.gcloud.datastore.DateTime.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.DateTime
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DateTime
86%
13/15
83%
5/6
1.143
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkNotNull;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 import com.google.api.services.datastore.DatastoreV1.Value;
 23  
 import com.google.protobuf.InvalidProtocolBufferException;
 24  
 
 25  
 import org.joda.time.format.ISODateTimeFormat;
 26  
 
 27  
 import java.util.Calendar;
 28  
 import java.util.Date;
 29  
 
 30  
 /**
 31  
  * A Google Cloud Datastore timestamp (represented in micro-seconds).
 32  
  * This class is immutable.
 33  
  *
 34  
  * @see <a href="https://cloud.google.com/datastore/docs/concepts/entities">Google Cloud Datastore Entities, Properties, and Keys</a>
 35  
  */
 36  2
 public final class DateTime extends Serializable<DatastoreV1.Value>
 37  
     implements Comparable<DateTime> {
 38  
 
 39  
   private static final long serialVersionUID = 7343324797621228378L;
 40  
 
 41  
   private final transient long timestampMicroseconds;
 42  
 
 43  
   DateTime(long timestampMicroseconds) {
 44  
     this.timestampMicroseconds = timestampMicroseconds;
 45  
   }
 46  
 
 47  
   @Override
 48  
   public String toString() {
 49  0
     return ISODateTimeFormat.dateTime().print(timestampMillis());
 50  
   }
 51  
 
 52  
   @Override
 53  
   public int hashCode() {
 54  
     return (int) timestampMicroseconds;
 55  
   }
 56  
 
 57  
   @Override
 58  
   public int compareTo(DateTime other) {
 59  0
     return toDate().compareTo(other.toDate());
 60  
   }
 61  
 
 62  
   @Override
 63  
   public boolean equals(Object obj) {
 64  122
     return obj == this || obj instanceof DateTime
 65  
         && timestampMicroseconds == ((DateTime) obj).timestampMicroseconds;
 66  
   }
 67  
 
 68  
   public long timestampMicroseconds() {
 69  140
     return timestampMicroseconds;
 70  
   }
 71  
 
 72  
   public long timestampMillis() {
 73  10
     return timestampMicroseconds / 1000L;
 74  
   }
 75  
 
 76  
   public Date toDate() {
 77  2
     return new Date(timestampMillis());
 78  
   }
 79  
 
 80  
   public Calendar toCalendar() {
 81  2
     Calendar cal = Calendar.getInstance();
 82  2
     cal.setTimeInMillis(timestampMillis());
 83  2
     return cal;
 84  
   }
 85  
 
 86  
   public static DateTime now() {
 87  16
     return copyFrom(new Date());
 88  
   }
 89  
 
 90  
   public static DateTime copyFrom(Date date) {
 91  32
     return new DateTime(checkNotNull(date).getTime() * 1000L);
 92  
   }
 93  
 
 94  
   public static DateTime copyFrom(Calendar calendar) {
 95  12
     return copyFrom(calendar.getTime());
 96  
   }
 97  
 
 98  
   @Override
 99  
   protected Value toPb() {
 100  2
     return DatastoreV1.Value.newBuilder().setIntegerValue(timestampMicroseconds).build();
 101  
   }
 102  
 
 103  
   @Override
 104  
   protected Object fromPb(byte[] bytesPb) throws InvalidProtocolBufferException {
 105  2
     return new DateTime(DatastoreV1.Value.parseFrom(bytesPb).getIntegerValue());
 106  
   }
 107  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.DateTimeValue.html b/cobertura/com.google.gcloud.datastore.DateTimeValue.html deleted file mode 100644 index c3b1d0240bd5..000000000000 --- a/cobertura/com.google.gcloud.datastore.DateTimeValue.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.DateTimeValue
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DateTimeValue
100%
7/7
N/A
1
DateTimeValue$1
100%
5/5
N/A
1
DateTimeValue$Builder
100%
4/4
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.api.services.datastore.DatastoreV1.Value.TIMESTAMP_MICROSECONDS_VALUE_FIELD_NUMBER;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 
 23  94
 public final class DateTimeValue extends Value<DateTime> {
 24  
 
 25  
   private static final long serialVersionUID = -5096238337676649540L;
 26  
 
 27  2
   static final BaseMarshaller<DateTime, DateTimeValue, Builder> MARSHALLER =
 28  314
       new BaseMarshaller<DateTime, DateTimeValue, Builder>() {
 29  
 
 30  
         private static final long serialVersionUID = -5695812592049332840L;
 31  
 
 32  
         @Override
 33  
         public int getProtoFieldId() {
 34  
           return TIMESTAMP_MICROSECONDS_VALUE_FIELD_NUMBER;
 35  
         }
 36  
 
 37  
         @Override
 38  
         public Builder newBuilder(DateTime value) {
 39  90
           return builder(value);
 40  
         }
 41  
 
 42  
         @Override
 43  
         protected DateTime getValue(DatastoreV1.Value from) {
 44  90
           return new DateTime(from.getTimestampMicrosecondsValue());
 45  
         }
 46  
 
 47  
         @Override
 48  
         protected void setValue(DateTimeValue from, DatastoreV1.Value.Builder to) {
 49  134
           to.setTimestampMicrosecondsValue(from.get().timestampMicroseconds());
 50  134
         }
 51  
       };
 52  
 
 53  690
   public static final class Builder extends Value.BaseBuilder<DateTime, DateTimeValue, Builder> {
 54  
 
 55  
     private Builder() {
 56  150
       super(ValueType.DATE_TIME);
 57  150
     }
 58  
 
 59  
     @Override
 60  
     public DateTimeValue build() {
 61  94
       return new DateTimeValue(this);
 62  
     }
 63  
   }
 64  
 
 65  
   public DateTimeValue(DateTime dateTime) {
 66  56
     this(builder(dateTime));
 67  56
   }
 68  
 
 69  
   private DateTimeValue(Builder builder) {
 70  
     super(builder);
 71  
   }
 72  
 
 73  
   @Override
 74  
   public Builder toBuilder() {
 75  2
     return new Builder().mergeFrom(this);
 76  
   }
 77  
 
 78  
   public static DateTimeValue of(DateTime dateTime) {
 79  54
     return new DateTimeValue(dateTime);
 80  
   }
 81  
 
 82  
   public static Builder builder(DateTime dateTime) {
 83  148
     return new Builder().set(dateTime);
 84  
   }
 85  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.DoubleValue.html b/cobertura/com.google.gcloud.datastore.DoubleValue.html deleted file mode 100644 index 9d1360997eed..000000000000 --- a/cobertura/com.google.gcloud.datastore.DoubleValue.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.DoubleValue
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DoubleValue
100%
7/7
N/A
1
DoubleValue$1
100%
5/5
N/A
1
DoubleValue$Builder
100%
4/4
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.api.services.datastore.DatastoreV1.Value.DOUBLE_VALUE_FIELD_NUMBER;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 
 23  6
 public final class DoubleValue extends Value<Double> {
 24  
 
 25  
   private static final long serialVersionUID = -5096238337676649540L;
 26  
 
 27  2
   static final BaseMarshaller<Double, DoubleValue, Builder> MARSHALLER =
 28  6
       new BaseMarshaller<Double, DoubleValue, Builder>() {
 29  
 
 30  
         private static final long serialVersionUID = 3935522813529400538L;
 31  
 
 32  
         @Override
 33  
         public int getProtoFieldId() {
 34  
           return DOUBLE_VALUE_FIELD_NUMBER;
 35  
         }
 36  
 
 37  
         @Override
 38  
         public Builder newBuilder(Double value) {
 39  2
           return builder(value);
 40  
         }
 41  
 
 42  
         @Override
 43  
         protected Double getValue(DatastoreV1.Value from) {
 44  2
           return from.getDoubleValue();
 45  
         }
 46  
 
 47  
         @Override
 48  
         protected void setValue(DoubleValue from, DatastoreV1.Value.Builder to) {
 49  2
           to.setDoubleValue(from.get());
 50  2
         }
 51  
       };
 52  
 
 53  266
   public static final class Builder extends Value.BaseBuilder<Double, DoubleValue, Builder> {
 54  
 
 55  
     public Builder() {
 56  88
       super(ValueType.DOUBLE);
 57  88
     }
 58  
 
 59  
     @Override
 60  
     public DoubleValue build() {
 61  6
       return new DoubleValue(this);
 62  
     }
 63  
   }
 64  
 
 65  
   public DoubleValue(double value) {
 66  82
     this(builder(value));
 67  82
   }
 68  
 
 69  
   private DoubleValue(Builder builder) {
 70  
     super(builder);
 71  
   }
 72  
 
 73  
   @Override
 74  
   public Builder toBuilder() {
 75  2
     return new Builder().mergeFrom(this);
 76  
   }
 77  
 
 78  
   public static DoubleValue of(double value) {
 79  82
     return new DoubleValue(value);
 80  
   }
 81  
 
 82  
   public static Builder builder(double value) {
 83  86
     return new Builder().set(value);
 84  
   }
 85  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.Entity.html b/cobertura/com.google.gcloud.datastore.Entity.html deleted file mode 100644 index 5e998b969676..000000000000 --- a/cobertura/com.google.gcloud.datastore.Entity.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.Entity
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Entity
63%
7/11
25%
1/4
1.143
Entity$1
N/A
N/A
1.143
Entity$Builder
100%
11/11
50%
1/2
1.143
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkNotNull;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 import com.google.common.base.Preconditions;
 23  
 
 24  
 /**
 25  
  * An entity is the Google Cloud Datastore persistent data object for a specific key.
 26  
  * An entity will always have a complete {@link Key}.
 27  
  */
 28  
 public final class Entity extends FullEntity<Key> {
 29  
 
 30  
   private static final long serialVersionUID = 432961565733066915L;
 31  
 
 32  362
   public static final class Builder extends BaseEntity.Builder<Key, Builder> {
 33  
 
 34  
     private Builder() {
 35  
     }
 36  
 
 37  
     private Builder(Key key) {
 38  36
       super(checkNotNull(key));
 39  36
     }
 40  
 
 41  
     private Builder(Entity entity) {
 42  
       super(entity);
 43  
     }
 44  
 
 45  20
     private Builder(Key key, FullEntity<?> entity) {
 46  20
       properties(entity.properties());
 47  20
       key(key);
 48  20
     }
 49  
 
 50  
     @Override
 51  
     public Builder key(Key key) {
 52  196
       super.key(checkNotNull(key));
 53  196
       return this;
 54  
     }
 55  
 
 56  
     @Override
 57  
     public Entity build() {
 58  190
       Preconditions.checkState(key() != null);
 59  190
       return new Entity(this);
 60  
     }
 61  
   }
 62  
 
 63  
   Entity(Builder builder) {
 64  
     super(builder);
 65  
   }
 66  
 
 67  
   Entity(FullEntity<Key> from) {
 68  0
     super(from);
 69  0
     Preconditions.checkArgument(from.key() != null);
 70  0
   }
 71  
 
 72  
   @Override
 73  
   protected BaseEntity.Builder emptyBuilder() {
 74  6
     return new Builder();
 75  
   }
 76  
 
 77  
   static Entity convert(FullEntity<Key> from) {
 78  108
     if (from instanceof Entity) {
 79  108
       return (Entity) from;
 80  
     }
 81  0
     return new Entity(from);
 82  
   }
 83  
 
 84  
   public static Builder builder(Key key) {
 85  36
     return new Builder(key);
 86  
   }
 87  
 
 88  
   public static Builder builder(Entity copyFrom) {
 89  38
     return new Builder(copyFrom);
 90  
   }
 91  
 
 92  
   public static Builder builder(Key key, FullEntity<?> copyFrom) {
 93  20
     return new Builder(key, copyFrom);
 94  
   }
 95  
 
 96  
   static Entity fromPb(DatastoreV1.Entity entityPb) {
 97  88
     return new Builder().fill(entityPb).build();
 98  
   }
 99  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.EntityValue.html b/cobertura/com.google.gcloud.datastore.EntityValue.html deleted file mode 100644 index 4b9579afd0bc..000000000000 --- a/cobertura/com.google.gcloud.datastore.EntityValue.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.EntityValue
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
EntityValue
100%
7/7
N/A
1
EntityValue$1
100%
6/6
N/A
1
EntityValue$Builder
100%
6/6
100%
2/2
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.api.services.datastore.DatastoreV1.Value.ENTITY_VALUE_FIELD_NUMBER;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 import com.google.common.base.Preconditions;
 23  
 
 24  120
 public class EntityValue extends Value<FullEntity> {
 25  
 
 26  
   private static final long serialVersionUID = -5461475706792576395L;
 27  
 
 28  2
   static final BaseMarshaller<FullEntity, EntityValue, Builder> MARSHALLER =
 29  392
       new BaseMarshaller<FullEntity, EntityValue, Builder>() {
 30  
 
 31  
         private static final long serialVersionUID = 2355075086076070931L;
 32  
 
 33  
         @Override
 34  
         public int getProtoFieldId() {
 35  2
           return ENTITY_VALUE_FIELD_NUMBER;
 36  
         }
 37  
 
 38  
         @Override
 39  
         public Builder newBuilder(FullEntity value) {
 40  116
           return builder(value);
 41  
         }
 42  
 
 43  
         @Override
 44  
         protected FullEntity getValue(DatastoreV1.Value from) {
 45  116
           return FullEntity.fromPb(from.getEntityValue());
 46  
         }
 47  
 
 48  
         @Override
 49  
         protected void setValue(EntityValue from, DatastoreV1.Value.Builder to) {
 50  160
           to.setEntityValue(from.get().toPb());
 51  160
         }
 52  
       };
 53  
 
 54  1082
   public static final class Builder extends Value.BaseBuilder<FullEntity, EntityValue, Builder> {
 55  
 
 56  
     private Builder() {
 57  214
       super(ValueType.ENTITY);
 58  214
     }
 59  
 
 60  
     @Override
 61  
     public Builder indexed(boolean indexed) {
 62  
       // see issue #25
 63  332
       Preconditions.checkArgument(!indexed, "EntityValue can't be indexed");
 64  330
       return super.indexed(indexed);
 65  
     }
 66  
 
 67  
     @Override
 68  
     public EntityValue build() {
 69  120
       return new EntityValue(this);
 70  
     }
 71  
   }
 72  
 
 73  
   public EntityValue(FullEntity entity) {
 74  92
     this(builder(entity));
 75  92
   }
 76  
 
 77  
   private EntityValue(Builder builder) {
 78  
     super(builder);
 79  
   }
 80  
 
 81  
   @Override
 82  
   public Builder toBuilder() {
 83  2
     return new Builder().mergeFrom(this);
 84  
   }
 85  
 
 86  
   public static EntityValue of(FullEntity entity) {
 87  92
     return new EntityValue(entity);
 88  
   }
 89  
 
 90  
   public static Builder builder(FullEntity entity) {
 91  212
     return new Builder().set(entity).indexed(false);
 92  
   }
 93  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.FullEntity.html b/cobertura/com.google.gcloud.datastore.FullEntity.html deleted file mode 100644 index b5d9766544ca..000000000000 --- a/cobertura/com.google.gcloud.datastore.FullEntity.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.FullEntity
-
 
- - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
FullEntity
100%
5/5
N/A
1
FullEntity$Builder
100%
2/2
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.api.services.datastore.DatastoreV1;
 20  
 
 21  
 /**
 22  
  * A full entity is a {@link BaseEntity} that with a complete set of properties.
 23  
  */
 24  
 public class FullEntity<K extends IncompleteKey> extends BaseEntity<K> {
 25  
 
 26  
   private static final long serialVersionUID = 432961565733066915L;
 27  
 
 28  2
   public static class Builder<K extends IncompleteKey> extends BaseEntity.Builder<K, Builder<K>> {
 29  
 
 30  
     Builder() {
 31  
     }
 32  
 
 33  
     Builder(K key) {
 34  
       super(key);
 35  
     }
 36  
 
 37  
     Builder(FullEntity<K> entity) {
 38  
       super(entity);
 39  
     }
 40  
 
 41  
     @Override
 42  
     public FullEntity<K> build() {
 43  148
       return new FullEntity<>(this);
 44  
     }
 45  
   }
 46  
 
 47  
   FullEntity(BaseEntity.Builder<K, ?> builder) {
 48  
     super(builder);
 49  
   }
 50  
 
 51  
   FullEntity(FullEntity<K> from) {
 52  
     super(from);
 53  
   }
 54  
 
 55  
   @Override
 56  
   protected BaseEntity.Builder emptyBuilder() {
 57  2
     return new Builder();
 58  
   }
 59  
 
 60  
   public static Builder<IncompleteKey> builder() {
 61  2
     return new Builder<>();
 62  
   }
 63  
 
 64  
   public static <K extends IncompleteKey> Builder<K> builder(K key) {
 65  18
     return new Builder<>(key);
 66  
   }
 67  
 
 68  
   public static <K extends IncompleteKey> Builder<K> builder(FullEntity<K> copyFrom) {
 69  10
     return new Builder<>(copyFrom);
 70  
   }
 71  
 
 72  
 
 73  
   static FullEntity fromPb(DatastoreV1.Entity entityPb) {
 74  116
     return new Builder<>().fill(entityPb).build();
 75  
   }
 76  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.GqlQuery.html b/cobertura/com.google.gcloud.datastore.GqlQuery.html deleted file mode 100644 index ff822839bda4..000000000000 --- a/cobertura/com.google.gcloud.datastore.GqlQuery.html +++ /dev/null @@ -1,717 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.GqlQuery
-
 
- - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
GqlQuery
71%
38/53
60%
17/28
1.66
GqlQuery$1
N/A
N/A
1.66
GqlQuery$Binding
60%
20/33
60%
12/20
1.66
GqlQuery$Builder
35%
23/64
66%
4/6
1.66
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkNotNull;
 20  
 import static com.google.gcloud.datastore.Validator.validateNamespace;
 21  
 
 22  
 import com.google.api.services.datastore.DatastoreV1;
 23  
 import com.google.common.base.MoreObjects;
 24  
 import com.google.common.collect.ImmutableList;
 25  
 import com.google.common.collect.ImmutableMap;
 26  
 import com.google.common.collect.ImmutableSortedMap;
 27  
 import com.google.common.primitives.Booleans;
 28  
 import com.google.common.primitives.Doubles;
 29  
 import com.google.common.primitives.Longs;
 30  
 import com.google.protobuf.InvalidProtocolBufferException;
 31  
 
 32  
 import java.util.ArrayList;
 33  
 import java.util.Arrays;
 34  
 import java.util.LinkedList;
 35  
 import java.util.List;
 36  
 import java.util.Map;
 37  
 import java.util.Objects;
 38  
 import java.util.TreeMap;
 39  
 
 40  
 /**
 41  
  * A Google Cloud Datastore GQL.
 42  
  *
 43  
  * <h3>A usage example:</h3>
 44  
  *
 45  
  * <p>When the type of the results is known the preferred usage would be:
 46  
  * <pre>{@code
 47  
  *   Query<Entity> query =
 48  
  *       Query.gqlQueryBuilder(Query.ResultType.ENTITY, "select * from kind").build();
 49  
  *   QueryResults<Entity> results = datastore.run(query);
 50  
  *   while (results.hasNext()) {
 51  
  *     Entity entity = results.next();
 52  
  *     ...
 53  
  *   }
 54  
  * } </pre>
 55  
  *
 56  
  * <p>When the type of the results is unknown you can use this approach:
 57  
  * <pre>{@code
 58  
  *   Query<?> query = Query.gqlQueryBuilder("select __key__ from kind").build();
 59  
  *   QueryResults<?> results = datastore.run(query);
 60  
  *   if (Key.class.isAssignableFrom(results.resultClass())) {
 61  
  *     QueryResults<Key> keys = (QueryResults<Key>) results;
 62  
  *     while (keys.hasNext()) {
 63  
  *       Key key = keys.next();
 64  
  *       ...
 65  
  *     }
 66  
  *   }
 67  
  * } </pre>
 68  
  *
 69  
  * @param <V> the type of the result values this query will produce
 70  
  * @see <a href="https://cloud.google.com/datastore/docs/apis/gql/gql_reference">GQL Reference</a>
 71  
  */
 72  28
 public final class GqlQuery<V> extends Query<V> {
 73  
 
 74  
   private static final long serialVersionUID = 5988280590929540569L;
 75  
 
 76  
   private final transient String queryString;
 77  
   private final transient boolean allowLiteral;
 78  
   private final transient ImmutableList<Binding> namedBindings;
 79  
   private final transient ImmutableList<Binding> positionalBindings;
 80  
 
 81  0
   static final class Binding extends Serializable<DatastoreV1.GqlQueryArg> {
 82  
 
 83  
     private static final long serialVersionUID = 1976895435257636275L;
 84  
 
 85  
     private final transient String name;
 86  
     private final transient Cursor cursor;
 87  
     private final transient Value<?> value;
 88  
 
 89  0
     Binding(String name, Cursor cursor) {
 90  0
       this.name = name;
 91  0
       this.cursor = checkNotNull(cursor);
 92  0
       value = null;
 93  0
     }
 94  
 
 95  16
     Binding(String name, Value<?> value) {
 96  16
       this.name = name;
 97  16
       this.value = checkNotNull(value);
 98  16
       cursor = null;
 99  16
     }
 100  
 
 101  
     Object cursorOrValue() {
 102  0
       return MoreObjects.firstNonNull(cursor, value);
 103  
     }
 104  
 
 105  
     String name() {
 106  4
       return name;
 107  
     }
 108  
 
 109  
     @Override
 110  
     public int hashCode() {
 111  0
       return Objects.hash(name, cursor, value);
 112  
     }
 113  
 
 114  
     @Override
 115  
     public boolean equals(Object obj) {
 116  8
       if (obj == this) {
 117  0
         return true;
 118  
       }
 119  8
       if (!(obj instanceof Binding)) {
 120  0
         return false;
 121  
       }
 122  8
       Binding other = (Binding) obj;
 123  8
       return Objects.equals(name, other.name)
 124  
         && Objects.equals(cursor, other.cursor)
 125  
         && Objects.equals(value, other.value);
 126  
     }
 127  
 
 128  
     @Override
 129  
     protected DatastoreV1.GqlQueryArg toPb() {
 130  8
       DatastoreV1.GqlQueryArg.Builder argPb = DatastoreV1.GqlQueryArg.newBuilder();
 131  8
       if (name != null) {
 132  4
         argPb.setName(name);
 133  
       }
 134  8
       if (cursor != null) {
 135  0
         argPb.setCursor(cursor.byteString());
 136  
       }
 137  8
       if (value != null) {
 138  8
         argPb.setValue(value.toPb());
 139  
       }
 140  8
       return argPb.build();
 141  
     }
 142  
 
 143  
     @Override
 144  
     protected Object fromPb(byte[] bytesPb) throws InvalidProtocolBufferException {
 145  0
       return fromPb(DatastoreV1.GqlQueryArg.parseFrom(bytesPb));
 146  
     }
 147  
 
 148  
     static Binding fromPb(DatastoreV1.GqlQueryArg argPb) {
 149  8
       String name = argPb.hasName() ? argPb.getName() : null;
 150  8
       if (argPb.hasCursor()) {
 151  0
         return new Binding(name, new Cursor(argPb.getCursor()));
 152  
       }
 153  8
       return new Binding(name, Value.fromPb(argPb.getValue()));
 154  
     }
 155  
   }
 156  
 
 157  
   /**
 158  
    * A GQL query builder.
 159  
    */
 160  156
   public static final class Builder<V> {
 161  
 
 162  
     private final ResultType<V> resultType;
 163  
     private String namespace;
 164  
     private String queryString;
 165  
     private boolean allowLiteral;
 166  24
     private final Map<String, Binding> namedBindings = new TreeMap<>();
 167  24
     private final List<Binding> positionalBindings = new LinkedList<>();
 168  
 
 169  24
     Builder(ResultType<V> resultType, String query) {
 170  24
       this.resultType = checkNotNull(resultType);
 171  24
       queryString = checkNotNull(query);
 172  24
     }
 173  
 
 174  
     public Builder<V> query(String query) {
 175  0
       queryString = checkNotNull(query);
 176  0
       return this;
 177  
     }
 178  
 
 179  
     public Builder<V> namespace(String namespace) {
 180  8
       this.namespace = validateNamespace(namespace);
 181  8
       return this;
 182  
     }
 183  
 
 184  
     public Builder<V> allowLiteral(boolean allowLiteral) {
 185  0
       this.allowLiteral = allowLiteral;
 186  0
       return this;
 187  
     }
 188  
 
 189  
     public Builder<V> clearBindings() {
 190  0
       namedBindings.clear();
 191  0
       positionalBindings.clear();
 192  0
       return this;
 193  
     }
 194  
 
 195  
     public Builder<V> setBinding(String name, Cursor cursor) {
 196  0
       namedBindings.put(name, new Binding(name, cursor));
 197  0
       return this;
 198  
     }
 199  
 
 200  
     public Builder<V> setBinding(String name, String... value) {
 201  4
       namedBindings.put(name, toBinding(name, StringValue.MARSHALLER, Arrays.asList(value)));
 202  4
       return this;
 203  
     }
 204  
 
 205  
     public Builder<V> setBinding(String name, long... value) {
 206  0
       namedBindings.put(name, toBinding(name, LongValue.MARSHALLER, Longs.asList(value)));
 207  0
       return this;
 208  
     }
 209  
 
 210  
     public Builder<V> setBinding(String name, double... value) {
 211  0
       namedBindings.put(name, toBinding(name, DoubleValue.MARSHALLER, Doubles.asList(value)));
 212  0
       return this;
 213  
     }
 214  
 
 215  
     public Builder<V> setBinding(String name, boolean... value) {
 216  0
       namedBindings.put(name, toBinding(name, BooleanValue.MARSHALLER, Booleans.asList(value)));
 217  0
       return this;
 218  
     }
 219  
 
 220  
     public Builder<V> setBinding(String name, DateTime... value) {
 221  0
       namedBindings.put(name, toBinding(name, DateTimeValue.MARSHALLER, Arrays.asList(value)));
 222  0
       return this;
 223  
     }
 224  
 
 225  
     public Builder<V> setBinding(String name, Key... value) {
 226  0
       namedBindings.put(name, toBinding(name, KeyValue.MARSHALLER, Arrays.asList(value)));
 227  0
       return this;
 228  
     }
 229  
 
 230  
     public Builder<V> setBinding(String name, FullEntity<?>... value) {
 231  0
       namedBindings.put(name, toBinding(name, EntityValue.MARSHALLER, Arrays.asList(value)));
 232  0
       return this;
 233  
     }
 234  
 
 235  
     public Builder<V> setBinding(String name, Blob... value) {
 236  0
       namedBindings.put(name, toBinding(name, BlobValue.MARSHALLER, Arrays.asList(value)));
 237  0
       return this;
 238  
     }
 239  
 
 240  
     public Builder<V> addBinding(Cursor cursor) {
 241  0
       positionalBindings.add(new Binding(null, cursor));
 242  0
       return this;
 243  
     }
 244  
 
 245  
     public Builder<V> addBinding(String... value) {
 246  0
       positionalBindings.add(toBinding(StringValue.MARSHALLER, Arrays.asList(value)));
 247  0
       return this;
 248  
     }
 249  
 
 250  
     public Builder<V> addBinding(long... value) {
 251  4
       positionalBindings.add(toBinding(LongValue.MARSHALLER, Longs.asList(value)));
 252  4
       return this;
 253  
     }
 254  
 
 255  
     public Builder<V> addBinding(double... value) {
 256  0
       positionalBindings.add(toBinding(DoubleValue.MARSHALLER, Doubles.asList(value)));
 257  0
       return this;
 258  
     }
 259  
 
 260  
     public Builder<V> addBinding(boolean... value) {
 261  0
       positionalBindings.add(toBinding(BooleanValue.MARSHALLER, Booleans.asList(value)));
 262  0
       return this;
 263  
     }
 264  
 
 265  
     public Builder<V> addBinding(DateTime... value) {
 266  0
       positionalBindings.add(toBinding(DateTimeValue.MARSHALLER, Arrays.asList(value)));
 267  0
       return this;
 268  
     }
 269  
 
 270  
     public Builder<V> addBinding(Key... value) {
 271  0
       positionalBindings.add(toBinding(KeyValue.MARSHALLER, Arrays.asList(value)));
 272  0
       return this;
 273  
     }
 274  
 
 275  
     public Builder<V> addBinding(FullEntity<?>... value) {
 276  0
       positionalBindings.add(toBinding(EntityValue.MARSHALLER, Arrays.asList(value)));
 277  0
       return this;
 278  
     }
 279  
 
 280  
     public Builder<V> addBinding(Blob... value) {
 281  0
       positionalBindings.add(toBinding(BlobValue.MARSHALLER, Arrays.asList(value)));
 282  0
       return this;
 283  
     }
 284  
 
 285  
     public GqlQuery<V> build() {
 286  24
       return new GqlQuery<>(this);
 287  
     }
 288  
 
 289  
     @SuppressWarnings("rawtypes")
 290  
     private static Binding toBinding(Value.BuilderFactory builderFactory, List<?> values) {
 291  4
       return toBinding(null, builderFactory, values);
 292  
     }
 293  
 
 294  
     @SuppressWarnings({"unchecked", "rawtypes"})
 295  
     private static Binding toBinding(String name, Value.BuilderFactory builderFactory,
 296  
         List<?> values) {
 297  8
       List<Value<?>> list = new ArrayList<>(values.size());
 298  8
       for (Object object : values) {
 299  8
         list.add(builderFactory.newBuilder(object).build());
 300  8
       }
 301  
       Value<?> value;
 302  8
       if (list.isEmpty()) {
 303  0
         value = new NullValue();
 304  8
       } else if (list.size() == 1) {
 305  8
         value = list.get(0);
 306  
       } else {
 307  0
         value = new ListValue(list);
 308  
       }
 309  8
       return new Binding(name, value);
 310  
     }
 311  
   }
 312  
 
 313  
   private GqlQuery(Builder<V> builder) {
 314  24
     super(builder.resultType, builder.namespace);
 315  24
     queryString = builder.queryString;
 316  24
     allowLiteral = builder.allowLiteral;
 317  24
     namedBindings = ImmutableList.copyOf(builder.namedBindings.values());
 318  24
     positionalBindings = ImmutableList.copyOf(builder.positionalBindings);
 319  24
   }
 320  
 
 321  
   public String queryString() {
 322  0
     return queryString;
 323  
   }
 324  
 
 325  
   public boolean allowLiteral() {
 326  0
     return allowLiteral;
 327  
   }
 328  
 
 329  
   /**
 330  
    * Returns an immutable map of named bindings.
 331  
    */
 332  
   public Map<String, Object> namedBindings() {
 333  0
     ImmutableMap.Builder<String, Object> builder = ImmutableSortedMap.naturalOrder();
 334  0
     for (Binding binding : namedBindings) {
 335  0
       builder.put(binding.name(), binding.cursorOrValue());
 336  0
     }
 337  0
     return builder.build();
 338  
   }
 339  
 
 340  
   /**
 341  
    * Returns an immutable list of positional bindings (using original order).
 342  
    */
 343  
   public List<Object> numberArgs() {
 344  0
     ImmutableList.Builder<Object> builder = ImmutableList.builder();
 345  0
     for (Binding binding : positionalBindings) {
 346  0
       builder.add(binding.cursorOrValue());
 347  0
     }
 348  0
     return builder.build();
 349  
   }
 350  
 
 351  
   @Override
 352  
   public int hashCode() {
 353  0
     return Objects.hash(namespace(), queryString, allowLiteral, namedBindings, positionalBindings);
 354  
   }
 355  
 
 356  
   @Override
 357  
   public boolean equals(Object obj) {
 358  12
     if (obj == this) {
 359  8
       return true;
 360  
     }
 361  4
     if (!(obj instanceof GqlQuery)) {
 362  0
       return false;
 363  
     }
 364  4
     GqlQuery<?> other = (GqlQuery<?>) obj;
 365  4
     return Objects.equals(namespace(), other.namespace())
 366  
         && Objects.equals(queryString, other.queryString)
 367  
         && allowLiteral == other.allowLiteral
 368  
         && Objects.equals(namedBindings,  other.namedBindings)
 369  
         && Objects.equals(positionalBindings,  other.positionalBindings);
 370  
   }
 371  
 
 372  
   @Override
 373  
   protected DatastoreV1.GqlQuery toPb() {
 374  20
     DatastoreV1.GqlQuery.Builder queryPb = DatastoreV1.GqlQuery.newBuilder();
 375  20
     queryPb.setQueryString(queryString);
 376  20
     queryPb.setAllowLiteral(allowLiteral);
 377  20
     for (Binding argument : namedBindings) {
 378  4
       queryPb.addNameArg(argument.toPb());
 379  4
     }
 380  20
     for (Binding argument : positionalBindings) {
 381  4
       queryPb.addNumberArg(argument.toPb());
 382  4
     }
 383  20
     return queryPb.build();
 384  
   }
 385  
 
 386  
   @Override
 387  
   protected void populatePb(DatastoreV1.RunQueryRequest.Builder requestPb) {
 388  16
     requestPb.setGqlQuery(toPb());
 389  16
   }
 390  
 
 391  
   @Override
 392  
   protected GqlQuery<V> nextQuery(DatastoreV1.QueryResultBatch responsePb) {
 393  
     // See issue #17
 394  0
     throw new UnsupportedOperationException("paging for this query is not implemented yet");
 395  
   }
 396  
 
 397  
   @Override
 398  
   protected Object fromPb(ResultType<V> resultType, String namespace, byte[] bytesPb)
 399  
       throws InvalidProtocolBufferException {
 400  4
     return fromPb(resultType, namespace, DatastoreV1.GqlQuery.parseFrom(bytesPb));
 401  
   }
 402  
 
 403  
   private static <V> GqlQuery<V> fromPb(ResultType<V> resultType, String ns, DatastoreV1.GqlQuery queryPb) {
 404  4
     Builder<V> builder = new Builder<>(resultType, queryPb.getQueryString());
 405  4
     builder.namespace(ns);
 406  4
     if (queryPb.hasAllowLiteral()) {
 407  4
       builder.allowLiteral = queryPb.getAllowLiteral();
 408  
     }
 409  4
     for (DatastoreV1.GqlQueryArg nameArg : queryPb.getNameArgList()) {
 410  4
       Binding argument = Binding.fromPb(nameArg);
 411  4
       builder.namedBindings.put(argument.name(), argument);
 412  4
     }
 413  4
     for (DatastoreV1.GqlQueryArg numberArg : queryPb.getNumberArgList()) {
 414  4
       Binding argument = Binding.fromPb(numberArg);
 415  4
       builder.positionalBindings.add(argument);
 416  4
     }
 417  4
     return builder.build();
 418  
   }
 419  
 
 420  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.IncompleteKey.html b/cobertura/com.google.gcloud.datastore.IncompleteKey.html deleted file mode 100644 index 22a75eb85b58..000000000000 --- a/cobertura/com.google.gcloud.datastore.IncompleteKey.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.IncompleteKey
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
IncompleteKey
95%
23/24
66%
8/12
1.667
IncompleteKey$1
N/A
N/A
1.667
IncompleteKey$Builder
100%
3/3
N/A
1.667
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.api.services.datastore.DatastoreV1;
 20  
 import com.google.common.base.Preconditions;
 21  
 import com.google.common.collect.ImmutableList;
 22  
 import com.google.protobuf.InvalidProtocolBufferException;
 23  
 
 24  
 import java.util.List;
 25  
 
 26  
 /**
 27  
  * An incomplete key (without a name or id).
 28  
  * This class is immutable.
 29  
  */
 30  4732
 public class IncompleteKey extends BaseKey {
 31  
 
 32  
   private static final long serialVersionUID = -75301206578793347L;
 33  
 
 34  48
   public static class Builder extends BaseKey.Builder<Builder> {
 35  
 
 36  
     private Builder(String projectId, String kind) {
 37  
       super(projectId, kind);
 38  
     }
 39  
 
 40  
     private Builder(IncompleteKey copyFrom) {
 41  
       super(copyFrom);
 42  
     }
 43  
 
 44  
     @Override
 45  
     public IncompleteKey build() {
 46  48
       ImmutableList<PathElement> path = ImmutableList.<PathElement>builder()
 47  
           .addAll(ancestors).add(PathElement.of(kind)).build();
 48  48
       return new IncompleteKey(projectId, namespace, path);
 49  
     }
 50  
   }
 51  
 
 52  
   IncompleteKey(String projectId, String namespace, ImmutableList<PathElement> path) {
 53  
     super(projectId, namespace, path);
 54  
   }
 55  
 
 56  
   @Override
 57  
   protected Object fromPb(byte[] bytesPb) throws InvalidProtocolBufferException {
 58  6
     return fromPb(DatastoreV1.Key.parseFrom(bytesPb));
 59  
   }
 60  
 
 61  
   static IncompleteKey fromPb(DatastoreV1.Key keyPb) {
 62  456
     String projectId = null;
 63  456
     String namespace = null;
 64  456
     if (keyPb.hasPartitionId()) {
 65  456
       DatastoreV1.PartitionId partitionIdPb = keyPb.getPartitionId();
 66  456
       if (partitionIdPb.hasDatasetId()) {
 67  456
         projectId = partitionIdPb.getDatasetId();
 68  
       }
 69  456
       if (partitionIdPb.hasNamespace()) {
 70  0
         namespace = partitionIdPb.getNamespace();
 71  
       }
 72  
     }
 73  456
     List<DatastoreV1.Key.PathElement> pathElementsPb = keyPb.getPathElementList();
 74  456
     Preconditions.checkArgument(!pathElementsPb.isEmpty(), "Path must not be empty");
 75  456
     ImmutableList.Builder<PathElement> pathBuilder = ImmutableList.builder();
 76  456
     for (DatastoreV1.Key.PathElement pathElementPb : pathElementsPb) {
 77  612
       pathBuilder.add(PathElement.fromPb(pathElementPb));
 78  612
     }
 79  456
     ImmutableList<PathElement> path = pathBuilder.build();
 80  456
     PathElement leaf = path.get(path.size() - 1);
 81  456
     if (leaf.nameOrId() != null) {
 82  358
       return new Key(projectId, namespace, path);
 83  
     }
 84  98
     return new IncompleteKey(projectId, namespace, path);
 85  
   }
 86  
 
 87  
   public static Builder builder(String projectId, String kind) {
 88  28
     return new Builder(projectId, kind);
 89  
   }
 90  
 
 91  
   public static Builder builder(IncompleteKey copyFrom) {
 92  20
     return new Builder(copyFrom);
 93  
   }
 94  
 
 95  
   public static Builder builder(Key parent, String kind) {
 96  4
     return builder(parent.projectId(), kind).namespace(parent.namespace()).ancestors(parent.path());
 97  
   }
 98  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.Key.html b/cobertura/com.google.gcloud.datastore.Key.html deleted file mode 100644 index 5b93062bf160..000000000000 --- a/cobertura/com.google.gcloud.datastore.Key.html +++ /dev/null @@ -1,397 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.Key
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Key
75%
30/40
50%
2/4
1.423
Key$1
N/A
N/A
1.423
Key$Builder
100%
23/23
100%
4/4
1.423
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static java.nio.charset.StandardCharsets.UTF_8;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 import com.google.common.base.Preconditions;
 23  
 import com.google.common.collect.ImmutableList;
 24  
 import com.google.protobuf.InvalidProtocolBufferException;
 25  
 import com.google.protobuf.TextFormat;
 26  
 
 27  
 import java.io.UnsupportedEncodingException;
 28  
 import java.net.URLDecoder;
 29  
 import java.net.URLEncoder;
 30  
 
 31  
 /**
 32  
  * A key that is guaranteed to be complete and could be used to reference a
 33  
  * Google Cloud Datastore {@link Entity}.
 34  
  * This class is immutable.
 35  
  *
 36  
  * @see <a href="https://cloud.google.com/datastore/docs/concepts/entities">Google Cloud Datastore Entities, Properties, and Keys</a>
 37  
  */
 38  
 public final class Key extends IncompleteKey {
 39  
 
 40  
   private static final long serialVersionUID = 3160994559785491356L;
 41  
 
 42  90
   public static final class Builder extends BaseKey.Builder<Builder> {
 43  
 
 44  
     private String name;
 45  
     private Long id;
 46  
 
 47  
     private Builder(String projectId, String kind, String name) {
 48  
       super(projectId, kind);
 49  
       this.name = name;
 50  
     }
 51  
 
 52  
     private Builder(String projectId, String kind, long id) {
 53  20
       super(projectId, kind);
 54  20
       this.id = id;
 55  20
     }
 56  
 
 57  
     private Builder(IncompleteKey copyFrom, String name) {
 58  
       super(copyFrom);
 59  
       this.name = name;
 60  
     }
 61  
 
 62  
     private Builder(IncompleteKey copyFrom, long id) {
 63  26
       super(copyFrom);
 64  26
       this.id = id;
 65  26
     }
 66  
 
 67  
     private Builder(Key copyFrom) {
 68  20
       super(copyFrom);
 69  20
       if (copyFrom.hasId()) {
 70  8
         id = copyFrom.id();
 71  
       } else {
 72  12
         name = copyFrom.name();
 73  
       }
 74  20
     }
 75  
 
 76  
     public Builder name(String name) {
 77  16
       this.name = name;
 78  16
       id = null;
 79  16
       return this;
 80  
     }
 81  
 
 82  
     public Builder id(long id) {
 83  14
       this.id = id;
 84  14
       name = null;
 85  14
       return this;
 86  
     }
 87  
 
 88  
     @Override
 89  
     public Key build() {
 90  100
       ImmutableList.Builder<PathElement> pathBuilder =
 91  
           ImmutableList.<PathElement>builder().addAll(ancestors);
 92  100
       if (id == null) {
 93  40
         pathBuilder.add(PathElement.of(kind, name));
 94  
       } else {
 95  60
         pathBuilder.add(PathElement.of(kind, id));
 96  
       }
 97  100
       return new Key(projectId, namespace, pathBuilder.build());
 98  
     }
 99  
   }
 100  
 
 101  
   Key(String projectId, String namespace, ImmutableList<PathElement> path) {
 102  474
     super(projectId, namespace, path);
 103  474
     Preconditions.checkArgument(nameOrId() != null);
 104  474
   }
 105  
 
 106  
   public boolean hasId() {
 107  30
     return leaf().hasId();
 108  
   }
 109  
 
 110  
   /**
 111  
    * Returns the key's id or {@code null} if it has a name instead.
 112  
    */
 113  
   public Long id() {
 114  32
     return leaf().id();
 115  
   }
 116  
 
 117  
   public boolean hasName() {
 118  6
     return leaf().hasName();
 119  
   }
 120  
 
 121  
   /**
 122  
    * Returns the key's name or {@code null} if it has an id instead.
 123  
    */
 124  
   public String name() {
 125  26
     return leaf().name();
 126  
   }
 127  
 
 128  
   /**
 129  
    * Returns the key's id (as {@link Long}) or name (as {@link String}).
 130  
    * Never {@code null}.
 131  
    */
 132  
   public Object nameOrId() {
 133  478
     return leaf().nameOrId();
 134  
   }
 135  
 
 136  
   /**
 137  
    * Returns the key in an encoded form that can be used as part of a URL.
 138  
    */
 139  
   public String toUrlSafe() {
 140  
     try {
 141  2
       return URLEncoder.encode(TextFormat.printToString(toPb()), UTF_8.name());
 142  0
     } catch (UnsupportedEncodingException e) {
 143  0
       throw new IllegalStateException("Unexpected encoding exception", e);
 144  
     }
 145  
   }
 146  
 
 147  
   /**
 148  
    * Create a {@code Key} given its URL safe encoded form.
 149  
    *
 150  
    * @throws IllegalArgumentException when decoding fails
 151  
    */
 152  
   public static Key fromUrlSafe(String urlSafe) {
 153  
     try {
 154  2
       String utf8Str = URLDecoder.decode(urlSafe, UTF_8.name());
 155  2
       DatastoreV1.Key.Builder builder = DatastoreV1.Key.newBuilder();
 156  2
       TextFormat.merge(utf8Str, builder);
 157  2
       return fromPb(builder.build());
 158  0
     } catch (UnsupportedEncodingException e) {
 159  0
       throw new IllegalStateException("Unexpected decoding exception", e);
 160  0
     } catch (TextFormat.ParseException e) {
 161  0
       throw new IllegalArgumentException("Could not parse key", e);
 162  
     }
 163  
   }
 164  
 
 165  
   @Override
 166  
   protected Object fromPb(byte[] bytesPb) throws InvalidProtocolBufferException {
 167  12
     return fromPb(DatastoreV1.Key.parseFrom(bytesPb));
 168  
   }
 169  
 
 170  
   static Key fromPb(DatastoreV1.Key keyPb) {
 171  226
     IncompleteKey key = IncompleteKey.fromPb(keyPb);
 172  226
     Preconditions.checkState(key instanceof Key, "Key is not complete");
 173  226
     return (Key) key;
 174  
   }
 175  
 
 176  
   public static Builder builder(String projectId, String kind, String name) {
 177  20
     return new Builder(projectId, kind, name);
 178  
   }
 179  
 
 180  
   public static Builder builder(String projectId, String kind, long id) {
 181  20
     return new Builder(projectId, kind, id);
 182  
   }
 183  
 
 184  
   public static Builder builder(Key copyFrom) {
 185  20
     return new Builder(copyFrom);
 186  
   }
 187  
 
 188  
   public static Builder builder(IncompleteKey copyFrom, String name) {
 189  4
     return new Builder(copyFrom, name);
 190  
   }
 191  
 
 192  
   public static Builder builder(IncompleteKey copyFrom, long id) {
 193  26
     return new Builder(copyFrom, id);
 194  
   }
 195  
 
 196  
   public static Builder builder(Key parent, String kind, String name) {
 197  0
     Builder builder = builder(parent.projectId(), kind, name);
 198  0
     addParentToBuilder(parent, builder);
 199  0
     return builder;
 200  
   }
 201  
 
 202  
   public static Builder builder(Key parent, String kind, long id) {
 203  4
     Builder builder = builder(parent.projectId(), kind, id);
 204  4
     addParentToBuilder(parent, builder);
 205  4
     return builder;
 206  
   }
 207  
 
 208  
   private static void addParentToBuilder(Key parent, Builder builder) {
 209  4
     builder.namespace(parent.namespace());
 210  4
     builder.ancestors(parent.ancestors());
 211  4
     if (parent.hasId()) {
 212  0
       builder.ancestors(PathElement.of(parent.kind(), parent.id()));
 213  
     } else {
 214  4
       builder.ancestors(PathElement.of(parent.kind(), parent.name()));
 215  
     }
 216  4
   }
 217  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.KeyFactory.html b/cobertura/com.google.gcloud.datastore.KeyFactory.html deleted file mode 100644 index ee151cb797e8..000000000000 --- a/cobertura/com.google.gcloud.datastore.KeyFactory.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.KeyFactory
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
KeyFactory
95%
19/20
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.common.collect.ImmutableList;
 20  
 
 21  
 /**
 22  
  * An helper for creating keys for a specific {@link DatastoreService},
 23  
  * using its associated projectId and namespace.
 24  
  */
 25  0
 public final class KeyFactory extends BaseKey.Builder<KeyFactory> {
 26  
 
 27  
   private final String pi;
 28  
   private final String ns;
 29  
 
 30  
   public KeyFactory(String projectId) {
 31  10
     this(projectId, null);
 32  10
   }
 33  
 
 34  
   public KeyFactory(String projectId, String namespace) {
 35  22
     super(projectId);
 36  22
     namespace(namespace);
 37  22
     this.pi = projectId;
 38  22
     this.ns = namespace;
 39  22
   }
 40  
 
 41  
   public IncompleteKey newKey() {
 42  26
     ImmutableList<PathElement> path = ImmutableList.<PathElement>builder()
 43  
         .addAll(ancestors).add(PathElement.of(kind)).build();
 44  24
     return new IncompleteKey(projectId, namespace, path);
 45  
   }
 46  
 
 47  
   public Key newKey(String name) {
 48  10
     ImmutableList<PathElement> path = ImmutableList.<PathElement>builder()
 49  
         .addAll(ancestors).add(PathElement.of(kind, name)).build();
 50  10
     return new Key(projectId, namespace, path);
 51  
   }
 52  
 
 53  
   public Key newKey(long id) {
 54  8
     ImmutableList<PathElement> path = ImmutableList.<PathElement>builder()
 55  
         .addAll(ancestors).add(PathElement.of(kind, id)).build();
 56  6
     return new Key(projectId, namespace, path);
 57  
   }
 58  
 
 59  
   /**
 60  
    * Resets the KeyFactory to its initial state.
 61  
    * @return {@code this} for chaining.
 62  
    */
 63  
   public KeyFactory reset() {
 64  4
     projectId(pi);
 65  4
     namespace(ns);
 66  4
     kind = null;
 67  4
     ancestors.clear();
 68  4
     return this;
 69  
   }
 70  
 
 71  
   @Override
 72  
   protected IncompleteKey build() {
 73  6
     return newKey();
 74  
   }
 75  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.KeyValue.html b/cobertura/com.google.gcloud.datastore.KeyValue.html deleted file mode 100644 index 552dcae390f4..000000000000 --- a/cobertura/com.google.gcloud.datastore.KeyValue.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.KeyValue
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
KeyValue
100%
7/7
N/A
1
KeyValue$1
100%
5/5
N/A
1
KeyValue$Builder
100%
4/4
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.api.services.datastore.DatastoreV1.Value.KEY_VALUE_FIELD_NUMBER;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 
 23  94
 public final class KeyValue extends Value<Key> {
 24  
 
 25  
   private static final long serialVersionUID = -1318353707326704821L;
 26  
 
 27  2
   static final BaseMarshaller<Key, KeyValue, Builder> MARSHALLER =
 28  318
       new BaseMarshaller<Key, KeyValue, Builder>() {
 29  
 
 30  
         private static final long serialVersionUID = 5449133205064700403L;
 31  
 
 32  
         @Override
 33  
         public int getProtoFieldId() {
 34  
           return KEY_VALUE_FIELD_NUMBER;
 35  
         }
 36  
 
 37  
         @Override
 38  
         public Builder newBuilder(Key key) {
 39  90
           return builder(key);
 40  
         }
 41  
 
 42  
         @Override
 43  
         protected Key getValue(DatastoreV1.Value from) {
 44  90
           return Key.fromPb(from.getKeyValue());
 45  
         }
 46  
 
 47  
         @Override
 48  
         protected void setValue(KeyValue from, DatastoreV1.Value.Builder to) {
 49  138
           to.setKeyValue(from.get().toPb());
 50  138
         }
 51  
       };
 52  
 
 53  540
   public static final class Builder extends Value.BaseBuilder<Key, KeyValue, Builder> {
 54  
 
 55  
     public Builder() {
 56  150
       super(ValueType.KEY);
 57  150
     }
 58  
 
 59  
     @Override
 60  
     public KeyValue build() {
 61  94
       return new KeyValue(this);
 62  
     }
 63  
   }
 64  
 
 65  
   public KeyValue(Key key) {
 66  56
     this(builder(key));
 67  56
   }
 68  
 
 69  
   private KeyValue(Builder builder) {
 70  
     super(builder);
 71  
   }
 72  
 
 73  
   @Override
 74  
   public Builder toBuilder() {
 75  2
     return new Builder().mergeFrom(this);
 76  
   }
 77  
 
 78  
   public static KeyValue of(Key key) {
 79  56
     return new KeyValue(key);
 80  
   }
 81  
 
 82  
   public static Builder builder(Key key) {
 83  148
     return new Builder().set(key);
 84  
   }
 85  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.ListValue.html b/cobertura/com.google.gcloud.datastore.ListValue.html deleted file mode 100644 index 46b5eacadb56..000000000000 --- a/cobertura/com.google.gcloud.datastore.ListValue.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.ListValue
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
ListValue
100%
10/10
N/A
1.278
ListValue$1
100%
12/12
100%
4/4
1.278
ListValue$Builder
100%
20/20
75%
6/8
1.278
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.api.services.datastore.DatastoreV1.Value.LIST_VALUE_FIELD_NUMBER;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 import com.google.common.base.Preconditions;
 23  
 import com.google.common.collect.ImmutableList;
 24  
 
 25  
 import java.util.ArrayList;
 26  
 import java.util.List;
 27  
 
 28  196
 public final class ListValue extends Value<List<? extends Value<?>>> {
 29  
 
 30  
   private static final long serialVersionUID = -5461475706792576395L;
 31  
 
 32  2
   static final BaseMarshaller<List<? extends Value<?>>, ListValue, Builder> MARSHALLER =
 33  646
       new BaseMarshaller<List<? extends Value<?>>, ListValue, Builder>() {
 34  
 
 35  
         private static final long serialVersionUID = -3193794036327640106L;
 36  
 
 37  
         @Override
 38  
         public int getProtoFieldId() {
 39  2
           return LIST_VALUE_FIELD_NUMBER;
 40  
         }
 41  
 
 42  
         @Override
 43  
         public Builder newBuilder(List<? extends Value<?>> values) {
 44  186
           return builder().set(values);
 45  
         }
 46  
 
 47  
         @Override
 48  
         protected List<Value<?>> getValue(DatastoreV1.Value from) {
 49  186
           List<Value<?>> properties = new ArrayList<>(from.getListValueCount());
 50  186
           for (DatastoreV1.Value valuePb : from.getListValueList()) {
 51  382
             properties.add(Value.fromPb(valuePb));
 52  382
           }
 53  186
           return properties;
 54  
         }
 55  
 
 56  
         @Override
 57  
         protected void setValue(ListValue from, DatastoreV1.Value.Builder to) {
 58  274
           for (Value<?> property : from.get()) {
 59  558
             to.addListValue(property.toPb());
 60  558
           }
 61  274
         }
 62  
       };
 63  
 
 64  1750
   public static final class Builder extends
 65  
       Value.BaseBuilder<List<? extends Value<?>>, ListValue, Builder> {
 66  
 
 67  314
     private ImmutableList.Builder<Value<?>> listBuilder = ImmutableList.builder();
 68  
 
 69  
     private Builder() {
 70  314
       super(ValueType.LIST);
 71  314
     }
 72  
 
 73  
     public Builder addValue(Value<?> value) {
 74  
       // see datastore_v1.proto definition for list_value
 75  620
       Preconditions.checkArgument(value.type() != ValueType.LIST, "Cannot contain another list");
 76  620
       listBuilder.add(value);
 77  620
       return this;
 78  
     }
 79  
 
 80  
     public Builder addValue(Value<?> first, Value<?>... other) {
 81  34
       addValue(first);
 82  68
       for (Value<?> value : other) {
 83  34
         addValue(value);
 84  
       }
 85  34
       return this;
 86  
     }
 87  
 
 88  
     @Override
 89  
     public Builder indexed(boolean indexed) {
 90  
       // see issue #26
 91  2
       throw DatastoreServiceException.throwInvalidRequest("ListValue can't specify index");
 92  
     }
 93  
 
 94  
     /**
 95  
      * Copy the list of values.
 96  
      *
 97  
      * @see com.google.gcloud.datastore.Value.BaseBuilder#set(java.lang.Object)
 98  
      */
 99  
     @Override
 100  
     public Builder set(List<? extends Value<?>> values) {
 101  274
       listBuilder = ImmutableList.builder();
 102  274
       for (Value<?> value : values) {
 103  540
         addValue(value);
 104  540
       }
 105  274
       return this;
 106  
     }
 107  
 
 108  
     @Override
 109  
     public List<? extends Value<?>> get() {
 110  508
       return listBuilder.build();
 111  
     }
 112  
 
 113  
     @Override
 114  
     public ListValue build() {
 115  196
       Preconditions.checkState(!get().isEmpty(), "value list could not be empty");
 116  196
       return new ListValue(this);
 117  
     }
 118  
   }
 119  
 
 120  
   public ListValue(List<? extends Value<?>> values) {
 121  84
     this(builder().set(values));
 122  84
   }
 123  
 
 124  
   public ListValue(Value<?> first, Value<?>... other) {
 125  32
     this(new Builder().addValue(first, other));
 126  32
   }
 127  
 
 128  
   private ListValue(Builder builder) {
 129  
     super(builder);
 130  
   }
 131  
 
 132  
   @Override
 133  
   public Builder toBuilder() {
 134  2
     return new Builder().mergeFrom(this);
 135  
   }
 136  
 
 137  
   public static ListValue of(List<? extends Value<?>> values) {
 138  84
     return new ListValue(values);
 139  
   }
 140  
 
 141  
   public static ListValue of(Value<?> first, Value<?>... other) {
 142  32
     return new ListValue(first, other);
 143  
   }
 144  
 
 145  
   public static Builder builder() {
 146  280
     return new Builder();
 147  
   }
 148  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.LongValue.html b/cobertura/com.google.gcloud.datastore.LongValue.html deleted file mode 100644 index cfb558adea97..000000000000 --- a/cobertura/com.google.gcloud.datastore.LongValue.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.LongValue
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
LongValue
100%
7/7
N/A
1
LongValue$1
100%
5/5
N/A
1
LongValue$Builder
100%
4/4
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.api.services.datastore.DatastoreV1.Value.INTEGER_VALUE_FIELD_NUMBER;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 
 23  70
 public final class LongValue extends Value<Long> {
 24  
 
 25  
   private static final long serialVersionUID = -8552854340400546861L;
 26  
 
 27  2
   static final BaseMarshaller<Long, LongValue, Builder> MARSHALLER =
 28  196
       new BaseMarshaller<Long, LongValue, Builder>() {
 29  
 
 30  
         private static final long serialVersionUID = 2137414214660959845L;
 31  
 
 32  
         @Override
 33  
         public int getProtoFieldId() {
 34  
           return INTEGER_VALUE_FIELD_NUMBER;
 35  
         }
 36  
 
 37  
         @Override
 38  
         public Builder newBuilder(Long value) {
 39  60
           return builder(value);
 40  
         }
 41  
 
 42  
         @Override
 43  
         protected Long getValue(DatastoreV1.Value from) {
 44  56
           return from.getIntegerValue();
 45  
         }
 46  
 
 47  
         @Override
 48  
         protected void setValue(LongValue from, DatastoreV1.Value.Builder to) {
 49  80
           to.setIntegerValue(from.get());
 50  80
         }
 51  
       };
 52  
 
 53  692
   public static final class Builder extends Value.BaseBuilder<Long, LongValue, Builder> {
 54  
 
 55  
     private Builder() {
 56  158
       super(ValueType.LONG);
 57  158
     }
 58  
 
 59  
     @Override
 60  
     public LongValue build() {
 61  70
       return new LongValue(this);
 62  
     }
 63  
   }
 64  
 
 65  
   public LongValue(long value) {
 66  88
     this(builder(value));
 67  88
   }
 68  
 
 69  
   private LongValue(Builder builder) {
 70  
     super(builder);
 71  
   }
 72  
 
 73  
   @Override
 74  
   public Builder toBuilder() {
 75  2
     return new Builder().mergeFrom(this);
 76  
   }
 77  
 
 78  
   public static LongValue of(long value) {
 79  88
     return new LongValue(value);
 80  
   }
 81  
 
 82  
   public static Builder builder(long value) {
 83  156
     return new Builder().set(value);
 84  
   }
 85  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.NullValue.html b/cobertura/com.google.gcloud.datastore.NullValue.html deleted file mode 100644 index 636242e0856d..000000000000 --- a/cobertura/com.google.gcloud.datastore.NullValue.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.NullValue
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
NullValue
100%
7/7
N/A
1
NullValue$1
100%
4/4
N/A
1
NullValue$Builder
100%
6/6
50%
1/2
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkArgument;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 
 23  180
 public final class NullValue extends Value<Void> {
 24  
 
 25  
   private static final long serialVersionUID = 8497300779013002270L;
 26  
 
 27  2
   static final BaseMarshaller<Void, NullValue, Builder> MARSHALLER =
 28  592
       new BaseMarshaller<Void, NullValue, Builder>() {
 29  
 
 30  
         private static final long serialVersionUID = 2785573597627128832L;
 31  
 
 32  
         @Override
 33  
         public Builder newBuilder(Void value) {
 34  174
           return builder();
 35  
         }
 36  
 
 37  
         @Override
 38  
         public int getProtoFieldId() {
 39  
           return 0;
 40  
         }
 41  
 
 42  
         @Override
 43  
         protected Void getValue(DatastoreV1.Value from) {
 44  174
           return null;
 45  
         }
 46  
 
 47  
         @Override
 48  
         protected void setValue(NullValue from, DatastoreV1.Value.Builder to) {
 49  
           // nothing to set
 50  244
         }
 51  
       };
 52  
 
 53  1138
   public static final class Builder extends Value.BaseBuilder<Void, NullValue, Builder> {
 54  
 
 55  
     private Builder() {
 56  284
       super(ValueType.NULL);
 57  284
     }
 58  
 
 59  
     @Override
 60  
     public NullValue build() {
 61  180
       return new NullValue(this);
 62  
     }
 63  
 
 64  
     @Override
 65  
     public Builder set(Void value) {
 66  2
       checkArgument(value == null, "Only null values are allowed");
 67  2
       return this;
 68  
     }
 69  
   }
 70  
 
 71  
   public NullValue() {
 72  104
     this(builder());
 73  104
   }
 74  
 
 75  
   private NullValue(Builder builder) {
 76  
     super(builder);
 77  
   }
 78  
 
 79  
   @Override
 80  
   public Builder toBuilder() {
 81  2
     return new Builder().mergeFrom(this);
 82  
   }
 83  
 
 84  
   public static NullValue of() {
 85  98
     return new NullValue();
 86  
   }
 87  
 
 88  
   public static Builder builder() {
 89  282
     return new Builder();
 90  
   }
 91  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.PathElement.html b/cobertura/com.google.gcloud.datastore.PathElement.html deleted file mode 100644 index ce00d6f4d0f9..000000000000 --- a/cobertura/com.google.gcloud.datastore.PathElement.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.PathElement
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
PathElement
92%
36/39
83%
25/30
1.867
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkArgument;
 20  
 import static com.google.common.base.Preconditions.checkNotNull;
 21  
 
 22  
 import com.google.api.services.datastore.DatastoreV1;
 23  
 import com.google.common.base.Strings;
 24  
 import com.google.protobuf.InvalidProtocolBufferException;
 25  
 
 26  
 import java.util.Objects;
 27  
 
 28  
 /**
 29  
  * Represents a single element in a key's path.
 30  
  */
 31  0
 public final class PathElement extends Serializable<DatastoreV1.Key.PathElement> {
 32  
 
 33  
   private static final long serialVersionUID = -7968078857690784595L;
 34  
 
 35  
   private final transient String kind;
 36  
   private final transient Long id;
 37  
   private final transient String name;
 38  
 
 39  854
   private PathElement(String kind, String name, Long id) {
 40  854
     this.kind = checkNotNull(kind, "kind must not be null");
 41  848
     this.name = name;
 42  848
     this.id = id;
 43  848
   }
 44  
 
 45  
   public String kind() {
 46  116
     return kind;
 47  
   }
 48  
 
 49  
   public boolean hasId() {
 50  36
     return id != null;
 51  
   }
 52  
 
 53  
   public Long id() {
 54  38
     return id;
 55  
   }
 56  
 
 57  
   public boolean hasName() {
 58  12
     return name != null;
 59  
   }
 60  
 
 61  
   public String name() {
 62  32
     return name;
 63  
   }
 64  
 
 65  
   public Object nameOrId() {
 66  940
     return id == null ? name : id;
 67  
   }
 68  
 
 69  
   @Override
 70  
   public int hashCode() {
 71  1026
     return Objects.hash(kind, id, name);
 72  
   }
 73  
 
 74  
   @Override
 75  
   public boolean equals(Object obj) {
 76  588
     if (obj == this) {
 77  18
       return true;
 78  
     }
 79  570
     if (!(obj instanceof PathElement)) {
 80  0
       return false;
 81  
     }
 82  570
     PathElement other = (PathElement) obj;
 83  570
     return Objects.equals(kind, other.kind)
 84  
         && Objects.equals(id, other.id)
 85  
         && Objects.equals(name, other.name);
 86  
   }
 87  
 
 88  
   @Override
 89  
   protected DatastoreV1.Key.PathElement toPb() {
 90  1074
     DatastoreV1.Key.PathElement.Builder pathElementPb = DatastoreV1.Key.PathElement.newBuilder();
 91  1074
     pathElementPb.setKind(kind);
 92  1074
     if (id != null) {
 93  210
       pathElementPb.setId(id);
 94  864
     } else if (name != null) {
 95  684
       pathElementPb.setName(name);
 96  
     }
 97  1074
     return pathElementPb.build();
 98  
   }
 99  
 
 100  
   @Override
 101  
   protected Object fromPb(byte[] bytesPb) throws InvalidProtocolBufferException {
 102  0
     return fromPb(DatastoreV1.Key.PathElement.parseFrom(bytesPb));
 103  
   }
 104  
 
 105  
   static PathElement fromPb(DatastoreV1.Key.PathElement pathElementPb) {
 106  612
     String kind = pathElementPb.getKind();
 107  612
     if (pathElementPb.hasId()) {
 108  154
       return of(kind, pathElementPb.getId());
 109  
     }
 110  458
     if (pathElementPb.hasName()) {
 111  360
       return of(kind, pathElementPb.getName());
 112  
     }
 113  98
     return of(kind);
 114  
   }
 115  
 
 116  
   static PathElement of(String kind) {
 117  194
     return new PathElement(kind, null, null);
 118  
   }
 119  
 
 120  
   public static PathElement of(String kind, String name) {
 121  424
     checkArgument(!Strings.isNullOrEmpty(name) , "name must not be empty or null");
 122  424
     checkArgument(name.length() <= 500, "name must not exceed 500 characters");
 123  424
     return new PathElement(kind, name, null);
 124  
   }
 125  
 
 126  
   public static PathElement of(String kind, long id) {
 127  236
     checkArgument(id != 0, "id must not be equal to zero");
 128  236
     return new PathElement(kind, null, id);
 129  
   }
 130  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.ProjectionEntity.html b/cobertura/com.google.gcloud.datastore.ProjectionEntity.html deleted file mode 100644 index def86090bf96..000000000000 --- a/cobertura/com.google.gcloud.datastore.ProjectionEntity.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.ProjectionEntity
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
ProjectionEntity
91%
11/12
66%
8/12
1.889
ProjectionEntity$1
N/A
N/A
1.889
ProjectionEntity$Builder
100%
2/2
N/A
1.889
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.api.services.datastore.DatastoreV1;
 20  
 import com.google.protobuf.ByteString;
 21  
 
 22  
 /**
 23  
  * A projection entity is a result of a Google Cloud Datastore projection query.
 24  
  * A projection entity holds one or more properties, represented by a name (as {@link String})
 25  
  * and a value (as {@link Value}), and may have a {@link Key}.
 26  
  *
 27  
  * @see <a href="https://cloud.google.com/datastore/docs/concepts/projectionqueries">Google Cloud Datastore projection queries</a>
 28  
  * @see <a href="https://cloud.google.com/datastore/docs/concepts/entities">Google Cloud Datastore Entities, Properties, and Keys</a>
 29  
  */
 30  2
 public final class ProjectionEntity extends BaseEntity<Key> {
 31  
 
 32  
   private static final long serialVersionUID = 432961565733066915L;
 33  
 
 34  2
   static final class Builder extends BaseEntity.Builder<Key, Builder> {
 35  
 
 36  
     Builder() {
 37  
     }
 38  
 
 39  
     private Builder(ProjectionEntity entity) {
 40  
       super(entity);
 41  
     }
 42  
 
 43  
     @Override
 44  
     public ProjectionEntity build() {
 45  16
       return new ProjectionEntity(this);
 46  
     }
 47  
   }
 48  
 
 49  
   ProjectionEntity(Builder builder) {
 50  
     super(builder);
 51  
   }
 52  
 
 53  
   @SuppressWarnings({"unchecked", "deprecation"})
 54  
   @Override
 55  
   public DateTime getDateTime(String name) {
 56  6
     Value<?> value = getValue(name);
 57  6
     if (value.hasMeaning() && value.meaning() == 18 && value instanceof LongValue) {
 58  4
       return new DateTime(getLong(name));
 59  
     }
 60  2
     return ((Value<DateTime>) value).get();
 61  
   }
 62  
 
 63  
   @SuppressWarnings({"unchecked", "deprecation"})
 64  
   @Override
 65  
   public Blob getBlob(String name) {
 66  4
     Value<?> value = getValue(name);
 67  4
     if (value.hasMeaning() && value.meaning() == 18 && value instanceof StringValue) {
 68  2
       return new Blob(ByteString.copyFromUtf8(getString(name)));
 69  
     }
 70  2
     return ((Value<Blob>) value).get();
 71  
   }
 72  
 
 73  
   static ProjectionEntity fromPb(DatastoreV1.Entity entityPb) {
 74  10
     return new Builder().fill(entityPb).build();
 75  
   }
 76  
 
 77  
   @Override
 78  
   protected Builder emptyBuilder() {
 79  2
     return new Builder();
 80  
   }
 81  
 
 82  
   public static Builder builder(ProjectionEntity copyFrom) {
 83  0
     return new Builder(copyFrom);
 84  
   }
 85  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.Query.html b/cobertura/com.google.gcloud.datastore.Query.html deleted file mode 100644 index 3d9afc5ed50e..000000000000 --- a/cobertura/com.google.gcloud.datastore.Query.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.Query
-
 
- - - - - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Query
70%
12/17
N/A
1.36
Query$1
N/A
N/A
1.36
Query$ResultType
88%
23/26
66%
4/6
1.36
Query$ResultType$1
0%
0/5
0%
0/4
1.36
Query$ResultType$2
100%
2/2
N/A
1.36
Query$ResultType$3
100%
2/2
N/A
1.36
Query$ResultType$4
100%
2/2
N/A
1.36
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkNotNull;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 import com.google.common.base.MoreObjects;
 23  
 import com.google.common.base.MoreObjects.ToStringHelper;
 24  
 import com.google.common.collect.Maps;
 25  
 import com.google.gcloud.datastore.StructuredQuery.EntityQueryBuilder;
 26  
 import com.google.gcloud.datastore.StructuredQuery.KeyQueryBuilder;
 27  
 import com.google.gcloud.datastore.StructuredQuery.ProjectionEntityQueryBuilder;
 28  
 import com.google.protobuf.GeneratedMessage;
 29  
 import com.google.protobuf.InvalidProtocolBufferException;
 30  
 
 31  
 import java.util.Map;
 32  
 
 33  
 
 34  
 /**
 35  
  * A Google Cloud Datastore query.
 36  
  * For usage examples see {@link GqlQuery} and {@link StructuredQuery}.
 37  
  *
 38  
  * @param <V> the type of the values returned by this query.
 39  
  * @see <a href="https://cloud.google.com/datastore/docs/concepts/queries">Datastore Queries</a>
 40  
  */
 41  
 public abstract class Query<V> extends Serializable<GeneratedMessage> {
 42  
 
 43  
   private static final long serialVersionUID = -2748141759901313101L;
 44  
 
 45  
   private final ResultType<V> resultType;
 46  
   private final String namespace;
 47  
 
 48  
   /**
 49  
    * This class represents the expected type of the result.
 50  
    *   ENTITY: A full entity represented by {@link Entity}.
 51  
    *   PROJECTION_ENTITY: A projection entity, represented by {@link ProjectionEntity}.
 52  
    *   KEY: An entity's {@link Key}.
 53  
    */
 54  8
   public abstract static class ResultType<V> implements java.io.Serializable {
 55  
 
 56  
     private static final long serialVersionUID = 2104157695425806623L;
 57  
     private static final Map<DatastoreV1.EntityResult.ResultType, ResultType<?>>
 58  2
         PB_TO_INSTANCE = Maps.newEnumMap(DatastoreV1.EntityResult.ResultType.class);
 59  
 
 60  2
     static final ResultType<?> UNKNOWN = new ResultType<Object>(null, Object.class) {
 61  
 
 62  
       private static final long serialVersionUID = 1602329532153860907L;
 63  
 
 64  
       @Override protected Object convert(DatastoreV1.Entity entityPb) {
 65  0
         if (entityPb.getPropertyCount() == 0) {
 66  0
           if (!entityPb.hasKey()) {
 67  0
             return null;
 68  
           }
 69  0
           return Key.fromPb(entityPb.getKey());
 70  
         }
 71  0
         return ProjectionEntity.fromPb(entityPb);
 72  
       }
 73  
     };
 74  
 
 75  2
     public static final ResultType<Entity> ENTITY =
 76  16
         new ResultType<Entity>(DatastoreV1.EntityResult.ResultType.FULL, Entity.class) {
 77  
 
 78  
       private static final long serialVersionUID = 7712959777507168274L;
 79  
 
 80  
       @Override protected Entity convert(DatastoreV1.Entity entityPb) {
 81  16
         return Entity.fromPb(entityPb);
 82  
       }
 83  
     };
 84  
 
 85  2
     public static final ResultType<Key> KEY =
 86  94
         new ResultType<Key>(DatastoreV1.EntityResult.ResultType.KEY_ONLY, Key.class) {
 87  
 
 88  
       private static final long serialVersionUID = -8514289244104446252L;
 89  
 
 90  
       @Override protected Key convert(DatastoreV1.Entity entityPb) {
 91  94
         return Key.fromPb(entityPb.getKey());
 92  
       }
 93  
     };
 94  
 
 95  2
     public static final ResultType<ProjectionEntity> PROJECTION_ENTITY =
 96  
         new ResultType<ProjectionEntity>(DatastoreV1.EntityResult.ResultType.PROJECTION,
 97  8
             ProjectionEntity.class) {
 98  
 
 99  
           private static final long serialVersionUID = -7591409419690650246L;
 100  
 
 101  
           @Override protected ProjectionEntity convert(DatastoreV1.Entity entityPb) {
 102  8
             return ProjectionEntity.fromPb(entityPb);
 103  
           }
 104  
     };
 105  
 
 106  
     private final Class<V> resultClass;
 107  
     private final DatastoreV1.EntityResult.ResultType queryType;
 108  
 
 109  
     @SuppressWarnings("unchecked")
 110  8
     private ResultType(DatastoreV1.EntityResult.ResultType queryType, Class resultClass) {
 111  8
       this.queryType = queryType;
 112  8
       this.resultClass = resultClass;
 113  8
       if (queryType != null) {
 114  6
         PB_TO_INSTANCE.put(queryType, this);
 115  
       }
 116  8
     }
 117  
 
 118  
     public Class<?> resultClass() {
 119  2
       return resultClass;
 120  
     }
 121  
 
 122  
     @Override
 123  
     public int hashCode() {
 124  0
       return resultClass.hashCode();
 125  
     }
 126  
 
 127  
     @Override
 128  
     public boolean equals(Object obj) {
 129  68
       if (obj == this) {
 130  0
         return true;
 131  
       }
 132  68
       if (!(obj instanceof ResultType)) {
 133  0
         return false;
 134  
       }
 135  68
       ResultType<?> other = (ResultType<?>) obj;
 136  68
       return resultClass.equals(other.resultClass);
 137  
     }
 138  
 
 139  
     @Override
 140  
     public String toString() {
 141  132
       ToStringHelper toStringHelper = MoreObjects.toStringHelper(this);
 142  132
       toStringHelper.add("queryType", queryType);
 143  132
       toStringHelper.add("resultClass", resultClass);
 144  132
       return toStringHelper.toString();
 145  
     }
 146  
 
 147  
     boolean isAssignableFrom(ResultType<?> otherResultType) {
 148  66
       return resultClass.isAssignableFrom(otherResultType.resultClass);
 149  
     }
 150  
 
 151  
     protected abstract V convert(DatastoreV1.Entity entityPb);
 152  
 
 153  
     static ResultType<?> fromPb(DatastoreV1.EntityResult.ResultType typePb) {
 154  66
       return MoreObjects.firstNonNull(PB_TO_INSTANCE.get(typePb), UNKNOWN);
 155  
     }
 156  
   }
 157  
 
 158  84
   Query(ResultType<V> resultType, String namespace) {
 159  84
     this.resultType = checkNotNull(resultType);
 160  84
     this.namespace = namespace;
 161  84
   }
 162  
 
 163  
   ResultType<V> type() {
 164  66
     return resultType;
 165  
   }
 166  
 
 167  
   public String namespace() {
 168  86
     return namespace;
 169  
   }
 170  
 
 171  
   @Override
 172  
   public String toString() {
 173  0
     ToStringHelper toStringHelper = MoreObjects.toStringHelper(this);
 174  0
     toStringHelper.add("type", resultType);
 175  0
     toStringHelper.add("namespace", namespace);
 176  0
     toStringHelper.add("queryPb", super.toString());
 177  0
     return toStringHelper.toString();
 178  
   }
 179  
 
 180  
   @Override
 181  
   protected Object fromPb(byte[] bytesPb) throws InvalidProtocolBufferException {
 182  10
     return fromPb(resultType, namespace, bytesPb);
 183  
   }
 184  
 
 185  
   protected abstract Object fromPb(ResultType<V> resultType, String namespace, byte[] bytesPb)
 186  
       throws InvalidProtocolBufferException;
 187  
 
 188  
   protected abstract void populatePb(DatastoreV1.RunQueryRequest.Builder requestPb);
 189  
 
 190  
   protected abstract Query<V> nextQuery(DatastoreV1.QueryResultBatch responsePb);
 191  
 
 192  
   /**
 193  
    * Returns a new {@link GqlQuery} builder.
 194  
    *
 195  
    * @see <a href="https://cloud.google.com/datastore/docs/apis/gql/gql_reference">GQL Reference</a>
 196  
    */
 197  
   public static GqlQuery.Builder<?> gqlQueryBuilder(String gql) {
 198  6
     return gqlQueryBuilder(ResultType.UNKNOWN, gql);
 199  
   }
 200  
 
 201  
   /**
 202  
    * Returns a new {@link GqlQuery} builder.
 203  
    *
 204  
    * @see <a href="https://cloud.google.com/datastore/docs/apis/gql/gql_reference">GQL Reference</a>
 205  
    */
 206  
   public static <V> GqlQuery.Builder<V> gqlQueryBuilder(ResultType<V> resultType, String gql) {
 207  20
     return new GqlQuery.Builder<>(resultType, gql);
 208  
   }
 209  
 
 210  
   /**
 211  
    * Returns a new {@link StructuredQuery} builder for full (complete entities) queries.
 212  
    */
 213  
   public static EntityQueryBuilder entityQueryBuilder() {
 214  6
     return new EntityQueryBuilder();
 215  
   }
 216  
 
 217  
   /**
 218  
    * Returns a new {@link StructuredQuery} builder for key only queries.
 219  
    */
 220  
   public static KeyQueryBuilder keyQueryBuilder() {
 221  42
     return new KeyQueryBuilder();
 222  
   }
 223  
 
 224  
   /**
 225  
    * Returns a new {@link StructuredQuery} builder for projection queries.
 226  
    */
 227  
   public static ProjectionEntityQueryBuilder projectionEntityQueryBuilder() {
 228  6
     return new ProjectionEntityQueryBuilder();
 229  
   }
 230  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.QueryResults.html b/cobertura/com.google.gcloud.datastore.QueryResults.html deleted file mode 100644 index ad2262acd521..000000000000 --- a/cobertura/com.google.gcloud.datastore.QueryResults.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.QueryResults
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
QueryResults
N/A
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import java.util.Iterator;
 20  
 
 21  
 /**
 22  
  * The result of a Google Cloud Datastore query submission.
 23  
  * When result is not typed it is possible to cast it to its appropriate type according to
 24  
  * the {@link #resultClass} value.
 25  
  * Results are loaded lazily therefore it is possible to get a {@code DatastoreServiceException}
 26  
  * upon {@link Iterator#hasNext hasNext} or {@link Iterator#next next} calls.
 27  
  *
 28  
  * @param <V> the type of the results value.
 29  
  */
 30  
 public interface QueryResults<V> extends Iterator<V> {
 31  
 
 32  
   /**
 33  
    * Returns the actual class of the result's values.
 34  
    */
 35  
   Class<?> resultClass();
 36  
 
 37  
   /**
 38  
    * Returns the Cursor for point after the value returned in the last {@link #next} call.
 39  
    * Not currently implemented (depends on v1beta3).
 40  
    */
 41  
   Cursor cursorAfter();
 42  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.QueryResultsImpl.html b/cobertura/com.google.gcloud.datastore.QueryResultsImpl.html deleted file mode 100644 index a08275888a55..000000000000 --- a/cobertura/com.google.gcloud.datastore.QueryResultsImpl.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.QueryResultsImpl
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
QueryResultsImpl
86%
31/36
75%
12/16
2.6
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.api.services.datastore.DatastoreV1;
 20  
 import com.google.api.services.datastore.DatastoreV1.QueryResultBatch.MoreResultsType;
 21  
 import com.google.common.base.Preconditions;
 22  
 import com.google.common.collect.AbstractIterator;
 23  
 import com.google.gcloud.datastore.Query.ResultType;
 24  
 
 25  
 import java.util.Iterator;
 26  
 import java.util.Objects;
 27  
 
 28  
 class QueryResultsImpl<T> extends AbstractIterator<T> implements QueryResults<T> {
 29  
 
 30  
   private final DatastoreServiceImpl datastore;
 31  
   private final DatastoreV1.ReadOptions readOptionsPb;
 32  
   private final DatastoreV1.PartitionId partitionIdPb;
 33  
   private final ResultType<T> queryResultType;
 34  
   private Query<T> query;
 35  
   private ResultType<?> actualResultType;
 36  
   private DatastoreV1.QueryResultBatch queryResultBatchPb;
 37  
   private boolean lastBatch;
 38  
   private Iterator<DatastoreV1.EntityResult> entityResultPbIter;
 39  
   //private ByteString cursor; // only available in v1beta3
 40  
 
 41  
 
 42  
   QueryResultsImpl(DatastoreServiceImpl datastore, DatastoreV1.ReadOptions readOptionsPb,
 43  66
                    Query<T> query) {
 44  66
     this.datastore = datastore;
 45  66
     this.readOptionsPb = readOptionsPb;
 46  66
     this.query = query;
 47  66
     queryResultType = query.type();
 48  66
     DatastoreV1.PartitionId.Builder pbBuilder = DatastoreV1.PartitionId.newBuilder();
 49  66
     pbBuilder.setDatasetId(datastore.options().projectId());
 50  66
     if (query.namespace() != null) {
 51  0
       pbBuilder.setNamespace(query.namespace());
 52  66
     } else if (datastore.options().namespace() != null) {
 53  0
       pbBuilder.setNamespace(datastore.options().namespace());
 54  
     }
 55  66
     partitionIdPb = pbBuilder.build();
 56  66
     sendRequest();
 57  66
   }
 58  
 
 59  
   private void sendRequest() {
 60  66
     DatastoreV1.RunQueryRequest.Builder requestPb = DatastoreV1.RunQueryRequest.newBuilder();
 61  66
     if (readOptionsPb != null) {
 62  4
       requestPb.setReadOptions(readOptionsPb);
 63  
     }
 64  66
     requestPb.setPartitionId(partitionIdPb);
 65  66
     query.populatePb(requestPb);
 66  66
     queryResultBatchPb = datastore.runQuery(requestPb.build()).getBatch();
 67  66
     lastBatch = queryResultBatchPb.getMoreResults() != MoreResultsType.NOT_FINISHED;
 68  66
     entityResultPbIter = queryResultBatchPb.getEntityResultList().iterator();
 69  
     // cursor = resultPb.getSkippedCursor(); // available in v1beta3, use startCursor if not skipped
 70  66
     actualResultType = ResultType.fromPb(queryResultBatchPb.getEntityResultType());
 71  66
     if (Objects.equals(queryResultType, ResultType.PROJECTION_ENTITY)) {
 72  
       // projection entity can represent all type of results
 73  8
       actualResultType = ResultType.PROJECTION_ENTITY;
 74  
     }
 75  66
     Preconditions.checkState(queryResultType.isAssignableFrom(actualResultType),
 76  
         "Unexpected result type " + actualResultType + " vs " + queryResultType);
 77  66
   }
 78  
 
 79  
   @SuppressWarnings("unchecked")
 80  
   @Override
 81  
   protected T computeNext() {
 82  180
     while (!entityResultPbIter.hasNext() && !lastBatch) {
 83  0
       query = query.nextQuery(queryResultBatchPb);
 84  0
       sendRequest();
 85  
     }
 86  180
     if (!entityResultPbIter.hasNext()) {
 87  62
       return endOfData();
 88  
     }
 89  118
     DatastoreV1.EntityResult entityResultPb = entityResultPbIter.next();
 90  
     //cursor = entityResultPb.getCursor(); // only available in v1beta3
 91  118
     return (T) actualResultType.convert(entityResultPb.getEntity());
 92  
   }
 93  
 
 94  
   @Override
 95  
   public Class<?> resultClass() {
 96  2
     return actualResultType.resultClass();
 97  
   }
 98  
 
 99  
   @Override
 100  
   public Cursor cursorAfter() {
 101  
     //return new Cursor(cursor); // only available in v1beta3
 102  0
     return null;
 103  
   }
 104  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.RawValue.html b/cobertura/com.google.gcloud.datastore.RawValue.html deleted file mode 100644 index e230cd7d1472..000000000000 --- a/cobertura/com.google.gcloud.datastore.RawValue.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.RawValue
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
RawValue
92%
12/13
75%
3/4
1.182
RawValue$1
100%
5/5
N/A
1.182
RawValue$Builder
100%
4/4
N/A
1.182
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.api.services.datastore.DatastoreV1;
 20  
 
 21  6
 public final class RawValue extends Value<DatastoreV1.Value> {
 22  
 
 23  
   private static final long serialVersionUID = -3359604598651897941L;
 24  
 
 25  2
   static final BaseMarshaller<DatastoreV1.Value, RawValue, Builder> MARSHALLER =
 26  6
       new BaseMarshaller<DatastoreV1.Value, RawValue, Builder>() {
 27  
 
 28  
         private static final long serialVersionUID = 5320642719486106244L;
 29  
 
 30  
         @Override
 31  
         public Builder newBuilder(DatastoreV1.Value value) {
 32  2
           return builder(value);
 33  
         }
 34  
 
 35  
         @Override
 36  
         public int getProtoFieldId() {
 37  
           return 0;
 38  
         }
 39  
 
 40  
         @Override
 41  
         protected DatastoreV1.Value getValue(DatastoreV1.Value from) {
 42  2
           return from;
 43  
         }
 44  
 
 45  
         @Override
 46  
         protected void setValue(RawValue from, DatastoreV1.Value.Builder to) {
 47  2
           to.mergeFrom(from.get());
 48  2
         }
 49  
       };
 50  
 
 51  28
   static final class Builder extends Value.BaseBuilder<DatastoreV1.Value, RawValue, Builder> {
 52  
 
 53  
     private Builder() {
 54  28
       super(ValueType.RAW_VALUE);
 55  28
     }
 56  
 
 57  
     @Override
 58  
     public RawValue build() {
 59  6
       return new RawValue(this);
 60  
     }
 61  
   }
 62  
 
 63  
   private RawValue(Builder builder) {
 64  
     super(builder);
 65  
   }
 66  
 
 67  
   RawValue(DatastoreV1.Value valuePb) {
 68  22
     this(builder(valuePb));
 69  22
   }
 70  
 
 71  
   @Override
 72  
   public Builder toBuilder() {
 73  2
     return new Builder().mergeFrom(this);
 74  
   }
 75  
 
 76  
   static RawValue of(DatastoreV1.Value valuePb) {
 77  22
     return new RawValue(valuePb);
 78  
   }
 79  
 
 80  
   static Builder builder(DatastoreV1.Value valuePb) {
 81  26
     Builder builder = new Builder();
 82  26
     if (valuePb.hasIndexed()) {
 83  0
       builder.indexed(valuePb.getIndexed());
 84  
     }
 85  26
     if (valuePb.hasMeaning()) {
 86  4
       builder.meaning(valuePb.getMeaning());
 87  
     }
 88  26
     builder.set(valuePb);
 89  26
     return builder;
 90  
   }
 91  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.Serializable.html b/cobertura/com.google.gcloud.datastore.Serializable.html deleted file mode 100644 index e269db6f5ae6..000000000000 --- a/cobertura/com.google.gcloud.datastore.Serializable.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.Serializable
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Serializable
69%
9/13
N/A
1.5
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.protobuf.GeneratedMessage;
 20  
 import com.google.protobuf.InvalidProtocolBufferException;
 21  
 
 22  
 import java.io.IOException;
 23  
 import java.io.ObjectInputStream;
 24  
 import java.io.ObjectOutputStream;
 25  
 import java.io.ObjectStreamException;
 26  
 import java.io.StreamCorruptedException;
 27  
 
 28  
 abstract class Serializable<M extends GeneratedMessage> implements java.io.Serializable {
 29  
 
 30  
   private static final long serialVersionUID = -5565522710061949199L;
 31  
 
 32  
   private transient byte[] bytesPb; // only for deserialization
 33  
 
 34  
   @Override
 35  
   public String toString() {
 36  8
     return toPb().toString();
 37  
   }
 38  
 
 39  
   private void writeObject(ObjectOutputStream output) throws IOException {
 40  70
     output.defaultWriteObject();
 41  70
     output.writeObject(toPb().toByteArray());
 42  70
   }
 43  
 
 44  
   private void readObject(ObjectInputStream input) throws IOException, ClassNotFoundException {
 45  70
     input.defaultReadObject();
 46  70
     bytesPb = (byte[]) input.readObject();
 47  70
   }
 48  
 
 49  
   protected Object readResolve() throws ObjectStreamException {
 50  
     try {
 51  70
       return fromPb(bytesPb);
 52  0
     } catch (InvalidProtocolBufferException ex) {
 53  0
       StreamCorruptedException sce = new StreamCorruptedException("Failed to create object");
 54  0
       sce.initCause(ex);
 55  0
       throw sce;
 56  
     } finally {
 57  70
       bytesPb = null;
 58  
     }
 59  
   }
 60  
 
 61  
   protected abstract M toPb();
 62  
 
 63  
   protected abstract Object fromPb(byte[] bytesPb) throws InvalidProtocolBufferException;
 64  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.StringValue.html b/cobertura/com.google.gcloud.datastore.StringValue.html deleted file mode 100644 index 7277d3fdbe97..000000000000 --- a/cobertura/com.google.gcloud.datastore.StringValue.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.StringValue
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
StringValue
100%
7/7
N/A
1
StringValue$1
100%
6/6
N/A
1
StringValue$Builder
100%
4/4
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.api.services.datastore.DatastoreV1.Value.STRING_VALUE_FIELD_NUMBER;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 
 23  276
 public final class StringValue extends Value<String> {
 24  
 
 25  
   private static final long serialVersionUID = -3105699707394545523L;
 26  
 
 27  2
   static final BaseMarshaller<String, StringValue, Builder> MARSHALLER =
 28  952
       new BaseMarshaller<String, StringValue, Builder>() {
 29  
 
 30  
         private static final long serialVersionUID = -359610204134164436L;
 31  
 
 32  
         @Override
 33  
         public int getProtoFieldId() {
 34  2
           return STRING_VALUE_FIELD_NUMBER;
 35  
         }
 36  
 
 37  
         @Override
 38  
         public Builder newBuilder(String value) {
 39  264
           return builder(value);
 40  
         }
 41  
 
 42  
         @Override
 43  
         protected String getValue(DatastoreV1.Value from) {
 44  260
           return from.getStringValue();
 45  
         }
 46  
 
 47  
         @Override
 48  
         protected void setValue(StringValue from, DatastoreV1.Value.Builder to) {
 49  428
           to.setStringValue(from.get());
 50  428
         }
 51  
       };
 52  
 
 53  2040
   public static final class Builder extends Value.BaseBuilder<String, StringValue, Builder> {
 54  
 
 55  
     private Builder() {
 56  444
       super(ValueType.STRING);
 57  444
     }
 58  
 
 59  
     @Override
 60  
     public StringValue build() {
 61  276
       return new StringValue(this);
 62  
     }
 63  
   }
 64  
 
 65  
   public StringValue(String value) {
 66  168
     this(builder(value));
 67  168
   }
 68  
 
 69  
   private StringValue(Builder builder) {
 70  
     super(builder);
 71  
   }
 72  
 
 73  
   @Override
 74  
   public Builder toBuilder() {
 75  2
     return new Builder().mergeFrom(this);
 76  
   }
 77  
 
 78  
   public static StringValue of(String value) {
 79  168
     return new StringValue(value);
 80  
   }
 81  
 
 82  
   public static Builder builder(String value) {
 83  442
     return new Builder().set(value);
 84  
   }
 85  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.StructuredQuery.html b/cobertura/com.google.gcloud.datastore.StructuredQuery.html deleted file mode 100644 index 654a3dddfd95..000000000000 --- a/cobertura/com.google.gcloud.datastore.StructuredQuery.html +++ /dev/null @@ -1,1672 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.StructuredQuery
-
 
- - - - - - - - - - - - - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
StructuredQuery
70%
49/70
62%
35/56
1.489
StructuredQuery$BaseBuilder
98%
70/71
83%
20/24
1.489
StructuredQuery$Builder
N/A
N/A
1.489
StructuredQuery$CompositeFilter
79%
27/34
64%
9/14
1.489
StructuredQuery$CompositeFilter$Operator
100%
4/4
N/A
1.489
StructuredQuery$EntityQueryBuilder
100%
3/3
N/A
1.489
StructuredQuery$Filter
100%
3/3
100%
2/2
1.489
StructuredQuery$KeyQueryBuilder
100%
9/9
N/A
1.489
StructuredQuery$OrderBy
68%
13/19
50%
4/8
1.489
StructuredQuery$OrderBy$Direction
100%
4/4
N/A
1.489
StructuredQuery$Projection
57%
15/26
50%
7/14
1.489
StructuredQuery$Projection$Aggregate
75%
3/4
N/A
1.489
StructuredQuery$ProjectionEntityQueryBuilder
100%
10/10
N/A
1.489
StructuredQuery$PropertyFilter
32%
23/70
50%
6/12
1.489
StructuredQuery$PropertyFilter$Operator
100%
9/9
N/A
1.489
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkNotNull;
 20  
 import static com.google.gcloud.datastore.BlobValue.of;
 21  
 import static com.google.gcloud.datastore.BooleanValue.of;
 22  
 import static com.google.gcloud.datastore.DateTimeValue.of;
 23  
 import static com.google.gcloud.datastore.DoubleValue.of;
 24  
 import static com.google.gcloud.datastore.KeyValue.of;
 25  
 import static com.google.gcloud.datastore.LongValue.of;
 26  
 import static com.google.gcloud.datastore.StringValue.of;
 27  
 
 28  
 import com.google.api.services.datastore.DatastoreV1;
 29  
 import com.google.common.base.MoreObjects;
 30  
 import com.google.common.base.MoreObjects.ToStringHelper;
 31  
 import com.google.common.base.Preconditions;
 32  
 import com.google.common.collect.ImmutableList;
 33  
 import com.google.protobuf.InvalidProtocolBufferException;
 34  
 
 35  
 import java.io.Serializable;
 36  
 import java.util.Arrays;
 37  
 import java.util.Collections;
 38  
 import java.util.LinkedList;
 39  
 import java.util.List;
 40  
 import java.util.Objects;
 41  
 
 42  
 /**
 43  
  * An implementation of a Google Cloud Datastore Query that can be constructed by providing
 44  
  * all the specific query elements.
 45  
  *
 46  
  * <h3>A usage example:</h3>
 47  
  *
 48  
  * <p>A simple query that returns all entities for a specific kind
 49  
  * <pre>{@code
 50  
  *   Query<Entity> query = Query.entityQueryBuilder().kind(kind).build();
 51  
  *   QueryResults<Entity> results = datastore.run(query);
 52  
  *   while (results.hasNext()) {
 53  
  *     Entity entity = results.next();
 54  
  *     ...
 55  
  *   }
 56  
  * } </pre>
 57  
  *
 58  
  * <p>A simple key-only query of all entities for a specific kind
 59  
  * <pre>{@code
 60  
  *   Query<Key> keyOnlyQuery =  Query.keyQueryBuilder().kind(KIND1).build();
 61  
  *   QueryResults<Key> results = datastore.run(keyOnlyQuery);
 62  
  *   ...
 63  
  * } </pre>
 64  
  *
 65  
  * <p>A less trivial example of a projection query that returns the first 10 results
 66  
  * of "age" and "name" properties (sorted and grouped by "age") with an age greater than 18
 67  
  * <pre>{@code
 68  
  *   Query<ProjectionEntity> query = Query.projectionEntityQueryBuilder()
 69  
  *       .kind(kind)
 70  
  *       .projection(Projection.property("age"), Projection.first("name"))
 71  
  *       .filter(PropertyFilter.gt("age", 18))
 72  
  *       .groupBy("age")
 73  
  *       .orderBy(OrderBy.asc("age"))
 74  
  *       .limit(10)
 75  
  *       .build();
 76  
  *   QueryResults<ProjectionEntity> results = datastore.run(query);
 77  
  *   ...
 78  
  * } </pre>
 79  
  *
 80  
  * @param <V> the type of the result values this query will produce
 81  
  * @see <a href="https://cloud.google.com/appengine/docs/java/datastore/queries">Datastore queries</a>
 82  
  */
 83  6
 public class StructuredQuery<V> extends Query<V> {
 84  
 
 85  
   private static final long serialVersionUID = 546838955624019594L;
 86  
   private static final String KEY_PROPERTY_NAME = "__key__";
 87  
 
 88  
   private final transient String kind;
 89  
   private final ImmutableList<Projection> projection;
 90  
   private final transient Filter filter;
 91  
   private final ImmutableList<String> groupBy;
 92  
   private final transient ImmutableList<OrderBy> orderBy;
 93  
   private final transient Cursor startCursor;
 94  
   private final transient Cursor endCursor;
 95  
   private final transient int offset;
 96  
   private final transient Integer limit;
 97  
 
 98  
   public abstract static class Filter implements Serializable {
 99  
 
 100  
     private static final long serialVersionUID = -6443285436239990860L;
 101  
 
 102  
     Filter() {
 103  
     }
 104  
 
 105  
     protected abstract DatastoreV1.Filter toPb();
 106  
 
 107  
     static Filter fromPb(DatastoreV1.Filter filterPb) {
 108  8
       if (filterPb.hasCompositeFilter()) {
 109  2
         return CompositeFilter.fromPb(filterPb.getCompositeFilter());
 110  
       }
 111  6
       return PropertyFilter.fromPb(filterPb.getPropertyFilter());
 112  
     }
 113  
   }
 114  
 
 115  
   public static final class CompositeFilter extends Filter {
 116  
 
 117  
     private static final long serialVersionUID = 3610352685739360009L;
 118  
     private final Operator operator;
 119  
     private final ImmutableList<Filter> filters;
 120  
 
 121  6
     enum Operator {
 122  2
       AND;
 123  
 
 124  
       DatastoreV1.CompositeFilter.Operator toPb() {
 125  2
         return DatastoreV1.CompositeFilter.Operator.valueOf(name());
 126  
       }
 127  
 
 128  
       static Operator fromPb(DatastoreV1.CompositeFilter.Operator operatorPb) {
 129  2
         return valueOf(operatorPb.name());
 130  
       }
 131  
     }
 132  
 
 133  2
     private CompositeFilter(Operator operator, Filter first, Filter... other) {
 134  2
       this.operator = operator;
 135  2
       this.filters =
 136  
           ImmutableList.<Filter>builder().add(first).addAll(Arrays.asList(other)).build();
 137  2
     }
 138  
 
 139  2
     private CompositeFilter(Operator operator, ImmutableList<Filter> filters) {
 140  2
       this.operator = operator;
 141  2
       this.filters = filters;
 142  2
       Preconditions.checkArgument(!filters.isEmpty(), "filters list must not be empty");
 143  2
     }
 144  
 
 145  
     @Override
 146  
     public String toString() {
 147  0
       ToStringHelper toStringHelper = MoreObjects.toStringHelper(this);
 148  0
       toStringHelper.add("operator", operator);
 149  0
       toStringHelper.add("filters", filters);
 150  0
       return toStringHelper.toString();
 151  
     }
 152  
 
 153  
     @Override
 154  
     public int hashCode() {
 155  0
       return Objects.hash(operator, filters);
 156  
     }
 157  
 
 158  
     @Override
 159  
     public boolean equals(Object obj) {
 160  2
       if (obj == this) {
 161  0
         return true;
 162  
       }
 163  2
       if (!(obj instanceof CompositeFilter)) {
 164  0
         return false;
 165  
       }
 166  2
       CompositeFilter other = (CompositeFilter) obj;
 167  2
       return operator == other.operator
 168  
           && filters.equals(other.filters);
 169  
     }
 170  
 
 171  
     static CompositeFilter fromPb(DatastoreV1.CompositeFilter compositeFilterPb) {
 172  2
       Operator operator = Operator.fromPb(compositeFilterPb.getOperator());
 173  2
       ImmutableList.Builder<Filter> filters = ImmutableList.builder();
 174  2
       for (DatastoreV1.Filter filterPb : compositeFilterPb.getFilterList()) {
 175  4
         filters.add(Filter.fromPb(filterPb));
 176  4
       }
 177  2
       return new CompositeFilter(operator, filters.build());
 178  
     }
 179  
 
 180  
     public static CompositeFilter and(Filter first, Filter... other) {
 181  2
       return new CompositeFilter(Operator.AND, first, other);
 182  
     }
 183  
 
 184  
     @Override
 185  
     protected DatastoreV1.Filter toPb() {
 186  2
       DatastoreV1.Filter.Builder filterPb = DatastoreV1.Filter.newBuilder();
 187  2
       DatastoreV1.CompositeFilter.Builder compositeFilterPb = filterPb.getCompositeFilterBuilder();
 188  2
       compositeFilterPb.setOperator(operator.toPb());
 189  2
       for (Filter filter : filters) {
 190  4
         compositeFilterPb.addFilter(filter.toPb());
 191  4
       }
 192  2
       return filterPb.build();
 193  
     }
 194  
   }
 195  
 
 196  
   public static final class PropertyFilter extends Filter {
 197  
 
 198  
     private static final long serialVersionUID = -4514695915258598597L;
 199  
 
 200  
     private final String property;
 201  
     private final Operator operator;
 202  
     private final Value<?> value;
 203  
 
 204  10
     enum Operator {
 205  2
       LESS_THAN,
 206  2
       LESS_THAN_OR_EQUAL,
 207  2
       GREATER_THAN,
 208  2
       GREATER_THAN_OR_EQUAL,
 209  2
       EQUAL,
 210  2
       HAS_ANCESTOR;
 211  
 
 212  
       DatastoreV1.PropertyFilter.Operator toPb() {
 213  12
         return DatastoreV1.PropertyFilter.Operator.valueOf(name());
 214  
       }
 215  
 
 216  
       static Operator fromPb(DatastoreV1.PropertyFilter.Operator operatorPb) {
 217  6
         return valueOf(operatorPb.name());
 218  
       }
 219  
     }
 220  
 
 221  16
     private PropertyFilter(String property, Operator operator, Value<?> value) {
 222  16
       this.property = checkNotNull(property);
 223  16
       this.operator = checkNotNull(operator);
 224  16
       this.value = checkNotNull(value);
 225  16
     }
 226  
 
 227  
     public static PropertyFilter fromPb(DatastoreV1.PropertyFilter propertyFilterPb) {
 228  6
       String property = propertyFilterPb.getProperty().getName();
 229  6
       Operator operator = Operator.fromPb(propertyFilterPb.getOperator());
 230  6
       Value<?> value = Value.fromPb(propertyFilterPb.getValue());
 231  6
       return new PropertyFilter(property, operator, value);
 232  
     }
 233  
 
 234  
     @Override
 235  
     public String toString() {
 236  0
       ToStringHelper toStringHelper = MoreObjects.toStringHelper(this);
 237  0
       toStringHelper.add("property", property);
 238  0
       toStringHelper.add("operator", operator);
 239  0
       toStringHelper.add("value", value);
 240  0
       return toStringHelper.toString();
 241  
     }
 242  
 
 243  
     @Override
 244  
     public int hashCode() {
 245  0
       return Objects.hash(property, operator, value);
 246  
     }
 247  
 
 248  
     @Override
 249  
     public boolean equals(Object obj) {
 250  6
       if (obj == this) {
 251  0
         return true;
 252  
       }
 253  6
       if (!(obj instanceof PropertyFilter)) {
 254  0
         return false;
 255  
       }
 256  6
       PropertyFilter other = (PropertyFilter) obj;
 257  6
       return property.equals(other.property)
 258  
           && operator == other.operator
 259  
           && Objects.equals(value, other.value);
 260  
     }
 261  
 
 262  
     public static PropertyFilter le(String property, Value<?> value) {
 263  0
       return new PropertyFilter(property, Operator.LESS_THAN, value);
 264  
     }
 265  
 
 266  
     public static PropertyFilter le(String property, String value) {
 267  0
       return new PropertyFilter(property, Operator.LESS_THAN, of(value));
 268  
     }
 269  
 
 270  
     public static PropertyFilter le(String property, long value) {
 271  0
       return new PropertyFilter(property, Operator.LESS_THAN, of(value));
 272  
     }
 273  
 
 274  
     public static PropertyFilter le(String property, double value) {
 275  0
       return new PropertyFilter(property, Operator.LESS_THAN, of(value));
 276  
     }
 277  
 
 278  
     public static PropertyFilter le(String property, boolean value) {
 279  0
       return new PropertyFilter(property, Operator.LESS_THAN, of(value));
 280  
     }
 281  
 
 282  
     public static PropertyFilter le(String property, DateTime value) {
 283  0
       return new PropertyFilter(property, Operator.LESS_THAN, of(value));
 284  
     }
 285  
 
 286  
     public static PropertyFilter le(String property, Key value) {
 287  0
       return new PropertyFilter(property, Operator.LESS_THAN, of(value));
 288  
     }
 289  
 
 290  
     public static PropertyFilter le(String property, Blob value) {
 291  0
       return new PropertyFilter(property, Operator.LESS_THAN, of(value));
 292  
     }
 293  
 
 294  
     public static PropertyFilter lte(String property, Value<?> value) {
 295  0
       return new PropertyFilter(property, Operator.LESS_THAN_OR_EQUAL, value);
 296  
     }
 297  
 
 298  
     public static PropertyFilter lte(String property, String value) {
 299  0
       return new PropertyFilter(property, Operator.LESS_THAN_OR_EQUAL, of(value));
 300  
     }
 301  
 
 302  
     public static PropertyFilter lte(String property, long value) {
 303  0
       return new PropertyFilter(property, Operator.LESS_THAN_OR_EQUAL, of(value));
 304  
     }
 305  
 
 306  
     public static PropertyFilter lte(String property, double value) {
 307  0
       return new PropertyFilter(property, Operator.LESS_THAN_OR_EQUAL, of(value));
 308  
     }
 309  
 
 310  
     public static PropertyFilter lte(String property, boolean value) {
 311  0
       return new PropertyFilter(property, Operator.LESS_THAN_OR_EQUAL, of(value));
 312  
     }
 313  
 
 314  
     public static PropertyFilter lte(String property, DateTime value) {
 315  0
       return new PropertyFilter(property, Operator.LESS_THAN_OR_EQUAL, of(value));
 316  
     }
 317  
 
 318  
     public static PropertyFilter lte(String property, Key value) {
 319  0
       return new PropertyFilter(property, Operator.LESS_THAN_OR_EQUAL, of(value));
 320  
     }
 321  
 
 322  
     public static PropertyFilter lte(String property, Blob value) {
 323  0
       return new PropertyFilter(property, Operator.LESS_THAN_OR_EQUAL, of(value));
 324  
     }
 325  
 
 326  
     public static PropertyFilter gt(String property, Value<?> value) {
 327  0
       return new PropertyFilter(property, Operator.GREATER_THAN, value);
 328  
     }
 329  
 
 330  
     public static PropertyFilter gt(String property, String value) {
 331  0
       return new PropertyFilter(property, Operator.GREATER_THAN, of(value));
 332  
     }
 333  
 
 334  
     public static PropertyFilter gt(String property, long value) {
 335  4
       return new PropertyFilter(property, Operator.GREATER_THAN, of(value));
 336  
     }
 337  
 
 338  
     public static PropertyFilter gt(String property, double value) {
 339  0
       return new PropertyFilter(property, Operator.GREATER_THAN, of(value));
 340  
     }
 341  
 
 342  
     public static PropertyFilter gt(String property, boolean value) {
 343  0
       return new PropertyFilter(property, Operator.GREATER_THAN, of(value));
 344  
     }
 345  
 
 346  
     public static PropertyFilter gt(String property, DateTime value) {
 347  0
       return new PropertyFilter(property, Operator.GREATER_THAN, of(value));
 348  
     }
 349  
 
 350  
     public static PropertyFilter gt(String property, Key value) {
 351  0
       return new PropertyFilter(property, Operator.GREATER_THAN, of(value));
 352  
     }
 353  
 
 354  
     public static PropertyFilter gt(String property, Blob value) {
 355  0
       return new PropertyFilter(property, Operator.GREATER_THAN, of(value));
 356  
     }
 357  
 
 358  
     public static PropertyFilter gte(String property, Value<?> value) {
 359  0
       return new PropertyFilter(property, Operator.GREATER_THAN_OR_EQUAL, value);
 360  
     }
 361  
 
 362  
     public static PropertyFilter gte(String property, String value) {
 363  0
       return new PropertyFilter(property, Operator.GREATER_THAN_OR_EQUAL, of(value));
 364  
     }
 365  
 
 366  
     public static PropertyFilter gte(String property, long value) {
 367  0
       return new PropertyFilter(property, Operator.GREATER_THAN_OR_EQUAL, of(value));
 368  
     }
 369  
 
 370  
     public static PropertyFilter gte(String property, double value) {
 371  0
       return new PropertyFilter(property, Operator.GREATER_THAN_OR_EQUAL, of(value));
 372  
     }
 373  
 
 374  
     public static PropertyFilter gte(String property, boolean value) {
 375  0
       return new PropertyFilter(property, Operator.GREATER_THAN_OR_EQUAL, of(value));
 376  
     }
 377  
 
 378  
     public static PropertyFilter gte(String property, DateTime value) {
 379  0
       return new PropertyFilter(property, Operator.GREATER_THAN_OR_EQUAL, of(value));
 380  
     }
 381  
 
 382  
     public static PropertyFilter gte(String property, Key value) {
 383  0
       return new PropertyFilter(property, Operator.GREATER_THAN_OR_EQUAL, of(value));
 384  
     }
 385  
 
 386  
     public static PropertyFilter gte(String property, Blob value) {
 387  0
       return new PropertyFilter(property, Operator.GREATER_THAN_OR_EQUAL, of(value));
 388  
     }
 389  
 
 390  
     public static PropertyFilter eq(String property, Value<?> value) {
 391  0
       return new PropertyFilter(property, Operator.EQUAL, value);
 392  
     }
 393  
 
 394  
     public static PropertyFilter eq(String property, String value) {
 395  4
       return new PropertyFilter(property, Operator.EQUAL, of(value));
 396  
     }
 397  
 
 398  
     public static PropertyFilter eq(String property, long value) {
 399  0
       return new PropertyFilter(property, Operator.EQUAL, of(value));
 400  
     }
 401  
 
 402  
     public static PropertyFilter eq(String property, double value) {
 403  0
       return new PropertyFilter(property, Operator.EQUAL, of(value));
 404  
     }
 405  
 
 406  
     public static PropertyFilter eq(String property, boolean value) {
 407  0
       return new PropertyFilter(property, Operator.EQUAL, of(value));
 408  
     }
 409  
 
 410  
     public static PropertyFilter eq(String property, DateTime value) {
 411  0
       return new PropertyFilter(property, Operator.EQUAL, of(value));
 412  
     }
 413  
 
 414  
     public static PropertyFilter eq(String property, Key value) {
 415  0
       return new PropertyFilter(property, Operator.EQUAL, of(value));
 416  
     }
 417  
 
 418  
     public static PropertyFilter eq(String property, Blob value) {
 419  0
       return new PropertyFilter(property, Operator.EQUAL, of(value));
 420  
     }
 421  
 
 422  
     public static PropertyFilter hasAncestor(Key key) {
 423  2
       return new PropertyFilter(KEY_PROPERTY_NAME, Operator.HAS_ANCESTOR, of(key));
 424  
     }
 425  
 
 426  
     public static PropertyFilter isNull(String property) {
 427  0
       return new PropertyFilter(property, Operator.EQUAL, NullValue.of());
 428  
     }
 429  
 
 430  
     @Override
 431  
     protected DatastoreV1.Filter toPb() {
 432  12
       DatastoreV1.Filter.Builder filterPb = DatastoreV1.Filter.newBuilder();
 433  12
       DatastoreV1.PropertyFilter.Builder propertyFilterPb = filterPb.getPropertyFilterBuilder();
 434  12
       propertyFilterPb.getPropertyBuilder().setName(property);
 435  12
       propertyFilterPb.setOperator(operator.toPb());
 436  12
       if (value != null) {
 437  12
         propertyFilterPb.setValue(value.toPb());
 438  
       }
 439  12
       return filterPb.build();
 440  
     }
 441  
   }
 442  
 
 443  
   public static final class OrderBy implements Serializable {
 444  
 
 445  
     private static final long serialVersionUID = 4091186784814400031L;
 446  
 
 447  
     private final String property;
 448  
     private final Direction direction;
 449  
 
 450  6
     public enum Direction {
 451  
 
 452  2
       ASCENDING, DESCENDING;
 453  
 
 454  
       DatastoreV1.PropertyOrder.Direction toPb() {
 455  6
         return DatastoreV1.PropertyOrder.Direction.valueOf(name());
 456  
       }
 457  
 
 458  
       static Direction fromPb(DatastoreV1.PropertyOrder.Direction directionPb) {
 459  2
         return valueOf(directionPb.name());
 460  
       }
 461  
     }
 462  
 
 463  8
     public OrderBy(String property, Direction direction) {
 464  8
       this.property = checkNotNull(property);
 465  8
       this.direction = checkNotNull(direction);
 466  8
     }
 467  
 
 468  
     @Override
 469  
     public int hashCode() {
 470  0
       return Objects.hash(property, direction);
 471  
     }
 472  
 
 473  
     @Override
 474  
     public boolean equals(Object obj) {
 475  2
       if (obj == this) {
 476  0
         return true;
 477  
       }
 478  2
       if (!(obj instanceof OrderBy)) {
 479  0
         return false;
 480  
       }
 481  2
       OrderBy other = (OrderBy) obj;
 482  2
       return property.equals(other.property)
 483  
           && direction == other.direction;
 484  
     }
 485  
 
 486  
     public String property() {
 487  0
       return property;
 488  
     }
 489  
 
 490  
     public Direction direction() {
 491  0
       return direction;
 492  
     }
 493  
 
 494  
     DatastoreV1.PropertyOrder toPb() {
 495  6
       return DatastoreV1.PropertyOrder.newBuilder()
 496  
           .setDirection(direction.toPb())
 497  
           .setProperty(DatastoreV1.PropertyReference.newBuilder().setName(property).build())
 498  
           .build();
 499  
     }
 500  
 
 501  
     public static OrderBy asc(String property) {
 502  6
       return new OrderBy(property, OrderBy.Direction.ASCENDING);
 503  
     }
 504  
 
 505  
     public static OrderBy desc(String property) {
 506  0
       return new OrderBy(property, OrderBy.Direction.DESCENDING);
 507  
     }
 508  
 
 509  
     static OrderBy fromPb(DatastoreV1.PropertyOrder propertyOrderPb) {
 510  2
       String property = propertyOrderPb.getProperty().getName();
 511  2
       Direction direction = Direction.fromPb(propertyOrderPb.getDirection());
 512  2
       return new OrderBy(property, direction);
 513  
     }
 514  
   }
 515  
 
 516  0
   public static final class Projection implements Serializable {
 517  
 
 518  
     private static final long serialVersionUID = 3083707957256279470L;
 519  
 
 520  
     private final Aggregate aggregate;
 521  
     private final String property;
 522  
 
 523  2
     public enum Aggregate {
 524  
 
 525  2
       FIRST;
 526  
 
 527  
       DatastoreV1.PropertyExpression.AggregationFunction toPb() {
 528  2
         return DatastoreV1.PropertyExpression.AggregationFunction.valueOf(name());
 529  
       }
 530  
 
 531  
       static Aggregate fromPb(DatastoreV1.PropertyExpression.AggregationFunction aggregatePb) {
 532  0
         return valueOf(aggregatePb.name());
 533  
       }
 534  
     }
 535  
 
 536  
     private Projection(Aggregate aggregate, String property) {
 537  
       this.aggregate = aggregate;
 538  
       this.property = property;
 539  
     }
 540  
 
 541  
     @Override
 542  
     public int hashCode() {
 543  0
       return Objects.hash(property, aggregate);
 544  
     }
 545  
 
 546  
     @Override
 547  
     public boolean equals(Object obj) {
 548  4
       if (obj == this) {
 549  0
         return true;
 550  
       }
 551  4
       if (!(obj instanceof Projection)) {
 552  0
         return false;
 553  
       }
 554  4
       Projection other = (Projection) obj;
 555  4
       return Objects.equals(property, other.property)
 556  
           && Objects.equals(aggregate, other.aggregate);
 557  
     }
 558  
 
 559  
     @Override
 560  
     public String toString() {
 561  0
       ToStringHelper toStringHelper = MoreObjects.toStringHelper(this);
 562  0
       toStringHelper.add("property", property);
 563  0
       if (aggregate != null) {
 564  0
         toStringHelper.add("aggregate", aggregate);
 565  
       }
 566  0
       return toStringHelper.toString();
 567  
     }
 568  
 
 569  
     DatastoreV1.PropertyExpression toPb() {
 570  50
       DatastoreV1.PropertyExpression.Builder expressionPb =
 571  
           DatastoreV1.PropertyExpression.newBuilder();
 572  50
       if (aggregate != null) {
 573  2
         expressionPb.setAggregationFunction(aggregate.toPb());
 574  
       }
 575  50
       expressionPb.setProperty(
 576  
           DatastoreV1.PropertyReference.newBuilder().setName(property).build());
 577  50
       return expressionPb.build();
 578  
     }
 579  
 
 580  
     public static Projection fromPb(DatastoreV1.PropertyExpression propertyExpressionPb) {
 581  4
       String property = propertyExpressionPb.getProperty().getName();
 582  4
       Aggregate aggregate = null;
 583  4
       if (propertyExpressionPb.hasAggregationFunction()) {
 584  0
         aggregate = Aggregate.fromPb(propertyExpressionPb.getAggregationFunction());
 585  
       }
 586  4
       return new Projection(aggregate, property);
 587  
     }
 588  
 
 589  
     public static Projection property(String property) {
 590  52
       return new Projection(null, property);
 591  
     }
 592  
 
 593  
     public static Projection aggregate(Aggregate aggregate, String property) {
 594  0
       return new Projection(aggregate, property);
 595  
     }
 596  
 
 597  
     public static Projection first(String property) {
 598  2
       return new Projection(Aggregate.FIRST, property);
 599  
     }
 600  
   }
 601  
 
 602  660
   static class BaseBuilder<V, B extends BaseBuilder<V, B>> {
 603  
 
 604  
     private final ResultType<V> resultType;
 605  
     private String namespace;
 606  
     private String kind;
 607  60
     private final List<Projection> projection = new LinkedList<>();
 608  
     private Filter filter;
 609  60
     private final List<String> groupBy = new LinkedList<>();
 610  60
     private final List<OrderBy> orderBy = new LinkedList<>();
 611  
     private Cursor startCursor;
 612  
     private Cursor endCursor;
 613  
     private int offset;
 614  
     private Integer limit;
 615  
 
 616  60
     BaseBuilder(ResultType<V> resultType) {
 617  60
       this.resultType = resultType;
 618  60
     }
 619  
 
 620  
     @SuppressWarnings("unchecked")
 621  
     B self() {
 622  254
       return (B) this;
 623  
     }
 624  
 
 625  
     public B namespace(String namespace) {
 626  8
       this.namespace = namespace;
 627  8
       return self();
 628  
     }
 629  
 
 630  
     public B kind(String kind) {
 631  22
       this.kind = kind;
 632  22
       return self();
 633  
     }
 634  
 
 635  
     public B startCursor(Cursor startCursor) {
 636  4
       this.startCursor = startCursor;
 637  4
       return self();
 638  
     }
 639  
 
 640  
     public B endCursor(Cursor endCursor) {
 641  4
       this.endCursor = endCursor;
 642  4
       return self();
 643  
     }
 644  
 
 645  
     public B offset(int offset) {
 646  4
       Preconditions.checkArgument(offset >= 0, "offset must not be negative");
 647  4
       this.offset = offset;
 648  4
       return self();
 649  
     }
 650  
 
 651  
     public B limit(Integer limit) {
 652  6
       Preconditions.checkArgument(limit == null || limit > 0, "limit must be positive");
 653  6
       this.limit = limit;
 654  6
       return self();
 655  
     }
 656  
 
 657  
     public B filter(Filter filter) {
 658  12
       this.filter = filter;
 659  12
       return self();
 660  
     }
 661  
 
 662  
     public B clearOrderBy() {
 663  4
       orderBy.clear();
 664  4
       return self();
 665  
     }
 666  
 
 667  
     public B orderBy(OrderBy orderBy, OrderBy... others) {
 668  4
       clearOrderBy();
 669  4
       addOrderBy(orderBy, others);
 670  4
       return self();
 671  
     }
 672  
 
 673  
     public B addOrderBy(OrderBy orderBy, OrderBy... others) {
 674  8
       this.orderBy.add(orderBy);
 675  8
       Collections.addAll(this.orderBy, others);
 676  8
       return self();
 677  
     }
 678  
 
 679  
     B clearProjection() {
 680  52
       projection.clear();
 681  52
       return self();
 682  
     }
 683  
 
 684  
     B projection(Projection projection, Projection... others) {
 685  52
       clearProjection();
 686  52
       addProjection(projection, others);
 687  52
       return self();
 688  
     }
 689  
 
 690  
     B addProjection(Projection projection, Projection... others) {
 691  56
       this.projection.add(projection);
 692  56
       Collections.addAll(this.projection, others);
 693  56
       return self();
 694  
     }
 695  
 
 696  
     B clearGroupBy() {
 697  4
       groupBy.clear();
 698  4
       return self();
 699  
     }
 700  
 
 701  
     B groupBy(String property, String... others) {
 702  2
       clearGroupBy();
 703  2
       addGroupBy(property, others);
 704  2
       return self();
 705  
     }
 706  
 
 707  
     B addGroupBy(String property, String... others) {
 708  6
       this.groupBy.add(property);
 709  6
       Collections.addAll(this.groupBy, others);
 710  6
       return self();
 711  
     }
 712  
 
 713  
     B mergeFrom(DatastoreV1.Query queryPb) {
 714  6
       if (queryPb.getKindCount() > 0) {
 715  6
         kind(queryPb.getKind(0).getName());
 716  
       }
 717  6
       if (queryPb.hasStartCursor()) {
 718  2
         startCursor(new Cursor(queryPb.getStartCursor()));
 719  
       }
 720  6
       if (queryPb.hasEndCursor()) {
 721  2
         endCursor(new Cursor(queryPb.getEndCursor()));
 722  
       }
 723  6
       if (queryPb.hasOffset()) {
 724  2
         offset(queryPb.getOffset());
 725  
       }
 726  6
       if (queryPb.hasLimit()) {
 727  2
         limit(queryPb.getLimit());
 728  
       }
 729  6
       if (queryPb.hasFilter()) {
 730  4
         filter(Filter.fromPb(queryPb.getFilter()));
 731  
       }
 732  6
       for (DatastoreV1.PropertyOrder orderByPb : queryPb.getOrderList()) {
 733  2
         addOrderBy(OrderBy.fromPb(orderByPb));
 734  2
       }
 735  6
       for (DatastoreV1.PropertyExpression projectionPb : queryPb.getProjectionList()) {
 736  4
         addProjection(Projection.fromPb(projectionPb));
 737  4
       }
 738  6
       for (DatastoreV1.PropertyReference groupByPb : queryPb.getGroupByList()) {
 739  2
         addGroupBy(groupByPb.getName());
 740  2
       }
 741  6
       return self();
 742  
     }
 743  
 
 744  
     public StructuredQuery<V> build() {
 745  0
       return new StructuredQuery<>(this);
 746  
     }
 747  
   }
 748  
 
 749  
   static final class Builder<V> extends BaseBuilder<V, Builder<V>> {
 750  
 
 751  
     Builder(ResultType<V> resultType) {
 752  
       super(resultType);
 753  
     }
 754  
   }
 755  
 
 756  
   public static final class EntityQueryBuilder extends BaseBuilder<Entity, EntityQueryBuilder> {
 757  
 
 758  
     EntityQueryBuilder() {
 759  8
       super(ResultType.ENTITY);
 760  8
     }
 761  
 
 762  
     @Override
 763  
     public StructuredQuery<Entity> build() {
 764  8
       return new StructuredQuery<>(this);
 765  
     }
 766  
   }
 767  
 
 768  2
   public static final class KeyQueryBuilder extends BaseBuilder<Key, KeyQueryBuilder> {
 769  
 
 770  
     KeyQueryBuilder() {
 771  44
       super(ResultType.KEY);
 772  44
       projection(Projection.property(KEY_PROPERTY_NAME));
 773  44
     }
 774  
 
 775  
     @Override
 776  
     protected KeyQueryBuilder mergeFrom(DatastoreV1.Query queryPb) {
 777  2
       super.mergeFrom(queryPb);
 778  2
       projection(Projection.property(KEY_PROPERTY_NAME));
 779  2
       clearGroupBy();
 780  2
       return this;
 781  
     }
 782  
 
 783  
     @Override
 784  
     public StructuredQuery<Key> build() {
 785  44
       return new StructuredQuery<>(this);
 786  
     }
 787  
   }
 788  
 
 789  20
   public static final class ProjectionEntityQueryBuilder
 790  
       extends BaseBuilder<ProjectionEntity, ProjectionEntityQueryBuilder> {
 791  
 
 792  
     ProjectionEntityQueryBuilder() {
 793  8
       super(ResultType.PROJECTION_ENTITY);
 794  8
     }
 795  
 
 796  
     @Override
 797  
     public StructuredQuery<ProjectionEntity> build() {
 798  8
       return new StructuredQuery<>(this);
 799  
     }
 800  
 
 801  
     @Override
 802  
     public ProjectionEntityQueryBuilder clearProjection() {
 803  6
       return super.clearProjection();
 804  
     }
 805  
 
 806  
     @Override
 807  
     public ProjectionEntityQueryBuilder projection(Projection projection, Projection... others) {
 808  6
       return super.projection(projection, others);
 809  
     }
 810  
 
 811  
     @Override
 812  
     public ProjectionEntityQueryBuilder addProjection(Projection projection, Projection... others) {
 813  8
       return super.addProjection(projection, others);
 814  
     }
 815  
 
 816  
     @Override
 817  
     public ProjectionEntityQueryBuilder clearGroupBy() {
 818  2
       return super.clearGroupBy();
 819  
     }
 820  
 
 821  
     @Override
 822  
     public ProjectionEntityQueryBuilder groupBy(String property, String... others) {
 823  2
       return super.groupBy(property, others);
 824  
     }
 825  
 
 826  
     @Override
 827  
     public ProjectionEntityQueryBuilder addGroupBy(String property, String... others) {
 828  6
       return super.addGroupBy(property, others);
 829  
     }
 830  
   }
 831  
 
 832  
   StructuredQuery(BaseBuilder<V, ?> builder) {
 833  60
     super(builder.resultType, builder.namespace);
 834  60
     kind = builder.kind;
 835  60
     projection = ImmutableList.copyOf(builder.projection);
 836  60
     filter = builder.filter;
 837  60
     groupBy = ImmutableList.copyOf(builder.groupBy);
 838  60
     orderBy = ImmutableList.copyOf(builder.orderBy);
 839  60
     startCursor = builder.startCursor;
 840  60
     endCursor = builder.endCursor;
 841  60
     offset = builder.offset;
 842  60
     limit = builder.limit;
 843  60
   }
 844  
 
 845  
   @Override
 846  
   public int hashCode() {
 847  0
     return Objects.hash(namespace(), kind, startCursor, endCursor, offset, limit, filter, orderBy,
 848  
         projection(), groupBy());
 849  
   }
 850  
 
 851  
   @Override
 852  
   public boolean equals(Object obj) {
 853  18
     if (obj == this) {
 854  12
       return true;
 855  
     }
 856  6
     if (!(obj instanceof StructuredQuery)) {
 857  0
       return false;
 858  
     }
 859  6
     StructuredQuery<?> other = (StructuredQuery<?>) obj;
 860  6
     return Objects.equals(namespace(), other.namespace())
 861  
         && Objects.equals(kind, other.kind)
 862  
         && Objects.equals(startCursor, other.startCursor)
 863  
         && Objects.equals(endCursor, other.endCursor)
 864  
         && Objects.equals(offset, other.offset)
 865  
         && Objects.equals(limit, other.limit)
 866  
         && Objects.equals(filter, other.filter)
 867  
         && Objects.equals(orderBy, other.orderBy)
 868  
         && Objects.equals(projection, other.projection)
 869  
         && Objects.equals(groupBy, other.groupBy);
 870  
 
 871  
   }
 872  
 
 873  
   public String kind() {
 874  0
     return kind;
 875  
   }
 876  
 
 877  
   boolean keyOnly() {
 878  0
     return projection.size() == 1 && KEY_PROPERTY_NAME.equals(projection.get(0).property);
 879  
   }
 880  
 
 881  
   public List<Projection> projection() {
 882  0
     return projection;
 883  
   }
 884  
 
 885  
   public Filter filter() {
 886  0
     return filter;
 887  
   }
 888  
 
 889  
   public List<String> groupBy() {
 890  0
     return groupBy;
 891  
   }
 892  
 
 893  
   public ImmutableList<OrderBy> orderBy() {
 894  0
     return orderBy;
 895  
   }
 896  
 
 897  
   public Cursor startCursor() {
 898  0
     return startCursor;
 899  
   }
 900  
 
 901  
   public Cursor endCursor() {
 902  0
     return endCursor;
 903  
   }
 904  
 
 905  
   public int offset() {
 906  0
     return offset;
 907  
   }
 908  
 
 909  
   public Integer limit() {
 910  0
     return limit;
 911  
   }
 912  
 
 913  
   @Override
 914  
   protected void populatePb(DatastoreV1.RunQueryRequest.Builder requestPb) {
 915  50
     requestPb.setQuery(toPb());
 916  50
   }
 917  
 
 918  
   @Override
 919  
   protected StructuredQuery<V> nextQuery(DatastoreV1.QueryResultBatch responsePb) {
 920  0
     Builder<V> builder = new Builder<>(type());
 921  0
     builder.mergeFrom(toPb());
 922  0
     builder.startCursor(new Cursor(responsePb.getEndCursor()));
 923  0
     if (offset > 0 && responsePb.getSkippedResults() < offset) {
 924  0
       builder.offset(offset - responsePb.getSkippedResults());
 925  
     } else {
 926  0
       builder.offset(0);
 927  0
       if (limit != null) {
 928  0
         builder.limit(limit - responsePb.getEntityResultCount());
 929  
       }
 930  
     }
 931  0
     return builder.build();
 932  
   }
 933  
 
 934  
   @Override
 935  
   protected DatastoreV1.Query toPb() {
 936  56
     DatastoreV1.Query.Builder queryPb = DatastoreV1.Query.newBuilder();
 937  56
     if (kind != null) {
 938  18
       queryPb.addKindBuilder().setName(kind);
 939  
     }
 940  56
     if (startCursor != null) {
 941  2
       queryPb.setStartCursor(startCursor.byteString());
 942  
     }
 943  56
     if (endCursor != null) {
 944  2
       queryPb.setEndCursor(endCursor.byteString());
 945  
     }
 946  56
     if (offset > 0) {
 947  2
       queryPb.setOffset(offset);
 948  
     }
 949  56
     if (limit != null) {
 950  4
       queryPb.setLimit(limit);
 951  
     }
 952  56
     if (filter != null) {
 953  10
       queryPb.setFilter(filter.toPb());
 954  
     }
 955  56
     for (OrderBy value : orderBy) {
 956  6
       queryPb.addOrder(value.toPb());
 957  6
     }
 958  56
     for (String value : groupBy) {
 959  4
       queryPb.addGroupBy(DatastoreV1.PropertyReference.newBuilder().setName(value).build());
 960  4
     }
 961  56
     for (Projection value : projection) {
 962  50
       queryPb.addProjection(value.toPb());
 963  50
     }
 964  56
     return queryPb.build();
 965  
   }
 966  
 
 967  
   @Override
 968  
   protected Object fromPb(ResultType<V> resultType, String namespace, byte[] bytesPb)
 969  
       throws InvalidProtocolBufferException {
 970  6
     return fromPb(resultType, namespace, DatastoreV1.Query.parseFrom(bytesPb));
 971  
   }
 972  
 
 973  
   private static StructuredQuery<?> fromPb(ResultType<?> resultType, String namespace,
 974  
       DatastoreV1.Query queryPb) {
 975  
     BaseBuilder<?, ?> builder;
 976  6
     if (resultType.equals(ResultType.ENTITY)) {
 977  2
       builder = new EntityQueryBuilder();
 978  4
     } else if (resultType.equals(ResultType.KEY)) {
 979  2
       builder = new KeyQueryBuilder();
 980  
     } else {
 981  2
       builder = new ProjectionEntityQueryBuilder();
 982  
     }
 983  6
     return builder.namespace(namespace).mergeFrom(queryPb).build();
 984  
   }
 985  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.Transaction.html b/cobertura/com.google.gcloud.datastore.Transaction.html deleted file mode 100644 index cc5101127af4..000000000000 --- a/cobertura/com.google.gcloud.datastore.Transaction.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.Transaction
-
 
- - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Transaction
N/A
N/A
1
Transaction$Response
N/A
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import java.util.Iterator;
 20  
 import java.util.List;
 21  
 
 22  
 /**
 23  
  * A Google cloud datastore transaction.
 24  
  * Similar to {@link Batch} any write operation that is applied on a transaction will only be sent
 25  
  * to the Datastore upon {@link #commit}. A call to {@link #rollback} will invalidate
 26  
  * the transaction and discard the changes. Any read operation that is done by a transaction
 27  
  * will be part of it and therefore a {@code commit} is guaranteed to fail if an entity
 28  
  * was modified outside of the transaction after it was read. Write operation on this
 29  
  * transaction will not be reflected by read operation (as the changes are only sent to
 30  
  * the Datastore upon {@code commit}.
 31  
  * A usage example:
 32  
  * <pre> {@code
 33  
  *   Transaction transaction = datastore.newTransaction();
 34  
  *   try {
 35  
  *     Entity entity = transaction.get(key);
 36  
  *     if (!entity.contains("last_name") || entity.isNull("last_name")) {
 37  
  *       String[] name = entity.getString("name").split(" ");
 38  
  *       entity = Entity.builder(entity).remove("name").set("first_name", name[0])
 39  
  *           .set("last_name", name[1]).build();
 40  
  *       transaction.update(entity);
 41  
  *       transaction.commit();
 42  
  *     }
 43  
  *   } finally {
 44  
  *     if (transaction.active()) {
 45  
  *       transaction.rollback();
 46  
  *     }
 47  
  *   }
 48  
  * } </pre>
 49  
  *
 50  
  * @see <a href="https://cloud.google.com/datastore/docs/concepts/transactions">Google Cloud Datastore transactions</a>
 51  
  *
 52  
  */
 53  
 public interface Transaction extends DatastoreBatchWriter, DatastoreReaderWriter {
 54  
 
 55  
   interface Response {
 56  
     List<Key> generatedKeys();
 57  
   }
 58  
 
 59  
   /**
 60  
    * {@inheritDoc}
 61  
    * The requested entity will be part of this Datastore transaction (so a commit is guaranteed
 62  
    * to fail if entity was changed by others after it was seen by this transaction) but any
 63  
    * write changes in this transaction will not be reflected by the returned entity.
 64  
    *
 65  
    * @throws DatastoreServiceException upon failure or if no longer active
 66  
    */
 67  
   @Override
 68  
   Entity get(Key key);
 69  
 
 70  
   /**
 71  
    * {@inheritDoc}
 72  
    * The requested entities will be part of this Datastore transaction (so a commit is guaranteed
 73  
    * to fail if any of the entities was changed by others after they were seen by this transaction)
 74  
    * but any write changes in this transaction will not be reflected by the returned entities.
 75  
    *
 76  
    * @throws DatastoreServiceException upon failure or if no longer active
 77  
    */
 78  
   @Override
 79  
   Iterator<Entity> get(Key... key);
 80  
 
 81  
   /**
 82  
    * {@inheritDoc}
 83  
    * The requested entities will be part of this Datastore transaction (so a commit is guaranteed
 84  
    * to fail if any of the entities was changed by others after they were seen by this transaction)
 85  
    * but any write changes in this transaction will not be reflected by the returned entities.
 86  
    *
 87  
    * @throws DatastoreServiceException upon failure or if no longer active
 88  
    */
 89  
   @Override
 90  
   List<Entity> fetch(Key... keys);
 91  
 
 92  
   /**
 93  
    * {@inheritDoc}
 94  
    * The entities returned by the result of this query will be part of this Datastore transaction
 95  
    * (so a commit is guaranteed to fail if any of the entities was changed by others after the
 96  
    * query was performed) but any write changes in this transaction will not be reflected by
 97  
    * the result.
 98  
    *
 99  
    * @throws DatastoreServiceException upon failure or if no longer active
 100  
    */
 101  
   @Override
 102  
   <T> QueryResults<T> run(Query<T> query);
 103  
 
 104  
   /**
 105  
    * Commit the transaction.
 106  
    *
 107  
    * @throws DatastoreServiceException if could not commit the transaction or if no longer active
 108  
    */
 109  
   Response commit();
 110  
 
 111  
   /**
 112  
    * Rollback the transaction.
 113  
    *
 114  
    * @throws DatastoreServiceException if transaction was already committed
 115  
    */
 116  
   void rollback();
 117  
 
 118  
   /**
 119  
    * Returns {@code true} if the transaction is still active (was not committed or rolledback).
 120  
    */
 121  
   @Override
 122  
   boolean active();
 123  
 
 124  
   /**
 125  
    * Returns the transaction associated {@link DatastoreService}.
 126  
    */
 127  
   DatastoreService datastore();
 128  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.TransactionImpl.html b/cobertura/com.google.gcloud.datastore.TransactionImpl.html deleted file mode 100644 index d48c7be8daad..000000000000 --- a/cobertura/com.google.gcloud.datastore.TransactionImpl.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.TransactionImpl
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
TransactionImpl
87%
36/41
50%
5/10
1.455
TransactionImpl$ResponseImpl
0%
0/1
N/A
1.455
TransactionImpl$ResponseImpl$1
0%
0/2
N/A
1.455
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.api.services.datastore.DatastoreV1;
 20  
 import com.google.common.base.Function;
 21  
 import com.google.common.collect.Lists;
 22  
 import com.google.gcloud.datastore.TransactionOption.ForceWrites;
 23  
 import com.google.gcloud.datastore.TransactionOption.IsolationLevel;
 24  
 import com.google.protobuf.ByteString;
 25  
 
 26  
 import java.util.Iterator;
 27  
 import java.util.List;
 28  
 import java.util.Map;
 29  
 
 30  
 final class TransactionImpl extends BaseDatastoreBatchWriter implements Transaction {
 31  
 
 32  
   private final DatastoreServiceImpl datastore;
 33  
   private final ByteString transaction;
 34  
   private final boolean force;
 35  
   private boolean rolledback;
 36  
 
 37  
   static class ResponseImpl implements Transaction.Response {
 38  
 
 39  
     private final DatastoreV1.CommitResponse response;
 40  
 
 41  
     public ResponseImpl(DatastoreV1.CommitResponse response) {
 42  
       this.response = response;
 43  
     }
 44  
 
 45  
     @Override
 46  
     public List<Key> generatedKeys() {
 47  0
       return Lists.transform(response.getMutationResult().getInsertAutoIdKeyList(),
 48  0
           new Function<DatastoreV1.Key, Key>() {
 49  
             @Override public Key apply(DatastoreV1.Key keyPb) {
 50  0
               return Key.fromPb(keyPb);
 51  
             }
 52  
           });
 53  
     }
 54  
   }
 55  
 
 56  
   TransactionImpl(DatastoreServiceImpl datastore, TransactionOption... options) {
 57  12
     super("transaction");
 58  12
     this.datastore = datastore;
 59  12
     DatastoreV1.BeginTransactionRequest.Builder requestPb =
 60  
         DatastoreV1.BeginTransactionRequest.newBuilder();
 61  12
     Map<Class<? extends TransactionOption>, TransactionOption> optionsMap =
 62  
         TransactionOption.asImmutableMap(options);
 63  12
     IsolationLevel isolationLevel = (IsolationLevel) optionsMap.get(IsolationLevel.class);
 64  12
     if (isolationLevel != null) {
 65  0
       requestPb.setIsolationLevel(isolationLevel.level().toPb());
 66  
     }
 67  12
     ForceWrites forceWrites = (ForceWrites) optionsMap.get(TransactionOption.ForceWrites.class);
 68  12
     force = forceWrites != null && forceWrites.force();
 69  12
     transaction = datastore.requestTransactionId(requestPb);
 70  12
   }
 71  
 
 72  
   @Override
 73  
   public Entity get(Key key) {
 74  4
     return DatastoreHelper.get(this, key);
 75  
   }
 76  
 
 77  
   @Override
 78  
   public Iterator<Entity> get(Key... keys) {
 79  4
     validateActive();
 80  4
     DatastoreV1.ReadOptions.Builder readOptionsPb = DatastoreV1.ReadOptions.newBuilder();
 81  4
     readOptionsPb.setTransaction(transaction);
 82  4
     return datastore.get(readOptionsPb.build(), keys);
 83  
   }
 84  
 
 85  
   @Override
 86  
   public List<Entity> fetch(Key... keys) {
 87  0
     validateActive();
 88  0
     return DatastoreHelper.fetch(this, keys);
 89  
   }
 90  
 
 91  
   @Override
 92  
   public <T> QueryResults<T> run(Query<T> query) {
 93  4
     validateActive();
 94  4
     DatastoreV1.ReadOptions.Builder readOptionsPb = DatastoreV1.ReadOptions.newBuilder();
 95  4
     readOptionsPb.setTransaction(transaction);
 96  4
     return datastore.run(readOptionsPb.build(), query);
 97  
   }
 98  
 
 99  
   @Override
 100  
   public Transaction.Response commit() {
 101  14
     validateActive();
 102  10
     DatastoreV1.Mutation.Builder mutationPb = toMutationPb();
 103  10
     if (force) {
 104  0
       mutationPb.setForce(force);
 105  
     }
 106  10
     DatastoreV1.CommitRequest.Builder requestPb = DatastoreV1.CommitRequest.newBuilder();
 107  10
     requestPb.setMode(DatastoreV1.CommitRequest.Mode.TRANSACTIONAL);
 108  10
     requestPb.setTransaction(transaction);
 109  10
     requestPb.setMutation(mutationPb);
 110  10
     DatastoreV1.CommitResponse responsePb = datastore.commit(requestPb.build());
 111  6
     deactivate();
 112  6
     return new ResponseImpl(responsePb);
 113  
   }
 114  
 
 115  
   @Override
 116  
   public void rollback() {
 117  6
     if (rolledback) {
 118  2
       return;
 119  
     }
 120  4
     validateActive();
 121  2
     datastore.rollbackTransaction(transaction);
 122  2
     deactivate();
 123  2
     rolledback = true;
 124  2
   }
 125  
 
 126  
   @Override
 127  
   public DatastoreService datastore() {
 128  0
     return datastore;
 129  
   }
 130  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.TransactionOption.html b/cobertura/com.google.gcloud.datastore.TransactionOption.html deleted file mode 100644 index eba12cde79fb..000000000000 --- a/cobertura/com.google.gcloud.datastore.TransactionOption.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.TransactionOption
-
 
- - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
TransactionOption
42%
3/7
50%
1/2
1.071
TransactionOption$ForceWrites
0%
0/2
N/A
1.071
TransactionOption$IsolationLevel
0%
0/2
N/A
1.071
TransactionOption$IsolationLevel$Level
0%
0/4
N/A
1.071
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.api.services.datastore.DatastoreV1;
 20  
 import com.google.common.collect.ImmutableMap;
 21  
 
 22  
 import java.io.Serializable;
 23  
 import java.util.Map;
 24  
 
 25  
 
 26  
 public abstract class TransactionOption implements Serializable {
 27  
 
 28  
   private static final long serialVersionUID = -1862234444015690375L;
 29  
 
 30  
   public static final class ForceWrites extends TransactionOption {
 31  
 
 32  
     private static final long serialVersionUID = -6873967516988380886L;
 33  
 
 34  
     private final boolean force;
 35  
 
 36  
     public ForceWrites(boolean force) {
 37  
       this.force = force;
 38  
     }
 39  
 
 40  
     public boolean force() {
 41  0
       return force;
 42  
     }
 43  
 
 44  
     @Override
 45  
     BatchOption toBatchWriteOption() {
 46  0
       return new BatchOption.ForceWrites(force);
 47  
     }
 48  
   }
 49  
 
 50  
   public static final class IsolationLevel extends TransactionOption {
 51  
 
 52  
     private static final long serialVersionUID = -5592165378565409515L;
 53  
 
 54  
     private final Level level;
 55  
 
 56  0
     public enum Level {
 57  
 
 58  0
       SERIALIZABLE(DatastoreV1.BeginTransactionRequest.IsolationLevel.SERIALIZABLE),
 59  0
       SNAPSHOT(DatastoreV1.BeginTransactionRequest.IsolationLevel.SNAPSHOT);
 60  
 
 61  
       private final DatastoreV1.BeginTransactionRequest.IsolationLevel levelPb;
 62  
 
 63  
       Level(DatastoreV1.BeginTransactionRequest.IsolationLevel levelPb) {
 64  
         this.levelPb = levelPb;
 65  
       }
 66  
 
 67  
       DatastoreV1.BeginTransactionRequest.IsolationLevel toPb() {
 68  0
         return levelPb;
 69  
       }
 70  
     }
 71  
 
 72  
     public IsolationLevel(Level level) {
 73  
       this.level = level;
 74  
     }
 75  
 
 76  
 
 77  
     public Level level() {
 78  0
       return level;
 79  
     }
 80  
 
 81  
     @Override
 82  
     BatchOption toBatchWriteOption() {
 83  0
       return null;
 84  
     }
 85  
   }
 86  
 
 87  
   TransactionOption() {
 88  
     // package protected
 89  
   }
 90  
 
 91  
   public static ForceWrites forceWrites() {
 92  0
     return new ForceWrites(true);
 93  
   }
 94  
 
 95  
   public static IsolationLevel serializable() {
 96  0
     return new IsolationLevel(IsolationLevel.Level.SERIALIZABLE);
 97  
   }
 98  
 
 99  
   public static IsolationLevel snapshot() {
 100  0
     return new IsolationLevel(IsolationLevel.Level.SNAPSHOT);
 101  
   }
 102  
 
 103  
   static Map<Class<? extends TransactionOption>, TransactionOption> asImmutableMap(
 104  
       TransactionOption... options) {
 105  12
     ImmutableMap.Builder<Class<? extends TransactionOption>, TransactionOption> builder =
 106  
         ImmutableMap.builder();
 107  12
     for (TransactionOption option : options) {
 108  0
       builder.put(option.getClass(), option);
 109  
     }
 110  12
     return builder.build();
 111  
   }
 112  
 
 113  
   abstract BatchOption toBatchWriteOption();
 114  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.Validator.html b/cobertura/com.google.gcloud.datastore.Validator.html deleted file mode 100644 index a6c0b78ccee6..000000000000 --- a/cobertura/com.google.gcloud.datastore.Validator.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.Validator
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Validator
100%
12/12
70%
7/10
1.25
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkArgument;
 20  
 
 21  
 import com.google.common.base.Strings;
 22  
 
 23  
 import java.util.regex.Pattern;
 24  
 
 25  
 /**
 26  
  * Utility to validate Datastore type/values.
 27  
  */
 28  
 final class Validator {
 29  
 
 30  2
   private static final Pattern PROJECT_ID_PATTERN = Pattern.compile(
 31  
       "([a-z\\d\\-]{1,100}~)?([a-z\\d][a-z\\d\\-\\.]{0,99}:)?([a-z\\d][a-z\\d\\-]{0,99})");
 32  
   private static final int MAX_NAMESPACE_LENGTH = 100;
 33  2
   private static final Pattern NAMESPACE_PATTERN =
 34  
       Pattern.compile(String.format("[0-9A-Za-z\\._\\-]{0,%d}", MAX_NAMESPACE_LENGTH));
 35  
 
 36  
   private Validator() {
 37  
     // utility class
 38  
   }
 39  
 
 40  
   static String validateDatabase(String projectId) {
 41  120
     checkArgument(!Strings.isNullOrEmpty(projectId), "projectId can't be empty or null");
 42  120
     checkArgument(PROJECT_ID_PATTERN.matcher(projectId).matches(),
 43  
         "projectId must match the following pattern: " + PROJECT_ID_PATTERN.pattern());
 44  116
     return projectId;
 45  
   }
 46  
 
 47  
   static String validateNamespace(String namespace) {
 48  58
     if (namespace != null) {
 49  30
       checkArgument(!namespace.isEmpty(), "namespace must not be an empty string");
 50  30
       checkArgument(namespace.length() <= MAX_NAMESPACE_LENGTH,
 51  
           "namespace must not contain more than 100 characters");
 52  30
       checkArgument(NAMESPACE_PATTERN.matcher(namespace).matches(),
 53  
           "namespace must the following pattern: " + NAMESPACE_PATTERN.pattern());
 54  
     }
 55  58
     return namespace;
 56  
   }
 57  
 
 58  
   static String validateKind(String kind) {
 59  116
     checkArgument(!Strings.isNullOrEmpty(kind), "kind must not be empty or null");
 60  112
     return kind;
 61  
   }
 62  
 
 63  
 
 64  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.Value.html b/cobertura/com.google.gcloud.datastore.Value.html deleted file mode 100644 index 5f6f5f7a603f..000000000000 --- a/cobertura/com.google.gcloud.datastore.Value.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.Value
-
 
- - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Value
93%
28/30
77%
17/22
1.552
Value$BaseBuilder
100%
12/12
N/A
1.552
Value$BaseMarshaller
100%
13/13
100%
8/8
1.552
Value$BuilderFactory
N/A
N/A
1.552
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkNotNull;
 20  
 
 21  
 import com.google.api.services.datastore.DatastoreV1;
 22  
 import com.google.protobuf.Descriptors.FieldDescriptor;
 23  
 import com.google.protobuf.InvalidProtocolBufferException;
 24  
 
 25  
 import java.util.Map.Entry;
 26  
 import java.util.Objects;
 27  
 
 28  
 /**
 29  
  * Base class for all Google Cloud Datastore value types.
 30  
  * All values must be associated with a non-null content (except {@link NullValue}).
 31  
  * All values are immutable (including their content). To edit (a copy) use {@link #toBuilder()}.
 32  
  * Unsupported value (deprecated or unrecognized) would be represented by {@link RawValue}.
 33  
  *
 34  
  * @param <V> the type of the content for this value
 35  
  */
 36  26
 public abstract class Value<V> extends Serializable<DatastoreV1.Value> {
 37  
 
 38  
   private static final long serialVersionUID = -1899638277588872742L;
 39  
 
 40  
 
 41  
   private final transient ValueType valueType;
 42  
   private final transient Boolean indexed;
 43  
   private final transient Integer meaning;
 44  
   private final transient V value;
 45  
 
 46  
   interface BuilderFactory<V, P extends Value<V>, B extends ValueBuilder<V, P, B>>
 47  
       extends java.io.Serializable {
 48  
     B newBuilder(V value);
 49  
   }
 50  
 
 51  
   abstract static class BaseMarshaller<V, P extends Value<V>, B extends ValueBuilder<V, P, B>>
 52  
       implements ValueMarshaller<V, P, B>, BuilderFactory<V, P, B> {
 53  
 
 54  
     private static final long serialVersionUID = 2880767488942992985L;
 55  
 
 56  
     @SuppressWarnings("deprecation")
 57  
     @Override
 58  
     public final B fromProto(DatastoreV1.Value proto) {
 59  1262
       B builder = newBuilder(getValue(proto));
 60  1262
       if (proto.hasIndexed()) {
 61  382
         builder.indexed(proto.getIndexed());
 62  
       }
 63  1262
       if (proto.hasMeaning()) {
 64  20
         builder.meaning(proto.getMeaning());
 65  
       }
 66  1262
       return builder;
 67  
     }
 68  
 
 69  
     @SuppressWarnings("deprecation")
 70  
     @Override
 71  
     public final DatastoreV1.Value toProto(P value) {
 72  1900
       DatastoreV1.Value.Builder builder = DatastoreV1.Value.newBuilder();
 73  1900
       if (value.hasIndexed()) {
 74  558
         builder.setIndexed(value.indexed());
 75  
       }
 76  1900
       if (value.hasMeaning()) {
 77  12
         builder.setMeaning(value.meaning());
 78  
       }
 79  1900
       setValue(value, builder);
 80  1900
       return builder.build();
 81  
     }
 82  
 
 83  
     protected abstract V getValue(DatastoreV1.Value from);
 84  
 
 85  
     protected abstract void setValue(P from, DatastoreV1.Value.Builder to);
 86  
   }
 87  
 
 88  292
   @SuppressWarnings("deprecation")
 89  
   abstract static class BaseBuilder<V, P extends Value<V>, B extends BaseBuilder<V, P, B>>
 90  
       implements ValueBuilder<V, P, B> {
 91  
 
 92  
     private final ValueType valueType;
 93  
     private Boolean indexed;
 94  
     private Integer meaning;
 95  
     private V value;
 96  
 
 97  
     BaseBuilder(ValueType valueType) {
 98  
       this.valueType = valueType;
 99  
     }
 100  
 
 101  
     @Override
 102  
     public ValueType getValueType() {
 103  
       return valueType;
 104  
     }
 105  
 
 106  
     @Override
 107  
     public B mergeFrom(P other) {
 108  24
       indexed = other.indexed();
 109  24
       meaning = other.meaning();
 110  24
       set(other.get());
 111  24
       return self();
 112  
     }
 113  
 
 114  
     @Override
 115  
     public Boolean getIndexed() {
 116  
       return indexed;
 117  
     }
 118  
 
 119  
     @Override
 120  
     public B indexed(boolean indexed) {
 121  634
       this.indexed = indexed;
 122  634
       return self();
 123  
     }
 124  
 
 125  
     @Override
 126  
     public Integer getMeaning() {
 127  
       return meaning;
 128  
     }
 129  
 
 130  
     @Override
 131  
     public B meaning(Integer meaning) {
 132  64
       this.meaning = meaning;
 133  64
       return self();
 134  
     }
 135  
 
 136  
     @Override
 137  
     public V get() {
 138  
       return value;
 139  
     }
 140  
 
 141  
     @Override
 142  
     public B set(V value) {
 143  1680
       this.value = checkNotNull(value);
 144  1680
       return self();
 145  
     }
 146  
 
 147  
     @SuppressWarnings("unchecked")
 148  
     private B self() {
 149  2402
       return (B) this;
 150  
     }
 151  
 
 152  
     @Override
 153  
     public abstract P build();
 154  
   }
 155  
 
 156  2290
   <P extends Value<V>, B extends BaseBuilder<V, P, B>> Value(ValueBuilder<V, P, B> builder) {
 157  2290
     valueType = builder.getValueType();
 158  2290
     indexed = builder.getIndexed();
 159  2290
     meaning = builder.getMeaning();
 160  2290
     value = builder.get();
 161  2290
   }
 162  
 
 163  
   public final ValueType type() {
 164  2546
     return valueType;
 165  
   }
 166  
 
 167  
   public final boolean hasIndexed() {
 168  1974
     return indexed != null;
 169  
   }
 170  
 
 171  
   public final Boolean indexed() {
 172  634
     return indexed;
 173  
   }
 174  
 
 175  
   @Deprecated
 176  
   public final boolean hasMeaning() {
 177  1978
     return meaning != null;
 178  
   }
 179  
 
 180  
   @Deprecated
 181  
   public final Integer meaning() {
 182  90
     return meaning;
 183  
   }
 184  
 
 185  
   public final V get() {
 186  
     return value;
 187  
   }
 188  
 
 189  
   public abstract ValueBuilder<?, ?, ?> toBuilder();
 190  
 
 191  
   @Override
 192  
   public int hashCode() {
 193  0
     return Objects.hash(valueType, indexed, meaning, value);
 194  
   }
 195  
 
 196  
   @Override
 197  
   @SuppressWarnings("unchecked")
 198  
   public boolean equals(Object obj) {
 199  1416
     if (obj == this) {
 200  82
       return true;
 201  
     }
 202  1334
     if (!getClass().isInstance(obj)) {
 203  0
       return false;
 204  
     }
 205  1334
     Value<V> other = (Value<V>) obj;
 206  1334
     return Objects.equals(valueType, other.valueType)
 207  
         && Objects.equals(indexed, other.indexed)
 208  
         && Objects.equals(meaning, other.meaning)
 209  
         && Objects.equals(value, other.value);
 210  
   }
 211  
 
 212  
   @Override
 213  
   @SuppressWarnings("unchecked")
 214  
   protected DatastoreV1.Value toPb() {
 215  1900
     return type().getMarshaller().toProto(this);
 216  
   }
 217  
 
 218  
   static Value<?> fromPb(DatastoreV1.Value proto) {
 219  1262
     for (Entry<FieldDescriptor, Object> entry : proto.getAllFields().entrySet()) {
 220  1104
       FieldDescriptor descriptor = entry.getKey();
 221  1104
       if (descriptor.getName().endsWith("_value")) {
 222  1088
         ValueType valueType = ValueType.getByDescriptorId(descriptor.getNumber());
 223  1088
         if (valueType == null) {
 224  
           // unsupported type
 225  2
           return RawValue.MARSHALLER.fromProto(proto).build();
 226  
         }
 227  1086
         return valueType.getMarshaller().fromProto(proto).build();
 228  
       }
 229  16
     }
 230  174
     return NullValue.MARSHALLER.fromProto(proto).build();
 231  
   }
 232  
 
 233  
   @Override
 234  
   protected Object fromPb(byte[] bytesPb) throws InvalidProtocolBufferException {
 235  26
     return fromPb(DatastoreV1.Value.parseFrom(bytesPb));
 236  
   }
 237  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.ValueBuilder.html b/cobertura/com.google.gcloud.datastore.ValueBuilder.html deleted file mode 100644 index cacaacaebdc6..000000000000 --- a/cobertura/com.google.gcloud.datastore.ValueBuilder.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.ValueBuilder
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
ValueBuilder
N/A
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 /**
 20  
  * A common interface for Value builders.
 21  
  */
 22  
 interface ValueBuilder<V, P extends Value<V>, B extends ValueBuilder<V, P, B>> {
 23  
 
 24  
   ValueType getValueType();
 25  
 
 26  
   B mergeFrom(P other);
 27  
 
 28  
   Boolean getIndexed();
 29  
 
 30  
   B indexed(boolean indexed);
 31  
 
 32  
   Integer getMeaning();
 33  
 
 34  
   @Deprecated
 35  
   B meaning(Integer meaning);
 36  
 
 37  
   V get();
 38  
 
 39  
   B set(V value);
 40  
 
 41  
   P build();
 42  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.ValueMarshaller.html b/cobertura/com.google.gcloud.datastore.ValueMarshaller.html deleted file mode 100644 index f4ab937b63da..000000000000 --- a/cobertura/com.google.gcloud.datastore.ValueMarshaller.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.ValueMarshaller
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
ValueMarshaller
N/A
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.api.services.datastore.DatastoreV1;
 20  
 
 21  
 /**
 22  
  * A common interface for Value marshallers.
 23  
  */
 24  
 interface ValueMarshaller<V, P extends Value<V>, B extends ValueBuilder<V, P, B>>
 25  
     extends java.io.Serializable {
 26  
 
 27  
   B fromProto(DatastoreV1.Value proto);
 28  
 
 29  
   DatastoreV1.Value toProto(P value);
 30  
 
 31  
   int getProtoFieldId();
 32  
 }
- - - - diff --git a/cobertura/com.google.gcloud.datastore.ValueType.html b/cobertura/com.google.gcloud.datastore.ValueType.html deleted file mode 100644 index 8b69e654c743..000000000000 --- a/cobertura/com.google.gcloud.datastore.ValueType.html +++ /dev/null @@ -1,226 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.datastore.ValueType
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
ValueType
100%
20/20
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.datastore;
 18  
 
 19  
 import com.google.common.collect.ImmutableMap;
 20  
 
 21  
 /**
 22  
  * The type of a Datastore property.
 23  
  *
 24  
  * @see <a href="http://cloud.google.com/datastore/docs/concepts/entities#Datastore_Properties_and_value_types">Google Cloud Datastore types</a>
 25  
  */
 26  22
 public enum ValueType {
 27  
 
 28  
   /**
 29  
    * Represents a {@code null} value.
 30  
    */
 31  2
   NULL(NullValue.MARSHALLER),
 32  
 
 33  
   /**
 34  
    * Represents a {@code string} value.
 35  
    */
 36  2
   STRING(StringValue.MARSHALLER),
 37  
 
 38  
   /**
 39  
    * Represents an entity value.
 40  
    */
 41  2
   ENTITY(EntityValue.MARSHALLER),
 42  
 
 43  
   /**
 44  
    * Represents a {@code list} of {@link Value}s.
 45  
    */
 46  2
   LIST(ListValue.MARSHALLER),
 47  
 
 48  
   /**
 49  
    * Represents a {@code key} as a value.
 50  
    */
 51  2
   KEY(KeyValue.MARSHALLER),
 52  
 
 53  
   /**
 54  
    * Represents a {@code long} value.
 55  
    */
 56  2
   LONG(LongValue.MARSHALLER),
 57  
 
 58  
   /**
 59  
    * Represents a {@code double} value.
 60  
    */
 61  2
   DOUBLE(DoubleValue.MARSHALLER),
 62  
 
 63  
   /**
 64  
    * Represents a {@code boolean} value.
 65  
    */
 66  2
   BOOLEAN(BooleanValue.MARSHALLER),
 67  
 
 68  
   /**
 69  
    * Represents a {@link DateTime} value.
 70  
    */
 71  2
   DATE_TIME(DateTimeValue.MARSHALLER),
 72  
 
 73  
   /**
 74  
    * Represents a {@link Blob} value.
 75  
    */
 76  2
   BLOB(BlobValue.MARSHALLER),
 77  
 
 78  
   /**
 79  
    * Represents a raw/unparsed value.
 80  
    */
 81  2
   RAW_VALUE(RawValue.MARSHALLER);
 82  
 
 83  
 
 84  
   private static final ImmutableMap<Integer, ValueType> DESCRIPTOR_TO_TYPE_MAP;
 85  
 
 86  
   @SuppressWarnings("rawtypes") private final ValueMarshaller marshaller;
 87  
 
 88  
   static {
 89  2
     ImmutableMap.Builder<Integer, ValueType> builder = ImmutableMap.builder();
 90  24
     for (ValueType valueType : ValueType.values()) {
 91  22
       int fieldId = valueType.getMarshaller().getProtoFieldId();
 92  22
       if (fieldId > 0) {
 93  18
         builder.put(fieldId, valueType);
 94  
       }
 95  
     }
 96  2
     DESCRIPTOR_TO_TYPE_MAP = builder.build();
 97  2
   }
 98  
 
 99  
 
 100  
   <V, P extends Value<V>, B extends ValueBuilder<V, P, B>> ValueType(ValueMarshaller<V, P, B> marshaller) {
 101  
     this.marshaller = marshaller;
 102  
   }
 103  
 
 104  
   ValueMarshaller getMarshaller() {
 105  
     return marshaller;
 106  
   }
 107  
 
 108  
   static ValueType getByDescriptorId(int descriptorId) {
 109  1088
     return DESCRIPTOR_TO_TYPE_MAP.get(descriptorId);
 110  
   }
 111  
 }
- - - - diff --git a/cobertura/com.google.gcloud.spi.DatastoreRpc.html b/cobertura/com.google.gcloud.spi.DatastoreRpc.html deleted file mode 100644 index 33fe1ae1a257..000000000000 --- a/cobertura/com.google.gcloud.spi.DatastoreRpc.html +++ /dev/null @@ -1,243 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.spi.DatastoreRpc
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DatastoreRpc
N/A
N/A
1
DatastoreRpc$DatastoreRpcException
80%
4/5
N/A
1
DatastoreRpc$DatastoreRpcException$Reason
100%
12/12
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 package com.google.gcloud.spi;
 17  
 
 18  
 import com.google.api.services.datastore.DatastoreV1.AllocateIdsRequest;
 19  
 import com.google.api.services.datastore.DatastoreV1.AllocateIdsResponse;
 20  
 import com.google.api.services.datastore.DatastoreV1.BeginTransactionRequest;
 21  
 import com.google.api.services.datastore.DatastoreV1.BeginTransactionResponse;
 22  
 import com.google.api.services.datastore.DatastoreV1.CommitRequest;
 23  
 import com.google.api.services.datastore.DatastoreV1.CommitResponse;
 24  
 import com.google.api.services.datastore.DatastoreV1.LookupRequest;
 25  
 import com.google.api.services.datastore.DatastoreV1.LookupResponse;
 26  
 import com.google.api.services.datastore.DatastoreV1.RollbackRequest;
 27  
 import com.google.api.services.datastore.DatastoreV1.RollbackResponse;
 28  
 import com.google.api.services.datastore.DatastoreV1.RunQueryRequest;
 29  
 import com.google.api.services.datastore.DatastoreV1.RunQueryResponse;
 30  
 
 31  
 /**
 32  
  * Provides access to the remote Datastore service.
 33  
  */
 34  
 public interface DatastoreRpc {
 35  
 
 36  
   public class DatastoreRpcException extends Exception {
 37  
 
 38  
     /**
 39  
      * The reason for the exception.
 40  
      *
 41  
      * @see <a href="https://cloud.google.com/datastore/docs/concepts/errors#Error_Codes">Google Cloud Datastore error codes</a>
 42  
      */
 43  86
     public enum Reason {
 44  
 
 45  2
       ABORTED(true, "Request aborted", 409),
 46  2
       DEADLINE_EXCEEDED(true, "Deadline exceeded", 403),
 47  2
       FAILED_PRECONDITION(false, "Invalid request", 412),
 48  2
       INTERNAL(false, "Server returned an error", 500),
 49  2
       INVALID_ARGUMENT(false, "Request parameter has an invalid value", 400),
 50  2
       PERMISSION_DENIED(false, "Unauthorized request", 403),
 51  2
       RESOURCE_EXHAUSTED(false, "Quota exceeded", 402),
 52  2
       UNAVAILABLE(true, "Could not reach service", 503);
 53  
 
 54  
       private final boolean retryable;
 55  
       private final String description;
 56  
       private final int httpStatus;
 57  
 
 58  
       private Reason(boolean retryable, String description, int httpStatus) {
 59  
         this.retryable = retryable;
 60  
         this.description = description;
 61  
         this.httpStatus = httpStatus;
 62  
       }
 63  
 
 64  
       public boolean retryable() {
 65  32
         return retryable;
 66  
       }
 67  
 
 68  
       public String description() {
 69  32
         return description;
 70  
       }
 71  
 
 72  
       public int httpStatus() {
 73  48
         return httpStatus;
 74  
       }
 75  
     }
 76  
 
 77  
     private final String reason;
 78  
     private final int httpStatus;
 79  
     private final boolean retryable;
 80  
 
 81  
     public DatastoreRpcException(Reason reason) {
 82  26
       this(reason.name(), reason.httpStatus, reason.retryable, reason.description);
 83  26
     }
 84  
 
 85  
     public DatastoreRpcException(String reason, int httpStatus, boolean retryable, String message) {
 86  
       super(message);
 87  
       this.reason = reason;
 88  
       this.httpStatus = httpStatus;
 89  
       this.retryable = retryable;
 90  
     }
 91  
 
 92  
     public String reason() {
 93  24
       return reason;
 94  
     }
 95  
 
 96  
     public int httpStatus() {
 97  0
       return httpStatus;
 98  
     }
 99  
 
 100  
     public boolean retryable() {
 101  10
       return retryable;
 102  
     }
 103  
   }
 104  
 
 105  
   AllocateIdsResponse allocateIds(AllocateIdsRequest request) throws DatastoreRpcException;
 106  
 
 107  
   BeginTransactionResponse beginTransaction(BeginTransactionRequest request)
 108  
       throws DatastoreRpcException;
 109  
 
 110  
   CommitResponse commit(CommitRequest request) throws DatastoreRpcException;
 111  
 
 112  
   LookupResponse lookup(LookupRequest request) throws DatastoreRpcException;
 113  
 
 114  
   RollbackResponse rollback(RollbackRequest request) throws DatastoreRpcException;
 115  
 
 116  
   RunQueryResponse runQuery(RunQueryRequest request) throws DatastoreRpcException;
 117  
 }
- - - - diff --git a/cobertura/com.google.gcloud.spi.DatastoreRpcFactory.html b/cobertura/com.google.gcloud.spi.DatastoreRpcFactory.html deleted file mode 100644 index 10b319f23a31..000000000000 --- a/cobertura/com.google.gcloud.spi.DatastoreRpcFactory.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.spi.DatastoreRpcFactory
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DatastoreRpcFactory
N/A
N/A
0
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.spi;
 18  
 
 19  
 import com.google.gcloud.datastore.DatastoreServiceOptions;
 20  
 
 21  
 public interface DatastoreRpcFactory extends
 22  
     ServiceRpcFactory<DatastoreRpc, DatastoreServiceOptions> {
 23  
 }
- - - - diff --git a/cobertura/com.google.gcloud.spi.DefaultDatastoreRpc.html b/cobertura/com.google.gcloud.spi.DefaultDatastoreRpc.html deleted file mode 100644 index 100fa2c40332..000000000000 --- a/cobertura/com.google.gcloud.spi.DefaultDatastoreRpc.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.spi.DefaultDatastoreRpc
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DefaultDatastoreRpc
71%
30/42
50%
3/6
3.75
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.spi;
 18  
 
 19  
 import com.google.api.services.datastore.DatastoreV1.AllocateIdsRequest;
 20  
 import com.google.api.services.datastore.DatastoreV1.AllocateIdsResponse;
 21  
 import com.google.api.services.datastore.DatastoreV1.BeginTransactionRequest;
 22  
 import com.google.api.services.datastore.DatastoreV1.BeginTransactionResponse;
 23  
 import com.google.api.services.datastore.DatastoreV1.CommitRequest;
 24  
 import com.google.api.services.datastore.DatastoreV1.CommitResponse;
 25  
 import com.google.api.services.datastore.DatastoreV1.LookupRequest;
 26  
 import com.google.api.services.datastore.DatastoreV1.LookupResponse;
 27  
 import com.google.api.services.datastore.DatastoreV1.RollbackRequest;
 28  
 import com.google.api.services.datastore.DatastoreV1.RollbackResponse;
 29  
 import com.google.api.services.datastore.DatastoreV1.RunQueryRequest;
 30  
 import com.google.api.services.datastore.DatastoreV1.RunQueryResponse;
 31  
 import com.google.api.services.datastore.client.Datastore;
 32  
 import com.google.api.services.datastore.client.DatastoreException;
 33  
 import com.google.api.services.datastore.client.DatastoreFactory;
 34  
 import com.google.api.services.datastore.client.DatastoreOptions.Builder;
 35  
 import com.google.common.collect.ImmutableMap;
 36  
 import com.google.gcloud.datastore.DatastoreServiceOptions;
 37  
 import com.google.gcloud.spi.DatastoreRpc.DatastoreRpcException.Reason;
 38  
 
 39  
 import org.json.JSONException;
 40  
 import org.json.JSONObject;
 41  
 import org.json.JSONTokener;
 42  
 
 43  
 import java.util.HashMap;
 44  
 import java.util.Map;
 45  
 
 46  
 class DefaultDatastoreRpc implements DatastoreRpc {
 47  
 
 48  
   private final Datastore client;
 49  
 
 50  
   private static final ImmutableMap<String, Reason> STR_TO_REASON;
 51  
   private static final ImmutableMap<Integer, Reason> HTTP_STATUS_TO_REASON;
 52  
 
 53  
   static {
 54  2
     ImmutableMap.Builder<String, Reason> builder = ImmutableMap.builder();
 55  2
     Map<Integer, Reason> httpCodes = new HashMap<>();
 56  18
     for (Reason reason : Reason.values()) {
 57  16
       builder.put(reason.name(), reason);
 58  16
       httpCodes.put(reason.httpStatus(), reason);
 59  
     }
 60  2
     STR_TO_REASON = builder.build();
 61  2
     HTTP_STATUS_TO_REASON = ImmutableMap.copyOf(httpCodes);
 62  2
   }
 63  
 
 64  76
   public DefaultDatastoreRpc(DatastoreServiceOptions options) {
 65  76
     client = DatastoreFactory.get().create(
 66  
         new Builder()
 67  
             .dataset(options.projectId())
 68  
             .host(options.host())
 69  
             .initializer(options.httpRequestInitializer())
 70  
             .build());
 71  76
   }
 72  
 
 73  
   private static DatastoreRpcException translate(DatastoreException exception) {
 74  8
     String message = exception.getMessage();
 75  8
     String reasonStr = "";
 76  8
     if (message != null) {
 77  
       try {
 78  8
         JSONObject json = new JSONObject(new JSONTokener(message));
 79  8
         JSONObject error = json.getJSONObject("error").getJSONArray("errors").getJSONObject(0);
 80  8
         reasonStr = error.getString("reason");
 81  8
         message = error.getString("message");
 82  0
       } catch (JSONException ignore) {
 83  
         // ignore - will be converted to unknown
 84  8
       }
 85  
     }
 86  8
     Reason reason = STR_TO_REASON.get(reasonStr);
 87  8
     if (reason == null) {
 88  0
       reason = HTTP_STATUS_TO_REASON.get(exception.getCode());
 89  
     }
 90  8
     return reason != null
 91  
         ? new DatastoreRpcException(reason)
 92  
         : new DatastoreRpcException("Unknown", exception.getCode(), false, message);
 93  
   }
 94  
 
 95  
   @Override
 96  
   public AllocateIdsResponse allocateIds(AllocateIdsRequest request)
 97  
       throws DatastoreRpcException {
 98  
     try {
 99  10
       return client.allocateIds(request);
 100  0
     } catch (DatastoreException ex) {
 101  0
       throw translate(ex);
 102  
     }
 103  
   }
 104  
 
 105  
   @Override
 106  
   public BeginTransactionResponse beginTransaction(BeginTransactionRequest request)
 107  
       throws DatastoreRpcException {
 108  
     try {
 109  12
       return client.beginTransaction(request);
 110  0
     } catch (DatastoreException ex) {
 111  0
       throw translate(ex);
 112  
     }
 113  
   }
 114  
 
 115  
   @Override
 116  
   public CommitResponse commit(CommitRequest request) throws DatastoreRpcException {
 117  
     try {
 118  108
       return client.commit(request);
 119  8
     } catch (DatastoreException ex) {
 120  8
       throw translate(ex);
 121  
     }
 122  
   }
 123  
 
 124  
   @Override
 125  
   public LookupResponse lookup(LookupRequest request) throws DatastoreRpcException {
 126  
     try {
 127  84
       return client.lookup(request);
 128  0
     } catch (DatastoreException ex) {
 129  0
       throw translate(ex);
 130  
     }
 131  
   }
 132  
 
 133  
   @Override
 134  
   public RollbackResponse rollback(RollbackRequest request) throws DatastoreRpcException {
 135  
     try {
 136  2
       return client.rollback(request);
 137  0
     } catch (DatastoreException ex) {
 138  0
       throw translate(ex);
 139  
     }
 140  
   }
 141  
 
 142  
   @Override
 143  
   public RunQueryResponse runQuery(RunQueryRequest request) throws DatastoreRpcException {
 144  
     try {
 145  66
       return client.runQuery(request);
 146  0
     } catch (DatastoreException ex) {
 147  0
       throw translate(ex);
 148  
     }
 149  
   }
 150  
 }
- - - - diff --git a/cobertura/com.google.gcloud.spi.DefaultStorageRpc.html b/cobertura/com.google.gcloud.spi.DefaultStorageRpc.html deleted file mode 100644 index 79b6a728d4b2..000000000000 --- a/cobertura/com.google.gcloud.spi.DefaultStorageRpc.html +++ /dev/null @@ -1,894 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.spi.DefaultStorageRpc
-
 
- - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
DefaultStorageRpc
0%
0/169
0%
0/44
3.621
DefaultStorageRpc$1
0%
0/5
N/A
3.621
DefaultStorageRpc$2
0%
0/5
N/A
3.621
DefaultStorageRpc$3
0%
0/5
N/A
3.621
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 5  
  * in compliance with the License. You may obtain a copy of the License at
 6  
  *
 7  
  * http://www.apache.org/licenses/LICENSE-2.0
 8  
  *
 9  
  * Unless required by applicable law or agreed to in writing, software distributed under the License
 10  
  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 11  
  * or implied. See the License for the specific language governing permissions and limitations under
 12  
  * the License.
 13  
  */
 14  
 
 15  
 package com.google.gcloud.spi;
 16  
 
 17  
 import static com.google.gcloud.spi.StorageRpc.Option.DELIMITER;
 18  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_GENERATION_MATCH;
 19  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_GENERATION_NOT_MATCH;
 20  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_METAGENERATION_MATCH;
 21  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_METAGENERATION_NOT_MATCH;
 22  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_SOURCE_GENERATION_MATCH;
 23  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_SOURCE_GENERATION_NOT_MATCH;
 24  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_SOURCE_METAGENERATION_MATCH;
 25  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_SOURCE_METAGENERATION_NOT_MATCH;
 26  
 import static com.google.gcloud.spi.StorageRpc.Option.MAX_RESULTS;
 27  
 import static com.google.gcloud.spi.StorageRpc.Option.PAGE_TOKEN;
 28  
 import static com.google.gcloud.spi.StorageRpc.Option.PREDEFINED_ACL;
 29  
 import static com.google.gcloud.spi.StorageRpc.Option.PREDEFINED_DEFAULT_OBJECT_ACL;
 30  
 import static com.google.gcloud.spi.StorageRpc.Option.PREFIX;
 31  
 import static com.google.gcloud.spi.StorageRpc.Option.VERSIONS;
 32  
 
 33  
 import com.google.api.client.googleapis.batch.json.JsonBatchCallback;
 34  
 import com.google.api.client.googleapis.json.GoogleJsonError;
 35  
 import com.google.api.client.googleapis.json.GoogleJsonResponseException;
 36  
 import com.google.api.client.googleapis.media.MediaHttpDownloader;
 37  
 import com.google.api.client.http.ByteArrayContent;
 38  
 import com.google.api.client.http.GenericUrl;
 39  
 import com.google.api.client.http.HttpHeaders;
 40  
 import com.google.api.client.http.HttpRequest;
 41  
 import com.google.api.client.http.HttpRequestFactory;
 42  
 import com.google.api.client.http.HttpRequestInitializer;
 43  
 import com.google.api.client.http.HttpResponse;
 44  
 import com.google.api.client.http.HttpResponseException;
 45  
 import com.google.api.client.http.HttpTransport;
 46  
 import com.google.api.client.http.json.JsonHttpContent;
 47  
 import com.google.api.client.json.JsonFactory;
 48  
 import com.google.api.client.json.jackson.JacksonFactory;
 49  
 import com.google.api.services.storage.Storage;
 50  
 import com.google.api.services.storage.Storage.Objects.Get;
 51  
 import com.google.api.services.storage.Storage.Objects.Insert;
 52  
 import com.google.api.services.storage.model.Bucket;
 53  
 import com.google.api.services.storage.model.Buckets;
 54  
 import com.google.api.services.storage.model.ComposeRequest;
 55  
 import com.google.api.services.storage.model.ComposeRequest.SourceObjects.ObjectPreconditions;
 56  
 import com.google.api.services.storage.model.Objects;
 57  
 import com.google.api.services.storage.model.StorageObject;
 58  
 import com.google.common.base.MoreObjects;
 59  
 import com.google.common.collect.ImmutableSet;
 60  
 import com.google.common.collect.Maps;
 61  
 import com.google.gcloud.storage.StorageServiceException;
 62  
 import com.google.gcloud.storage.StorageServiceOptions;
 63  
 
 64  
 import java.io.ByteArrayOutputStream;
 65  
 import java.io.IOException;
 66  
 import java.util.ArrayList;
 67  
 import java.util.List;
 68  
 import java.util.Map;
 69  
 import java.util.Set;
 70  
 
 71  0
 public class DefaultStorageRpc implements StorageRpc {
 72  
 
 73  
   public static final String DEFAULT_PROJECTION = "full";
 74  
   private final StorageServiceOptions options;
 75  
   private final Storage storage;
 76  
 
 77  
   // see: https://cloud.google.com/storage/docs/concepts-techniques#practices
 78  0
   private static final Set<Integer> RETRYABLE_CODES = ImmutableSet.of(504, 503, 502, 500, 408);
 79  
 
 80  0
   public DefaultStorageRpc(StorageServiceOptions options) {
 81  0
     HttpTransport transport = options.httpTransportFactory().create();
 82  0
     HttpRequestInitializer initializer = options.httpRequestInitializer();
 83  0
     this.options = options;
 84  0
     storage = new Storage.Builder(transport, new JacksonFactory(), initializer)
 85  
         .setApplicationName("gcloud-java")
 86  
         .build();
 87  
     // Todo: make sure nulls are being used as Data.asNull()
 88  0
   }
 89  
 
 90  
   private static StorageServiceException translate(IOException exception) {
 91  
     StorageServiceException translated;
 92  0
     if (exception instanceof GoogleJsonResponseException) {
 93  0
       translated = translate(((GoogleJsonResponseException) exception).getDetails());
 94  
     } else {
 95  0
       translated = new StorageServiceException(0, exception.getMessage(), false);
 96  
     }
 97  0
     translated.initCause(exception);
 98  0
     return translated;
 99  
   }
 100  
 
 101  
   private static StorageServiceException translate(GoogleJsonError exception) {
 102  0
     boolean retryable = RETRYABLE_CODES.contains(exception.getCode())
 103  
         || "InternalError".equals(exception.getMessage());
 104  0
     return new StorageServiceException(exception.getCode(), exception.getMessage(), retryable);
 105  
   }
 106  
 
 107  
   @Override
 108  
   public Bucket create(Bucket bucket, Map<Option, ?> options) throws StorageServiceException {
 109  
     try {
 110  0
       return storage.buckets()
 111  
           .insert(this.options.projectId(), bucket)
 112  
           .setProjection(DEFAULT_PROJECTION)
 113  
           .setPredefinedAcl(PREDEFINED_ACL.getString(options))
 114  
           .setPredefinedDefaultObjectAcl(PREDEFINED_DEFAULT_OBJECT_ACL.getString(options))
 115  
           .execute();
 116  0
     } catch (IOException ex) {
 117  0
       throw translate(ex);
 118  
     }
 119  
   }
 120  
 
 121  
   @Override
 122  
   public StorageObject create(StorageObject storageObject, final byte[] content,
 123  
       Map<Option, ?> options) throws StorageServiceException {
 124  
     try {
 125  0
       return storage.objects()
 126  
           .insert(storageObject.getBucket(), storageObject,
 127  
               new ByteArrayContent(storageObject.getContentType(), content))
 128  
           .setProjection(DEFAULT_PROJECTION)
 129  
           .setPredefinedAcl(PREDEFINED_ACL.getString(options))
 130  
           .setIfMetagenerationMatch(IF_METAGENERATION_MATCH.getLong(options))
 131  
           .setIfMetagenerationNotMatch(IF_METAGENERATION_NOT_MATCH.getLong(options))
 132  
           .setIfGenerationMatch(IF_GENERATION_MATCH.getLong(options))
 133  
           .setIfGenerationNotMatch(IF_GENERATION_NOT_MATCH.getLong(options))
 134  
           .execute();
 135  0
     } catch (IOException ex) {
 136  0
       throw translate(ex);
 137  
     }
 138  
   }
 139  
 
 140  
   @Override
 141  
   public Tuple<String, Iterable<Bucket>> list(Map<Option, ?> options) {
 142  
     try {
 143  0
       Buckets buckets = storage.buckets()
 144  
           .list(this.options.projectId())
 145  
           .setProjection(DEFAULT_PROJECTION)
 146  
           .setPrefix(PREFIX.getString(options))
 147  
           .setMaxResults(MAX_RESULTS.getLong(options))
 148  
           .setPageToken(PAGE_TOKEN.getString(options))
 149  
           .execute();
 150  0
       return Tuple.<String, Iterable<Bucket>>of(buckets.getNextPageToken(), buckets.getItems());
 151  0
     } catch (IOException ex) {
 152  0
       throw translate(ex);
 153  
     }
 154  
   }
 155  
 
 156  
   @Override
 157  
   public Tuple<String, Iterable<StorageObject>> list(String bucket, Map<Option, ?> options) {
 158  
     try {
 159  0
       Objects objects = storage.objects()
 160  
           .list(bucket)
 161  
           .setProjection(DEFAULT_PROJECTION)
 162  
           .setVersions(VERSIONS.getBoolean(options))
 163  
           .setDelimiter(DELIMITER.getString(options))
 164  
           .setPrefix(PREFIX.getString(options))
 165  
           .setMaxResults(MAX_RESULTS.getLong(options))
 166  
           .setPageToken(PAGE_TOKEN.getString(options))
 167  
           .execute();
 168  0
       return Tuple.<String, Iterable<StorageObject>>of(
 169  
           objects.getNextPageToken(), objects.getItems());
 170  0
     } catch (IOException ex) {
 171  0
       throw translate(ex);
 172  
     }
 173  
   }
 174  
 
 175  
   @Override
 176  
   public Bucket get(Bucket bucket, Map<Option, ?> options) {
 177  
     try {
 178  0
       return storage.buckets()
 179  
           .get(bucket.getName())
 180  
           .setProjection(DEFAULT_PROJECTION)
 181  
           .setIfMetagenerationMatch(IF_METAGENERATION_MATCH.getLong(options))
 182  
           .setIfMetagenerationNotMatch(IF_METAGENERATION_NOT_MATCH.getLong(options))
 183  
           .execute();
 184  0
     } catch (IOException ex) {
 185  0
       throw translate(ex);
 186  
     }
 187  
   }
 188  
 
 189  
   @Override
 190  
   public StorageObject get(StorageObject object, Map<Option, ?> options) {
 191  
     try {
 192  0
       return getRequest(object, options).execute();
 193  0
     } catch (IOException ex) {
 194  0
       throw translate(ex);
 195  
     }
 196  
   }
 197  
 
 198  
   private Storage.Objects.Get getRequest(StorageObject object, Map<Option, ?> options)
 199  
       throws IOException {
 200  0
     return storage.objects()
 201  
         .get(object.getBucket(), object.getName())
 202  
         .setProjection(DEFAULT_PROJECTION)
 203  
         .setIfMetagenerationMatch(IF_METAGENERATION_MATCH.getLong(options))
 204  
         .setIfMetagenerationNotMatch(IF_METAGENERATION_NOT_MATCH.getLong(options))
 205  
         .setIfGenerationMatch(IF_GENERATION_MATCH.getLong(options))
 206  
         .setIfGenerationNotMatch(IF_GENERATION_NOT_MATCH.getLong(options));
 207  
   }
 208  
 
 209  
   @Override
 210  
   public Bucket patch(Bucket bucket, Map<Option, ?> options) {
 211  
     try {
 212  0
       return storage.buckets()
 213  
           .patch(bucket.getName(), bucket)
 214  
           .setProjection(DEFAULT_PROJECTION)
 215  
           .setPredefinedAcl(PREDEFINED_ACL.getString(options))
 216  
           .setPredefinedDefaultObjectAcl(PREDEFINED_DEFAULT_OBJECT_ACL.getString(options))
 217  
           .setIfMetagenerationMatch(IF_METAGENERATION_MATCH.getLong(options))
 218  
           .setIfMetagenerationNotMatch(IF_METAGENERATION_NOT_MATCH.getLong(options))
 219  
           .execute();
 220  0
     } catch (IOException ex) {
 221  0
       throw translate(ex);
 222  
     }
 223  
   }
 224  
 
 225  
   @Override
 226  
   public StorageObject patch(StorageObject storageObject, Map<Option, ?> options) {
 227  
     try {
 228  0
       return patchRequest(storageObject, options).execute();
 229  0
     } catch (IOException ex) {
 230  0
       throw translate(ex);
 231  
     }
 232  
   }
 233  
 
 234  
   private Storage.Objects.Patch patchRequest(StorageObject storageObject, Map<Option, ?> options)
 235  
       throws IOException {
 236  0
     return storage.objects()
 237  
         .patch(storageObject.getBucket(), storageObject.getName(), storageObject)
 238  
         .setProjection(DEFAULT_PROJECTION)
 239  
         .setPredefinedAcl(PREDEFINED_ACL.getString(options))
 240  
         .setIfMetagenerationMatch(IF_METAGENERATION_MATCH.getLong(options))
 241  
         .setIfMetagenerationNotMatch(IF_METAGENERATION_NOT_MATCH.getLong(options))
 242  
         .setIfGenerationMatch(IF_GENERATION_MATCH.getLong(options))
 243  
         .setIfGenerationNotMatch(IF_GENERATION_NOT_MATCH.getLong(options));
 244  
   }
 245  
 
 246  
   @Override
 247  
   public boolean delete(Bucket bucket, Map<Option, ?> options) {
 248  
     try {
 249  0
       storage.buckets()
 250  
           .delete(bucket.getName())
 251  
           .setIfMetagenerationMatch(IF_METAGENERATION_MATCH.getLong(options))
 252  
           .setIfMetagenerationNotMatch(IF_METAGENERATION_NOT_MATCH.getLong(options))
 253  
           .execute();
 254  0
       return true;
 255  0
     } catch (IOException ex) {
 256  0
       StorageServiceException serviceException = translate(ex);
 257  0
       if (serviceException.code() == 404) {
 258  0
         return false;
 259  
       }
 260  0
       throw serviceException;
 261  
     }
 262  
   }
 263  
 
 264  
   @Override
 265  
   public boolean delete(StorageObject blob, Map<Option, ?> options) {
 266  
     try {
 267  0
       deleteRequest(blob, options).execute();
 268  0
       return true;
 269  0
     } catch (IOException ex) {
 270  0
       StorageServiceException serviceException = translate(ex);
 271  0
       if (serviceException.code() == 404) {
 272  0
         return false;
 273  
       }
 274  0
       throw serviceException;
 275  
     }
 276  
   }
 277  
 
 278  
   private Storage.Objects.Delete deleteRequest(StorageObject blob, Map<Option, ?> options)
 279  
       throws IOException {
 280  0
     return storage.objects()
 281  
         .delete(blob.getBucket(), blob.getName())
 282  
         .setIfMetagenerationMatch(IF_METAGENERATION_MATCH.getLong(options))
 283  
         .setIfMetagenerationNotMatch(IF_METAGENERATION_NOT_MATCH.getLong(options))
 284  
         .setIfGenerationMatch(IF_GENERATION_MATCH.getLong(options))
 285  
         .setIfGenerationMatch(100L)
 286  
         .setIfGenerationNotMatch(IF_GENERATION_NOT_MATCH.getLong(options));
 287  
   }
 288  
 
 289  
   @Override
 290  
   public StorageObject compose(Iterable<StorageObject> sources, StorageObject target,
 291  
       Map<Option, ?> targetOptions) throws StorageServiceException {
 292  0
     ComposeRequest request = new ComposeRequest();
 293  0
     if (target.getContentType() == null) {
 294  
       // todo: remove once this is no longer requirement (b/20681287).
 295  0
       target.setContentType("application/octet-stream");
 296  
     }
 297  0
     request.setDestination(target);
 298  0
     List<ComposeRequest.SourceObjects> sourceObjects = new ArrayList<>();
 299  0
     for (StorageObject source : sources) {
 300  0
       ComposeRequest.SourceObjects sourceObject = new ComposeRequest.SourceObjects();
 301  0
       sourceObject.setName(source.getName());
 302  0
       Long generation = source.getGeneration();
 303  0
       if (generation != null) {
 304  0
         sourceObject.setGeneration(generation);
 305  0
         sourceObject.setObjectPreconditions(
 306  
             new ObjectPreconditions().setIfGenerationMatch(generation));
 307  
       }
 308  0
       sourceObjects.add(sourceObject);
 309  0
     }
 310  0
     request.setSourceObjects(sourceObjects);
 311  
     try {
 312  
       // todo: missing setProjection (b/20659000)
 313  0
       return storage.objects()
 314  
           .compose(target.getBucket(), target.getName(), request)
 315  
           .setIfMetagenerationMatch(IF_METAGENERATION_MATCH.getLong(targetOptions))
 316  
           .setIfGenerationMatch(IF_GENERATION_MATCH.getLong(targetOptions))
 317  
           .execute();
 318  0
     } catch (IOException ex) {
 319  0
       throw translate(ex);
 320  
     }
 321  
   }
 322  
 
 323  
   @Override
 324  
   public StorageObject copy(StorageObject source, Map<Option, ?> sourceOptions,
 325  
       StorageObject target, Map<Option, ?> targetOptions) throws StorageServiceException {
 326  
     try {
 327  0
       return storage
 328  
           .objects()
 329  
           .copy(source.getBucket(), source.getName(), target.getBucket(), target.getName(),
 330  
               target.getContentType() != null ? target : null)
 331  
           .setProjection(DEFAULT_PROJECTION)
 332  
           .setIfMetagenerationMatch(IF_SOURCE_METAGENERATION_MATCH.getLong(sourceOptions))
 333  
           .setIfMetagenerationNotMatch(IF_SOURCE_METAGENERATION_NOT_MATCH.getLong(sourceOptions))
 334  
           .setIfGenerationMatch(IF_SOURCE_GENERATION_MATCH.getLong(sourceOptions))
 335  
           .setIfGenerationNotMatch(IF_SOURCE_GENERATION_NOT_MATCH.getLong(sourceOptions))
 336  
           .setIfMetagenerationMatch(IF_METAGENERATION_MATCH.getLong(targetOptions))
 337  
           .setIfMetagenerationNotMatch(IF_METAGENERATION_NOT_MATCH.getLong(targetOptions))
 338  
           .setIfGenerationMatch(IF_GENERATION_MATCH.getLong(targetOptions))
 339  
           .setIfGenerationNotMatch(IF_GENERATION_NOT_MATCH.getLong(targetOptions))
 340  
           .execute();
 341  0
     } catch (IOException ex) {
 342  0
       throw translate(ex);
 343  
     }
 344  
   }
 345  
 
 346  
   @Override
 347  
   public byte[] load(StorageObject from, Map<Option, ?> options)
 348  
       throws StorageServiceException {
 349  
     try {
 350  0
       Storage.Objects.Get getRequest = storage.objects()
 351  
           .get(from.getBucket(), from.getName())
 352  
           .setIfMetagenerationMatch(IF_METAGENERATION_MATCH.getLong(options))
 353  
           .setIfMetagenerationNotMatch(IF_METAGENERATION_NOT_MATCH.getLong(options))
 354  
           .setIfGenerationMatch(IF_GENERATION_MATCH.getLong(options))
 355  
           .setIfGenerationNotMatch(IF_GENERATION_NOT_MATCH.getLong(options));
 356  0
       ByteArrayOutputStream out = new ByteArrayOutputStream();
 357  0
       getRequest.getMediaHttpDownloader().setDirectDownloadEnabled(true);
 358  0
       getRequest.executeMediaAndDownloadTo(out);
 359  0
       return out.toByteArray();
 360  0
     } catch (IOException ex) {
 361  0
       throw translate(ex);
 362  
     }
 363  
   }
 364  
 
 365  
   @Override
 366  
   public BatchResponse batch(BatchRequest request) throws StorageServiceException {
 367  0
     com.google.api.client.googleapis.batch.BatchRequest batch = storage.batch();
 368  0
     final Map<StorageObject, Tuple<Boolean, StorageServiceException>> deletes =
 369  
         Maps.newConcurrentMap();
 370  0
     final Map<StorageObject, Tuple<StorageObject, StorageServiceException>> updates =
 371  
         Maps.newConcurrentMap();
 372  0
     final Map<StorageObject, Tuple<StorageObject, StorageServiceException>> gets =
 373  
         Maps.newConcurrentMap();
 374  
     try {
 375  0
       for (final Tuple<StorageObject, Map<Option, ?>> tuple : request.toDelete) {
 376  0
         deleteRequest(tuple.x(), tuple.y()).queue(batch, new JsonBatchCallback<Void>() {
 377  
           @Override
 378  
           public void onSuccess(Void ignore, HttpHeaders responseHeaders) {
 379  0
             deletes.put(tuple.x(), Tuple.<Boolean, StorageServiceException>of(Boolean.TRUE, null));
 380  0
           }
 381  
 
 382  
           @Override
 383  
           public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders) {
 384  0
             deletes.put(tuple.x(), Tuple.<Boolean, StorageServiceException>of(null, translate(e)));
 385  0
           }
 386  
         });
 387  0
       }
 388  0
       for (final Tuple<StorageObject, Map<Option, ?>> tuple : request.toUpdate) {
 389  0
         patchRequest(tuple.x(), tuple.y()).queue(batch, new JsonBatchCallback<StorageObject>() {
 390  
           @Override
 391  
           public void onSuccess(StorageObject storageObject, HttpHeaders responseHeaders) {
 392  0
             updates.put(tuple.x(),
 393  
                 Tuple.<StorageObject, StorageServiceException>of(storageObject, null));
 394  0
           }
 395  
 
 396  
           @Override
 397  
           public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders) {
 398  0
             updates.put(tuple.x(),
 399  
                 Tuple.<StorageObject, StorageServiceException>of(null, translate(e)));
 400  0
           }
 401  
         });
 402  0
       }
 403  0
       for (final Tuple<StorageObject, Map<Option, ?>> tuple : request.toGet) {
 404  0
         getRequest(tuple.x(), tuple.y()).queue(batch, new JsonBatchCallback<StorageObject>() {
 405  
           @Override
 406  
           public void onSuccess(StorageObject storageObject, HttpHeaders responseHeaders) {
 407  0
             gets.put(tuple.x(),
 408  
                 Tuple.<StorageObject, StorageServiceException>of(storageObject, null));
 409  0
           }
 410  
 
 411  
           @Override
 412  
           public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders) {
 413  0
             gets.put(tuple.x(),
 414  
                 Tuple.<StorageObject, StorageServiceException>of(null, translate(e)));
 415  0
           }
 416  
         });
 417  0
       }
 418  0
       batch.execute();
 419  0
     } catch (IOException ex) {
 420  0
       throw translate(ex);
 421  0
     }
 422  0
     return new BatchResponse(deletes, updates, gets);
 423  
   }
 424  
 
 425  
   @Override
 426  
   public byte[] read(StorageObject from, Map<Option, ?> options, long position, int bytes)
 427  
       throws StorageServiceException {
 428  
     try {
 429  0
       Get req = storage.objects().get(from.getBucket(), from.getName());
 430  0
       req.setIfMetagenerationMatch(IF_METAGENERATION_MATCH.getLong(options))
 431  
           .setIfMetagenerationNotMatch(IF_METAGENERATION_NOT_MATCH.getLong(options))
 432  
           .setIfGenerationMatch(IF_GENERATION_MATCH.getLong(options))
 433  
           .setIfGenerationNotMatch(IF_GENERATION_NOT_MATCH.getLong(options));
 434  0
       MediaHttpDownloader downloader = req.getMediaHttpDownloader();
 435  
       // todo: Fix int casting (https://github.com/google/google-api-java-client/issues/937)
 436  0
       downloader.setContentRange(position, (int) position + bytes);
 437  0
       downloader.setDirectDownloadEnabled(true);
 438  0
       ByteArrayOutputStream output = new ByteArrayOutputStream();
 439  0
       req.executeMediaAndDownloadTo(output);
 440  0
       return output.toByteArray();
 441  0
     } catch (IOException ex) {
 442  0
       throw translate(ex);
 443  
     }
 444  
   }
 445  
 
 446  
   @Override
 447  
   public void write(String uploadId, byte[] toWrite, int toWriteOffset, StorageObject dest,
 448  
       long destOffset, int length, boolean last) throws StorageServiceException {
 449  
     try {
 450  0
       GenericUrl url = new GenericUrl(uploadId);
 451  0
       HttpRequest httpRequest = storage.getRequestFactory().buildPostRequest(url,
 452  
           new ByteArrayContent(null, toWrite, toWriteOffset, length));
 453  0
       long limit = destOffset + length;
 454  0
       StringBuilder range = new StringBuilder("bytes ");
 455  0
       range.append(destOffset).append('-').append(limit - 1).append('/');
 456  0
       if (last) {
 457  0
         range.append(limit);
 458  
       } else {
 459  0
         range.append('*');
 460  
       }
 461  0
       httpRequest.getHeaders().setContentRange(range.toString());
 462  
       int code;
 463  
       String message;
 464  0
       IOException exception = null;
 465  
       try {
 466  0
         HttpResponse response = httpRequest.execute();
 467  0
         code = response.getStatusCode();
 468  0
         message = response.getStatusMessage();
 469  0
       } catch (HttpResponseException ex) {
 470  0
         exception = ex;
 471  0
         code = ex.getStatusCode();
 472  0
         message = ex.getStatusMessage();
 473  0
       }
 474  0
       if (!last && code != 308 || last && !(code == 200 || code == 201)) {
 475  0
         if (exception != null) {
 476  0
           throw exception;
 477  
         }
 478  0
         GoogleJsonError error = new GoogleJsonError();
 479  0
         error.setCode(code);
 480  0
         error.setMessage(message);
 481  0
         throw translate(error);
 482  
       }
 483  0
     } catch (IOException ex) {
 484  0
       throw translate(ex);
 485  0
     }
 486  0
   }
 487  
 
 488  
   @Override
 489  
   public String open(StorageObject object, Map<Option, ?> options)
 490  
       throws StorageServiceException {
 491  
     try {
 492  0
       Insert req = storage.objects().insert(object.getBucket(), object);
 493  0
       GenericUrl url = req.buildHttpRequest().getUrl();
 494  0
       String scheme = url.getScheme();
 495  0
       String host = url.getHost();
 496  0
       String path = "/upload" + url.getRawPath();
 497  0
       url = new GenericUrl(scheme + "://" + host + path);
 498  0
       url.set("uploadType", "resumable");
 499  0
       url.set("name", object.getName());
 500  0
       for (Option option : options.keySet()) {
 501  0
         Object content = option.get(options);
 502  0
         if (content != null) {
 503  0
           url.set(option.value(), content.toString());
 504  
         }
 505  0
       }
 506  0
       JsonFactory jsonFactory = storage.getJsonFactory();
 507  0
       HttpRequestFactory requestFactory = storage.getRequestFactory();
 508  0
       HttpRequest httpRequest =
 509  
           requestFactory.buildPostRequest(url, new JsonHttpContent(jsonFactory, object));
 510  0
       httpRequest.getHeaders().set("X-Upload-Content-Type",
 511  
           MoreObjects.firstNonNull(object.getContentType(), "application/octet-stream"));
 512  0
       HttpResponse response = httpRequest.execute();
 513  0
       if (response.getStatusCode() != 200) {
 514  0
         GoogleJsonError error = new GoogleJsonError();
 515  0
         error.setCode(response.getStatusCode());
 516  0
         error.setMessage(response.getStatusMessage());
 517  0
         throw translate(error);
 518  
       }
 519  0
       return response.getHeaders().getLocation();
 520  0
     } catch (IOException ex) {
 521  0
       throw translate(ex);
 522  
     }
 523  
   }
 524  
 }
- - - - diff --git a/cobertura/com.google.gcloud.spi.ServiceRpcFactory.html b/cobertura/com.google.gcloud.spi.ServiceRpcFactory.html deleted file mode 100644 index 8c96bb95f520..000000000000 --- a/cobertura/com.google.gcloud.spi.ServiceRpcFactory.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.spi.ServiceRpcFactory
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
ServiceRpcFactory
N/A
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.spi;
 18  
 
 19  
 import com.google.gcloud.ServiceOptions;
 20  
 
 21  
 import java.io.Serializable;
 22  
 
 23  
 public interface ServiceRpcFactory<S, O extends ServiceOptions> extends Serializable {
 24  
 
 25  
   S create(O options);
 26  
 }
- - - - diff --git a/cobertura/com.google.gcloud.spi.ServiceRpcProvider.html b/cobertura/com.google.gcloud.spi.ServiceRpcProvider.html deleted file mode 100644 index c55afef0423d..000000000000 --- a/cobertura/com.google.gcloud.spi.ServiceRpcProvider.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.spi.ServiceRpcProvider
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
ServiceRpcProvider
50%
2/4
25%
1/4
2
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.spi;
 18  
 
 19  
 import com.google.common.collect.Iterables;
 20  
 import com.google.gcloud.datastore.DatastoreServiceOptions;
 21  
 import com.google.gcloud.storage.StorageServiceOptions;
 22  
 
 23  
 import java.util.ServiceLoader;
 24  
 
 25  
 public class ServiceRpcProvider {
 26  
 
 27  
   public static DatastoreRpc datastore(DatastoreServiceOptions options) {
 28  76
     DatastoreRpcFactory factory =
 29  
         Iterables.getFirst(ServiceLoader.load(DatastoreRpcFactory.class), null);
 30  76
     return factory == null ? new DefaultDatastoreRpc(options) : factory.create(options);
 31  
   }
 32  
 
 33  
   public static StorageRpc storage(StorageServiceOptions options) {
 34  0
     StorageRpcFactory factory =
 35  
         Iterables.getFirst(ServiceLoader.load(StorageRpcFactory.class), null);
 36  0
     return factory == null ? new DefaultStorageRpc(options) : factory.create(options);
 37  
   }
 38  
 }
- - - - diff --git a/cobertura/com.google.gcloud.spi.StorageRpc.html b/cobertura/com.google.gcloud.spi.StorageRpc.html deleted file mode 100644 index 225f260a9758..000000000000 --- a/cobertura/com.google.gcloud.spi.StorageRpc.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.spi.StorageRpc
-
 
- - - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
StorageRpc
N/A
N/A
1
StorageRpc$BatchRequest
0%
0/5
N/A
1
StorageRpc$BatchResponse
0%
0/5
N/A
1
StorageRpc$Option
76%
16/21
N/A
1
StorageRpc$Tuple
0%
0/3
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.spi;
 18  
 
 19  
 import com.google.api.services.storage.model.Bucket;
 20  
 import com.google.api.services.storage.model.StorageObject;
 21  
 import com.google.common.collect.ImmutableList;
 22  
 import com.google.common.collect.ImmutableMap;
 23  
 import com.google.gcloud.storage.StorageServiceException;
 24  
 
 25  
 import java.util.List;
 26  
 import java.util.Map;
 27  
 
 28  
 public interface StorageRpc {
 29  
 
 30  4
   enum Option {
 31  2
     PREDEFINED_ACL("predefinedAcl"),
 32  2
     PREDEFINED_DEFAULT_OBJECT_ACL("predefinedDefaultObjectAcl"),
 33  2
     IF_METAGENERATION_MATCH("ifMetagenerationMatch"),
 34  2
     IF_METAGENERATION_NOT_MATCH("ifMetagenerationNotMatch"),
 35  2
     IF_GENERATION_NOT_MATCH("ifGenerationMatch"),
 36  2
     IF_GENERATION_MATCH("ifGenerationNotMatch"),
 37  2
     IF_SOURCE_METAGENERATION_MATCH("ifSourceMetagenerationMatch"),
 38  2
     IF_SOURCE_METAGENERATION_NOT_MATCH("ifSourceMetagenerationNotMatch"),
 39  2
     IF_SOURCE_GENERATION_MATCH("ifSourceGenerationMatch"),
 40  2
     IF_SOURCE_GENERATION_NOT_MATCH("ifSourceGenerationNotMatch"),
 41  2
     PREFIX("prefix"),
 42  2
     MAX_RESULTS("maxResults"),
 43  2
     PAGE_TOKEN("pageToken"),
 44  2
     DELIMITER("delimiter"),
 45  2
     VERSIONS("versions");
 46  
 
 47  
     private final String value;
 48  
 
 49  
     Option(String value) {
 50  
       this.value = value;
 51  
     }
 52  
 
 53  
     public String value() {
 54  0
       return value;
 55  
     }
 56  
 
 57  
     @SuppressWarnings("unchecked")
 58  
     <T> T get(Map<Option, ?> options) {
 59  0
       return (T) options.get(this);
 60  
     }
 61  
 
 62  
     String getString(Map<Option, ?> options) {
 63  0
       return get(options);
 64  
     }
 65  
 
 66  
     Long getLong(Map<Option, ?> options) {
 67  0
       return get(options);
 68  
     }
 69  
 
 70  
     Boolean getBoolean(Map<Option, ?> options) {
 71  0
       return get(options);
 72  
     }
 73  
   }
 74  
 
 75  
   class Tuple<X, Y> {
 76  
 
 77  
     private final X x;
 78  
     private final Y y;
 79  
 
 80  
     private Tuple(X x, Y y) {
 81  
       this.x = x;
 82  
       this.y = y;
 83  
     }
 84  
 
 85  
     public static <X, Y> Tuple<X, Y> of(X x, Y y) {
 86  0
       return new Tuple<>(x, y);
 87  
     }
 88  
 
 89  
     public X x() {
 90  0
       return x;
 91  
     }
 92  
 
 93  
     public Y y() {
 94  0
       return y;
 95  
     }
 96  
   }
 97  
 
 98  
   class BatchRequest {
 99  
 
 100  
     public final List<Tuple<StorageObject, Map<Option, ?>>> toDelete;
 101  
     public final List<Tuple<StorageObject, Map<Option, ?>>> toUpdate;
 102  
     public final List<Tuple<StorageObject, Map<Option, ?>>> toGet;
 103  
 
 104  
     public BatchRequest(Iterable<Tuple<StorageObject, Map<Option, ?>>> toDelete,
 105  
         Iterable<Tuple<StorageObject, Map<Option, ?>>> toUpdate,
 106  0
         Iterable<Tuple<StorageObject, Map<Option, ?>>> toGet) {
 107  0
       this.toDelete = ImmutableList.copyOf(toDelete);
 108  0
       this.toUpdate = ImmutableList.copyOf(toUpdate);
 109  0
       this.toGet = ImmutableList.copyOf(toGet);
 110  0
     }
 111  
   }
 112  
 
 113  
   class BatchResponse {
 114  
 
 115  
     public final Map<StorageObject, Tuple<Boolean, StorageServiceException>> deletes;
 116  
     public final Map<StorageObject, Tuple<StorageObject, StorageServiceException>> updates;
 117  
     public final Map<StorageObject, Tuple<StorageObject, StorageServiceException>> gets;
 118  
 
 119  
     public BatchResponse(Map<StorageObject, Tuple<Boolean, StorageServiceException>> deletes,
 120  
         Map<StorageObject, Tuple<StorageObject, StorageServiceException>> updates,
 121  0
         Map<StorageObject, Tuple<StorageObject, StorageServiceException>> gets) {
 122  0
       this.deletes = ImmutableMap.copyOf(deletes);
 123  0
       this.updates = ImmutableMap.copyOf(updates);
 124  0
       this.gets = ImmutableMap.copyOf(gets);
 125  0
     }
 126  
   }
 127  
 
 128  
   Bucket create(Bucket bucket, Map<Option, ?> options) throws StorageServiceException;
 129  
 
 130  
   StorageObject create(StorageObject object, byte[] content, Map<Option, ?> options)
 131  
       throws StorageServiceException;
 132  
 
 133  
   Tuple<String, Iterable<Bucket>> list(Map<Option, ?> options) throws StorageServiceException;
 134  
 
 135  
   Tuple<String, Iterable<StorageObject>> list(String bucket, Map<Option, ?> options)
 136  
       throws StorageServiceException;
 137  
 
 138  
   Bucket get(Bucket bucket, Map<Option, ?> options) throws StorageServiceException;
 139  
 
 140  
   StorageObject get(StorageObject object, Map<Option, ?> options)
 141  
       throws StorageServiceException;
 142  
 
 143  
   Bucket patch(Bucket bucket, Map<Option, ?> options) throws StorageServiceException;
 144  
 
 145  
   StorageObject patch(StorageObject storageObject, Map<Option, ?> options)
 146  
       throws StorageServiceException;
 147  
 
 148  
   boolean delete(Bucket bucket, Map<Option, ?> options) throws StorageServiceException;
 149  
 
 150  
   boolean delete(StorageObject object, Map<Option, ?> options) throws StorageServiceException;
 151  
 
 152  
   BatchResponse batch(BatchRequest request) throws StorageServiceException;
 153  
 
 154  
   StorageObject compose(Iterable<StorageObject> sources, StorageObject target,
 155  
       Map<Option, ?> targetOptions) throws StorageServiceException;
 156  
 
 157  
   StorageObject copy(StorageObject source, Map<Option, ?> sourceOptions,
 158  
       StorageObject target, Map<Option, ?> targetOptions) throws StorageServiceException;
 159  
 
 160  
   byte[] load(StorageObject storageObject, Map<Option, ?> options)
 161  
       throws StorageServiceException;
 162  
 
 163  
   byte[] read(StorageObject from, Map<Option, ?> options, long position, int bytes)
 164  
       throws StorageServiceException;
 165  
 
 166  
   String open(StorageObject object, Map<Option, ?> options) throws StorageServiceException;
 167  
 
 168  
   void write(String uploadId, byte[] toWrite, int toWriteOffset, StorageObject dest,
 169  
       long destOffset, int length, boolean last) throws StorageServiceException;
 170  
 }
- - - - diff --git a/cobertura/com.google.gcloud.spi.StorageRpcFactory.html b/cobertura/com.google.gcloud.spi.StorageRpcFactory.html deleted file mode 100644 index 7c5c9108cd33..000000000000 --- a/cobertura/com.google.gcloud.spi.StorageRpcFactory.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.spi.StorageRpcFactory
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
StorageRpcFactory
N/A
N/A
0
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.spi;
 18  
 
 19  
 import com.google.gcloud.storage.StorageServiceOptions;
 20  
 
 21  
 public interface StorageRpcFactory extends ServiceRpcFactory<StorageRpc, StorageServiceOptions> {
 22  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.Acl.html b/cobertura/com.google.gcloud.storage.Acl.html deleted file mode 100644 index 390a8f0ef519..000000000000 --- a/cobertura/com.google.gcloud.storage.Acl.html +++ /dev/null @@ -1,499 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.Acl
-
 
- - - - - - - - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Acl
90%
19/21
60%
6/10
1.903
Acl$Domain
100%
3/3
N/A
1.903
Acl$Entity
92%
25/27
81%
18/22
1.903
Acl$Entity$Type
100%
2/2
N/A
1.903
Acl$Group
100%
3/3
N/A
1.903
Acl$Project
100%
6/6
N/A
1.903
Acl$Project$ProjectRole
100%
2/2
N/A
1.903
Acl$RawEntity
100%
3/3
N/A
1.903
Acl$Role
100%
2/2
N/A
1.903
Acl$User
100%
9/9
80%
8/10
1.903
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 import com.google.api.services.storage.model.BucketAccessControl;
 20  
 import com.google.api.services.storage.model.ObjectAccessControl;
 21  
 
 22  
 import java.io.Serializable;
 23  
 import java.util.Objects;
 24  
 
 25  
 /**
 26  
  *  Access Control List on for buckets or blobs.
 27  
  */
 28  
 public final class Acl implements Serializable {
 29  
 
 30  
   private static final long serialVersionUID = 6435575339887912222L;
 31  
 
 32  
   private final Entity entity;
 33  
   private final Role role;
 34  
 
 35  18
   public enum Role {
 36  2
     OWNER, READER, WRITER
 37  
   }
 38  
 
 39  
   public static abstract class Entity implements Serializable {
 40  
 
 41  
     private static final long serialVersionUID = -2707407252771255840L;
 42  
 
 43  
     private final Type type;
 44  
     private final String value;
 45  
 
 46  4
     public enum Type {
 47  2
       DOMAIN, GROUP, USER, PROJECT, UNKNOWN
 48  
     }
 49  
 
 50  
     Entity(Type type, String value) {
 51  
       this.type = type;
 52  
       this.value = value;
 53  
     }
 54  
 
 55  
     public Type type() {
 56  10
       return type;
 57  
     }
 58  
 
 59  
     protected String value() {
 60  150
       return value;
 61  
     }
 62  
 
 63  
     @Override
 64  
     public boolean equals(Object o) {
 65  72
       if (this == o) {
 66  32
         return true;
 67  
       }
 68  40
       if (o == null || getClass() != o.getClass()) {
 69  0
         return false;
 70  
       }
 71  40
       Entity entity = (Entity) o;
 72  40
       return Objects.equals(type, entity.type) &&
 73  
           Objects.equals(value, entity.value);
 74  
     }
 75  
 
 76  
     @Override
 77  
     public int hashCode() {
 78  0
       return Objects.hash(type, value);
 79  
     }
 80  
 
 81  
     @Override
 82  
     public String toString() {
 83  30
       return toPb();
 84  
     }
 85  
 
 86  
     String toPb() {
 87  64
       return type.name().toLowerCase() + "-" + value();
 88  
     }
 89  
 
 90  
     static Entity fromPb(String entity) {
 91  28
       if (entity.startsWith("user-")) {
 92  6
         return new User(entity.substring(5));
 93  
       }
 94  22
       if (entity.equals(User.ALL_USERS)) {
 95  4
         return User.ofAllUsers();
 96  
       }
 97  18
       if (entity.equals(User.ALL_AUTHENTICATED_USERS)) {
 98  6
         return User.ofAllAuthenticatedUsers();
 99  
       }
 100  12
       if (entity.startsWith("group-")) {
 101  2
         return new Group(entity.substring(6));
 102  
       }
 103  10
       if (entity.startsWith("domain-")) {
 104  2
         return new Domain(entity.substring(7));
 105  
       }
 106  8
       if (entity.startsWith("project-")) {
 107  6
         int idx = entity.indexOf('-', 8);
 108  6
         String team = entity.substring(8, idx);
 109  6
         String projectId = entity.substring(idx + 1);
 110  6
         return new Project(Project.ProjectRole.valueOf(team.toUpperCase()), projectId);
 111  
       }
 112  2
       return new RawEntity(entity);
 113  
     }
 114  
   }
 115  
 
 116  
   public static final class Domain extends Entity {
 117  
 
 118  
     private static final long serialVersionUID = -3033025857280447253L;
 119  
 
 120  
     public Domain(String domain) {
 121  6
       super(Type.DOMAIN, domain);
 122  6
     }
 123  
 
 124  
     public String domain() {
 125  2
       return value();
 126  
     }
 127  
   }
 128  
 
 129  
   public static final class Group extends Entity {
 130  
 
 131  
     private static final long serialVersionUID = -1660987136294408826L;
 132  
 
 133  
     public Group(String email) {
 134  6
       super(Type.GROUP, email);
 135  6
     }
 136  
 
 137  
     public String email() {
 138  2
       return value();
 139  
     }
 140  
   }
 141  
 
 142  
   public static final class User extends Entity {
 143  
 
 144  
     private static final long serialVersionUID = 3076518036392737008L;
 145  
     private static final String ALL_USERS = "allUsers";
 146  
     private static final String ALL_AUTHENTICATED_USERS = "allAuthenticatedUsers";
 147  
 
 148  
     public User(String email) {
 149  34
       super(Type.USER, email);
 150  34
     }
 151  
 
 152  
     public String email() {
 153  2
       return value();
 154  
     }
 155  
 
 156  
     @Override
 157  
     String toPb() {
 158  76
       switch (value()) {
 159  
         case ALL_AUTHENTICATED_USERS:
 160  42
           return ALL_AUTHENTICATED_USERS;
 161  
         case ALL_USERS:
 162  4
           return ALL_USERS;
 163  
         default:
 164  
           break;
 165  
       }
 166  30
       return super.toPb();
 167  
     }
 168  
 
 169  
     public static User ofAllUsers() {
 170  8
       return new User(ALL_USERS);
 171  
     }
 172  
 
 173  
     public static User ofAllAuthenticatedUsers() {
 174  12
       return new User(ALL_AUTHENTICATED_USERS);
 175  
     }
 176  
   }
 177  
 
 178  
   public static final class Project extends Entity {
 179  
 
 180  
     private static final long serialVersionUID = 7933776866530023027L;
 181  
 
 182  
     private final ProjectRole pRole;
 183  
     private final String projectId;
 184  
 
 185  10
     enum ProjectRole {
 186  2
       OWNERS, EDITORS, VIEWERS
 187  
     }
 188  
 
 189  
     public Project(ProjectRole pRole, String projectId) {
 190  14
       super(Type.PROJECT, pRole.name().toLowerCase() + "-" + projectId);
 191  14
       this.pRole = pRole;
 192  14
       this.projectId = projectId;
 193  14
     }
 194  
 
 195  
     public ProjectRole projectRole() {
 196  2
       return pRole;
 197  
     }
 198  
 
 199  
     public String projectId() {
 200  2
       return projectId;
 201  
     }
 202  
   }
 203  
 
 204  
   public static final class RawEntity extends Entity {
 205  
 
 206  
     private static final long serialVersionUID = 3966205614223053950L;
 207  
 
 208  
     RawEntity(String entity) {
 209  6
       super(Type.UNKNOWN, entity);
 210  6
     }
 211  
 
 212  
     @Override
 213  
     String toPb() {
 214  2
       return value();
 215  
     }
 216  
   }
 217  
 
 218  
   public Acl(Entity entity, Role role) {
 219  
     this.entity = entity;
 220  
     this.role = role;
 221  
   }
 222  
 
 223  
   public Entity entity() {
 224  76
     return entity;
 225  
   }
 226  
 
 227  
   public Role role() {
 228  76
     return role;
 229  
   }
 230  
 
 231  
   @Override
 232  
   public int hashCode() {
 233  0
     return Objects.hash(entity, role);
 234  
   }
 235  
 
 236  
   @Override
 237  
   public boolean equals(Object obj) {
 238  16
     if (this == obj) {
 239  2
       return true;
 240  
     }
 241  14
     if (obj == null || getClass() != obj.getClass()) {
 242  0
       return false;
 243  
     }
 244  14
     final Acl other = (Acl) obj;
 245  14
     return Objects.equals(this.entity, other.entity)
 246  
         && Objects.equals(this.role, other.role);
 247  
   }
 248  
 
 249  
   BucketAccessControl toBucketPb() {
 250  30
     BucketAccessControl bucketPb = new BucketAccessControl();
 251  30
     bucketPb.setRole(role().toString());
 252  30
     bucketPb.setEntity(entity().toString());
 253  30
     return bucketPb;
 254  
   }
 255  
 
 256  
   ObjectAccessControl toObjectPb() {
 257  44
     ObjectAccessControl objectPb = new ObjectAccessControl();
 258  44
     objectPb.setRole(role().name());
 259  44
     objectPb.setEntity(entity().toPb());
 260  44
     return objectPb;
 261  
   }
 262  
 
 263  
   static Acl fromPb(ObjectAccessControl objectAccessControl) {
 264  8
     Role role = Role.valueOf(objectAccessControl.getRole());
 265  8
     return new Acl(Entity.fromPb(objectAccessControl.getEntity()), role);
 266  
   }
 267  
 
 268  
   static Acl fromPb(BucketAccessControl bucketAccessControl) {
 269  6
     Role role = Role.valueOf(bucketAccessControl.getRole());
 270  6
     return new Acl(Entity.fromPb(bucketAccessControl.getEntity()), role);
 271  
   }
 272  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.BatchRequest.html b/cobertura/com.google.gcloud.storage.BatchRequest.html deleted file mode 100644 index 5523f47e46c5..000000000000 --- a/cobertura/com.google.gcloud.storage.BatchRequest.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.BatchRequest
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
BatchRequest
86%
13/15
50%
4/8
1.333
BatchRequest$1
N/A
N/A
1.333
BatchRequest$Builder
100%
12/12
N/A
1.333
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 import com.google.common.collect.ImmutableMap;
 20  
 import com.google.common.collect.Lists;
 21  
 import com.google.gcloud.storage.StorageService.BlobSourceOption;
 22  
 import com.google.gcloud.storage.StorageService.BlobTargetOption;
 23  
 
 24  
 import java.io.Serializable;
 25  
 import java.util.LinkedHashMap;
 26  
 import java.util.Map;
 27  
 import java.util.Objects;
 28  
 
 29  
 /**
 30  
  * Google storage batch request.
 31  
  */
 32  4
 public final class BatchRequest implements Serializable {
 33  
 
 34  
   private static final long serialVersionUID = -1527992265939800345L;
 35  
 
 36  
   private final Map<Blob, Iterable<BlobSourceOption>> toDelete;
 37  
   private final Map<Blob, Iterable<BlobTargetOption>> toUpdate;
 38  
   private final Map<Blob, Iterable<BlobSourceOption>> toGet;
 39  
 
 40  16
   public static class Builder {
 41  
 
 42  4
     private Map<Blob, Iterable<BlobSourceOption>> toDelete = new LinkedHashMap<>();
 43  4
     private Map<Blob, Iterable<BlobTargetOption>> toUpdate = new LinkedHashMap<>();
 44  4
     private Map<Blob, Iterable<BlobSourceOption>> toGet = new LinkedHashMap<>();
 45  
 
 46  8
     private Builder() {}
 47  
 
 48  
     /**
 49  
      * Delete the given blob.
 50  
      */
 51  
     public Builder delete(String bucket, String blob, BlobSourceOption... options) {
 52  6
       toDelete.put(Blob.of(bucket, blob), Lists.newArrayList(options));
 53  6
       return this;
 54  
     }
 55  
 
 56  
     /**
 57  
      * Update the given blob.
 58  
      */
 59  
     public Builder update(Blob blob, BlobTargetOption... options) {
 60  4
       toUpdate.put(blob, Lists.newArrayList(options));
 61  4
       return this;
 62  
     }
 63  
 
 64  
     /**
 65  
      * Retrieve metadata for the given blob.
 66  
      */
 67  
     public Builder get(String bucket, String blob, BlobSourceOption... options) {
 68  6
       toGet.put(Blob.of(bucket, blob), Lists.newArrayList(options));
 69  6
       return this;
 70  
     }
 71  
 
 72  
     public BatchRequest build() {
 73  4
       return new BatchRequest(this);
 74  
     }
 75  
   }
 76  
 
 77  4
   private BatchRequest(Builder builder) {
 78  4
     toDelete = ImmutableMap.copyOf(builder.toDelete);
 79  4
     toUpdate = ImmutableMap.copyOf(builder.toUpdate);
 80  4
     toGet = ImmutableMap.copyOf(builder.toGet);
 81  4
   }
 82  
 
 83  
   @Override
 84  
   public int hashCode() {
 85  0
     return Objects.hash(toDelete, toUpdate, toGet);
 86  
   }
 87  
 
 88  
   @Override
 89  
   public boolean equals(Object obj) {
 90  6
     if (!(obj instanceof BatchRequest)) {
 91  0
       return false;
 92  
     }
 93  6
     BatchRequest other = (BatchRequest) obj;
 94  6
     return Objects.equals(toDelete, other.toDelete)
 95  
         && Objects.equals(toUpdate, other.toUpdate)
 96  
         && Objects.equals(toGet, other.toGet);
 97  
   }
 98  
 
 99  
   public Map<Blob, Iterable<BlobSourceOption>> toDelete() {
 100  2
     return toDelete;
 101  
   }
 102  
 
 103  
   public Map<Blob, Iterable<BlobTargetOption>> toUpdate() {
 104  2
     return toUpdate;
 105  
   }
 106  
 
 107  
   public Map<Blob, Iterable<BlobSourceOption>> toGet() {
 108  2
     return toGet;
 109  
   }
 110  
 
 111  
   public static Builder builder() {
 112  4
     return new Builder();
 113  
   }
 114  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.BatchResponse.html b/cobertura/com.google.gcloud.storage.BatchResponse.html deleted file mode 100644 index b07c3d33ba41..000000000000 --- a/cobertura/com.google.gcloud.storage.BatchResponse.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.BatchResponse
-
 
- - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
BatchResponse
83%
10/12
50%
4/8
1.562
BatchResponse$Result
35%
5/14
30%
3/10
1.562
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 import com.google.common.base.MoreObjects;
 20  
 import com.google.common.collect.ImmutableList;
 21  
 
 22  
 import java.io.Serializable;
 23  
 import java.util.List;
 24  
 import java.util.Objects;
 25  
 
 26  
 /**
 27  
  * Google Storage batch response.
 28  
  */
 29  
 public final class BatchResponse implements Serializable {
 30  
 
 31  
   private static final long serialVersionUID = 1057416839397037706L;
 32  
 
 33  
   private final List<Result<Boolean>> deleteResult;
 34  
   private final List<Result<Blob>> updateResult;
 35  
   private final List<Result<Blob>> getResult;
 36  
 
 37  
   public static class Result<T extends Serializable> implements Serializable {
 38  
 
 39  
     private static final long serialVersionUID = -1946539570170529094L;
 40  2
     private static final Result EMPTY = new BatchResponse.Result(null);
 41  
 
 42  
     private final T value;
 43  
     private final StorageServiceException exception;
 44  
 
 45  
 
 46  
     public Result(T value) {
 47  
       this.value = value;
 48  
       this.exception = null;
 49  
     }
 50  
 
 51  
     public Result(StorageServiceException exception) {
 52  
       this.exception = exception;
 53  
       this.value = null;
 54  
     }
 55  
 
 56  
     static <T extends Serializable> Result<T> of(T value) {
 57  14
       return new Result<>(value);
 58  
     }
 59  
 
 60  
     /**
 61  
      * Returns the result.
 62  
      *
 63  
      * @throws StorageServiceException if failed
 64  
      */
 65  
     public T get() throws StorageServiceException {
 66  0
       if (failed()) {
 67  0
         throw failure();
 68  
       }
 69  0
       return value;
 70  
     }
 71  
 
 72  
     /**
 73  
      * Returns the failure or {@code null} if was successful.
 74  
      */
 75  
     public StorageServiceException failure() {
 76  0
       return exception;
 77  
     }
 78  
 
 79  
     /**
 80  
      * Returns {@code true} if failed, {@code false} otherwise.
 81  
      */
 82  
     public boolean failed() {
 83  0
       return exception != null;
 84  
     }
 85  
 
 86  
     @Override
 87  
     public int hashCode() {
 88  0
       return Objects.hash(value, exception);
 89  
     }
 90  
 
 91  
     @Override
 92  
     public boolean equals(Object obj) {
 93  2
       if (!(obj instanceof Result)) {
 94  0
         return false;
 95  
       }
 96  2
       Result<?> other = (Result<?>) obj;
 97  2
       return Objects.equals(value, other.value)
 98  
           && Objects.equals(exception, other.exception);
 99  
     }
 100  
 
 101  
     @Override
 102  
     public String toString() {
 103  0
       return MoreObjects.toStringHelper(this)
 104  
           .add("value", value)
 105  
           .add("exception", exception)
 106  
           .toString();
 107  
     }
 108  
 
 109  
     @SuppressWarnings("unchecked")
 110  
     static <T extends Serializable> Result<T> empty() {
 111  0
       return EMPTY;
 112  
     }
 113  
   }
 114  
 
 115  
   public BatchResponse(List<Result<Boolean>> deleteResult, List<Result<Blob>> updateResult,
 116  4
       List<Result<Blob>> getResult) {
 117  4
     this.deleteResult = ImmutableList.copyOf(deleteResult);
 118  4
     this.updateResult = ImmutableList.copyOf(updateResult);
 119  4
     this.getResult = ImmutableList.copyOf(getResult);
 120  4
   }
 121  
 
 122  
   @Override
 123  
   public int hashCode() {
 124  0
     return Objects.hash(deleteResult, updateResult, getResult);
 125  
   }
 126  
 
 127  
   @Override
 128  
   public boolean equals(Object obj) {
 129  6
     if (!(obj instanceof BatchResponse)) {
 130  0
       return false;
 131  
     }
 132  6
     BatchResponse other = (BatchResponse) obj;
 133  6
     return Objects.equals(deleteResult, other.deleteResult)
 134  
         && Objects.equals(updateResult, other.updateResult)
 135  
         && Objects.equals(updateResult, other.updateResult);
 136  
   }
 137  
 
 138  
   /**
 139  
    * Returns the results for the delete operations using the request order.
 140  
    */
 141  
   public List<Result<Boolean>> deletes() {
 142  2
     return deleteResult;
 143  
   }
 144  
 
 145  
   /**
 146  
    * Returns the results for the update operations using the request order.
 147  
    */
 148  
   public List<Result<Blob>> updates() {
 149  2
     return updateResult;
 150  
   }
 151  
 
 152  
   /**
 153  
    * Returns the results for the get operations using the request order.
 154  
    */
 155  
   public List<Result<Blob>> gets() {
 156  
     return getResult;
 157  
   }
 158  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.Blob.html b/cobertura/com.google.gcloud.storage.Blob.html deleted file mode 100644 index e8b4f659222d..000000000000 --- a/cobertura/com.google.gcloud.storage.Blob.html +++ /dev/null @@ -1,855 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.Blob
-
 
- - - - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Blob
97%
98/101
63%
24/38
1.367
Blob$1
0%
0/2
N/A
1.367
Blob$2
0%
0/2
N/A
1.367
Blob$3
100%
2/2
N/A
1.367
Blob$4
100%
2/2
N/A
1.367
Blob$Builder
100%
48/48
50%
2/4
1.367
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 import static com.google.common.base.MoreObjects.firstNonNull;
 20  
 import static com.google.common.base.Preconditions.checkNotNull;
 21  
 
 22  
 import com.google.api.client.util.Data;
 23  
 import com.google.api.client.util.DateTime;
 24  
 import com.google.api.services.storage.model.ObjectAccessControl;
 25  
 import com.google.api.services.storage.model.StorageObject;
 26  
 import com.google.api.services.storage.model.StorageObject.Owner;
 27  
 import com.google.common.base.Function;
 28  
 import com.google.common.base.MoreObjects;
 29  
 import com.google.common.collect.ImmutableList;
 30  
 import com.google.common.collect.ImmutableMap;
 31  
 import com.google.common.collect.Lists;
 32  
 
 33  
 import java.io.Serializable;
 34  
 import java.math.BigInteger;
 35  
 import java.util.List;
 36  
 import java.util.Map;
 37  
 import java.util.Objects;
 38  
 
 39  
 /**
 40  
  * A Google Storage object.
 41  
  *
 42  
  * @see <a href="https://cloud.google.com/storage/docs/concepts-techniques#concepts">Concepts and Terminology</a>
 43  
  */
 44  52
 public final class Blob implements Serializable {
 45  
 
 46  
   private static final long serialVersionUID = 2228487739943277159L;
 47  
 
 48  2
   static final Function<StorageObject, Blob> FROM_PB_FUNCTION =
 49  0
       new Function<StorageObject, Blob>() {
 50  
         @Override
 51  
         public Blob apply(StorageObject pb) {
 52  0
           return Blob.fromPb(pb);
 53  
         }
 54  
       };
 55  
 
 56  0
   static final Function<Blob, StorageObject> TO_PB_FUNCTION = new Function<Blob, StorageObject>() {
 57  
     @Override
 58  
     public StorageObject apply(Blob blob) {
 59  0
       return blob.toPb();
 60  
     }
 61  
   };
 62  
 
 63  
   private final String bucket;
 64  
   private final String id;
 65  
   private final String name;
 66  
   private final String selfLink;
 67  
   private final String cacheControl;
 68  
   private final List<Acl> acl;
 69  
   private final Acl.Entity owner;
 70  
   private final Long size;
 71  
   private final String etag;
 72  
   private final String md5;
 73  
   private final String crc32c;
 74  
   private final String mediaLink;
 75  
   private final Map<String, String> metadata;
 76  
   private final Long generation;
 77  
   private final Long metageneration;
 78  
   private final Long deleteTime;
 79  
   private final Long updateTime;
 80  
   private final String contentType;
 81  
   private final String contentEncoding;
 82  
   private final String contentDisposition;
 83  
   private final String contentLanguage;
 84  
   private final Integer componentCount;
 85  
 
 86  1196
   public static final class Builder {
 87  
 
 88  
     private String bucket;
 89  
     private String id;
 90  
     private String name;
 91  
     private String contentType;
 92  
     private String contentEncoding;
 93  
     private String contentDisposition;
 94  
     private String contentLanguage;
 95  
     private Integer componentCount;
 96  
     private String cacheControl;
 97  
     private ImmutableList<Acl> acl;
 98  
     private Acl.Entity owner;
 99  
     private Long size;
 100  
     private String etag;
 101  
     private String selfLink;
 102  
     private String md5;
 103  
     private String crc32c;
 104  
     private String mediaLink;
 105  
     private ImmutableMap<String, String> metadata;
 106  
     private Long generation;
 107  
     private Long metageneration;
 108  
     private Long deleteTime;
 109  
     private Long updateTime;
 110  
 
 111  
     private Builder() {}
 112  
 
 113  
     public Builder bucket(String bucket) {
 114  56
       this.bucket = checkNotNull(bucket);
 115  56
       return this;
 116  
     }
 117  
 
 118  
     Builder id(String id) {
 119  10
       this.id = id;
 120  10
       return this;
 121  
     }
 122  
 
 123  
     public Builder name(String name) {
 124  56
       this.name = checkNotNull(name);
 125  56
       return this;
 126  
     }
 127  
 
 128  
     public Builder contentType(String contentType) {
 129  10
       this.contentType = firstNonNull(contentType, Data.<String>nullOf(String.class));
 130  10
       return this;
 131  
     }
 132  
 
 133  
     public Builder contentDisposition(String contentDisposition) {
 134  10
       this.contentDisposition = firstNonNull(contentDisposition, Data.<String>nullOf(String.class));
 135  10
       return this;
 136  
     }
 137  
 
 138  
     public Builder contentLanguage(String contentLanguage) {
 139  10
       this.contentLanguage = firstNonNull(contentLanguage, Data.<String>nullOf(String.class));
 140  10
       return this;
 141  
     }
 142  
 
 143  
     public Builder contentEncoding(String contentEncoding) {
 144  10
       this.contentEncoding = firstNonNull(contentEncoding, Data.<String>nullOf(String.class));
 145  10
       return this;
 146  
     }
 147  
 
 148  
     Builder componentCount(Integer componentCount) {
 149  10
       this.componentCount = componentCount;
 150  10
       return this;
 151  
     }
 152  
 
 153  
     public Builder cacheControl(String cacheControl) {
 154  10
       this.cacheControl = firstNonNull(cacheControl, Data.<String>nullOf(String.class));
 155  10
       return this;
 156  
     }
 157  
 
 158  
     public Builder acl(List<Acl> acl) {
 159  10
       this.acl = acl != null ? ImmutableList.copyOf(acl) : null;
 160  10
       return this;
 161  
     }
 162  
 
 163  
     Builder owner(Acl.Entity owner) {
 164  10
       this.owner = owner;
 165  10
       return this;
 166  
     }
 167  
 
 168  
     Builder size(Long size) {
 169  14
       this.size = size;
 170  14
       return this;
 171  
     }
 172  
 
 173  
     Builder etag(String etag) {
 174  10
       this.etag = etag;
 175  10
       return this;
 176  
     }
 177  
 
 178  
     Builder selfLink(String selfLink) {
 179  10
       this.selfLink = selfLink;
 180  10
       return this;
 181  
     }
 182  
 
 183  
     public Builder md5(String md5) {
 184  10
       this.md5 = firstNonNull(md5, Data.<String>nullOf(String.class));
 185  10
       return this;
 186  
     }
 187  
 
 188  
     public Builder crc32c(String crc32c) {
 189  10
       this.crc32c = firstNonNull(crc32c, Data.<String>nullOf(String.class));
 190  10
       return this;
 191  
     }
 192  
 
 193  
     Builder mediaLink(String mediaLink) {
 194  10
       this.mediaLink = mediaLink;
 195  10
       return this;
 196  
     }
 197  
 
 198  
     public Builder metadata(Map<String, String> metadata) {
 199  10
       this.metadata = metadata != null ? ImmutableMap.copyOf(metadata) : null;
 200  10
       return this;
 201  
     }
 202  
 
 203  
     Builder generation(Long generation) {
 204  10
       this.generation = generation;
 205  10
       return this;
 206  
     }
 207  
 
 208  
     Builder metageneration(Long metageneration) {
 209  10
       this.metageneration = metageneration;
 210  10
       return this;
 211  
     }
 212  
 
 213  
     Builder deleteTime(Long deleteTime) {
 214  10
       this.deleteTime = deleteTime;
 215  10
       return this;
 216  
     }
 217  
 
 218  
     Builder updateTime(Long updateTime) {
 219  10
       this.updateTime = updateTime;
 220  10
       return this;
 221  
     }
 222  
 
 223  
     public Blob build() {
 224  52
       checkNotNull(bucket);
 225  52
       checkNotNull(name);
 226  52
       return new Blob(this);
 227  
     }
 228  
   }
 229  
 
 230  52
   private Blob(Builder builder) {
 231  52
     bucket = builder.bucket;
 232  52
     name = builder.name;
 233  52
     id = builder.id;
 234  52
     cacheControl = builder.cacheControl;
 235  52
     contentEncoding = builder.contentEncoding;
 236  52
     contentType = builder.contentType;
 237  52
     contentDisposition = builder.contentDisposition;
 238  52
     contentLanguage = builder.contentLanguage;
 239  52
     componentCount = builder.componentCount;
 240  52
     acl = builder.acl;
 241  52
     owner = builder.owner;
 242  52
     size = builder.size;
 243  52
     etag = builder.etag;
 244  52
     selfLink = builder.selfLink;
 245  52
     md5 = builder.md5;
 246  52
     crc32c = builder.crc32c;
 247  52
     mediaLink = builder.mediaLink;
 248  52
     metadata = builder.metadata;
 249  52
     generation = builder.generation;
 250  52
     metageneration = builder.metageneration;
 251  52
     deleteTime = builder.deleteTime;
 252  52
     updateTime = builder.updateTime;
 253  52
   }
 254  
 
 255  
   public String bucket() {
 256  18
     return bucket;
 257  
   }
 258  
 
 259  
   public String id() {
 260  14
     return id;
 261  
   }
 262  
 
 263  
   public String name() {
 264  18
     return name;
 265  
   }
 266  
 
 267  
   public String cacheControl() {
 268  14
     return Data.isNull(cacheControl) ? null : cacheControl;
 269  
   }
 270  
 
 271  
   public List<Acl> acl() {
 272  14
     return acl;
 273  
   }
 274  
 
 275  
   public Acl.Entity owner() {
 276  14
     return owner;
 277  
   }
 278  
 
 279  
   public Long size() {
 280  16
     return size;
 281  
   }
 282  
 
 283  
   public String contentType() {
 284  14
     return Data.isNull(contentType) ? null : contentType;
 285  
   }
 286  
 
 287  
   public String contentEncoding() {
 288  14
     return Data.isNull(contentEncoding) ? null : contentEncoding;
 289  
   }
 290  
 
 291  
   public String contentDisposition() {
 292  14
     return Data.isNull(contentDisposition) ? null : contentDisposition;
 293  
   }
 294  
 
 295  
   public String contentLanguage() {
 296  14
     return Data.isNull(contentLanguage) ? null : contentLanguage;
 297  
   }
 298  
 
 299  
   public Integer componentCount() {
 300  14
     return componentCount;
 301  
   }
 302  
 
 303  
   public String etag() {
 304  14
     return etag;
 305  
   }
 306  
 
 307  
   public String selfLink() {
 308  14
     return selfLink;
 309  
   }
 310  
 
 311  
   public String md5() {
 312  14
     return Data.isNull(md5) ? null : md5;
 313  
   }
 314  
 
 315  
   public String crc32c() {
 316  14
     return Data.isNull(crc32c) ? null : crc32c;
 317  
   }
 318  
 
 319  
   public String mediaLink() {
 320  14
     return mediaLink;
 321  
   }
 322  
 
 323  
   public Map<String, String> metadata() {
 324  14
     return metadata;
 325  
   }
 326  
 
 327  
   public Long generation() {
 328  14
     return generation;
 329  
   }
 330  
 
 331  
   public Long metageneration() {
 332  14
     return metageneration;
 333  
   }
 334  
 
 335  
   public Long deleteTime() {
 336  14
     return deleteTime;
 337  
   }
 338  
 
 339  
   public Long updateTime() {
 340  14
     return updateTime;
 341  
   }
 342  
 
 343  
   public Builder toBuilder() {
 344  6
     return new Builder()
 345  
         .bucket(bucket)
 346  
         .name(name)
 347  
         .id(id)
 348  
         .generation(generation)
 349  
         .cacheControl(cacheControl)
 350  
         .contentEncoding(contentEncoding)
 351  
         .contentType(contentType)
 352  
         .contentDisposition(contentDisposition)
 353  
         .contentLanguage(contentLanguage)
 354  
         .componentCount(componentCount)
 355  
         .crc32c(crc32c)
 356  
         .md5(md5)
 357  
         .deleteTime(deleteTime)
 358  
         .updateTime(updateTime)
 359  
         .mediaLink(mediaLink)
 360  
         .metadata(metadata)
 361  
         .metageneration(metageneration)
 362  
         .acl(acl)
 363  
         .owner(owner)
 364  
         .size(size)
 365  
         .etag(etag)
 366  
         .selfLink(selfLink);
 367  
   }
 368  
 
 369  
   @Override
 370  
   public String toString() {
 371  0
     return MoreObjects.toStringHelper(this)
 372  
         .add("bucket", bucket())
 373  
         .add("name", name())
 374  
         .add("size", size())
 375  
         .add("content-type", contentType())
 376  
         .add("metadata", metadata())
 377  
         .toString();
 378  
   }
 379  
 
 380  
   public static Blob of(String bucket, String name) {
 381  42
     return builder(bucket, name).build();
 382  
   }
 383  
 
 384  
   public static Builder builder(Bucket bucket, String name) {
 385  0
     return builder(bucket.name(), name);
 386  
   }
 387  
 
 388  
   public static Builder builder(String bucket, String name) {
 389  44
     return new Builder().bucket(bucket).name(name);
 390  
   }
 391  
 
 392  
   @Override
 393  
   public int hashCode() {
 394  30
     return Objects.hash(bucket, name);
 395  
   }
 396  
 
 397  
   @Override
 398  
   public boolean equals(Object obj) {
 399  32
     if (!(obj instanceof Blob)) {
 400  0
       return  false;
 401  
     }
 402  32
     return Objects.equals(toPb(), ((Blob) obj).toPb());
 403  
   }
 404  
 
 405  
   StorageObject toPb() {
 406  66
     StorageObject storageObject = new StorageObject();
 407  66
     if (acl != null) {
 408  28
       storageObject.setAcl(Lists.transform(acl, new Function<Acl, ObjectAccessControl>() {
 409  
         @Override
 410  
         public ObjectAccessControl apply(Acl acl) {
 411  28
           return acl.toObjectPb();
 412  
         }
 413  
       }));
 414  
     }
 415  66
     if (deleteTime != null) {
 416  14
       storageObject.setTimeDeleted(new DateTime(deleteTime));
 417  
     }
 418  66
     if (updateTime != null) {
 419  14
       storageObject.setUpdated(new DateTime(updateTime));
 420  
     }
 421  66
     if (size != null) {
 422  14
       storageObject.setSize(BigInteger.valueOf(size));
 423  
     }
 424  66
     if (owner != null) {
 425  14
       storageObject.setOwner(new Owner().setEntity(owner.toPb()));
 426  
     }
 427  66
     storageObject.setBucket(bucket);
 428  66
     storageObject.setCacheControl(cacheControl);
 429  66
     storageObject.setContentEncoding(contentEncoding);
 430  66
     storageObject.setCrc32c(crc32c);
 431  66
     storageObject.setContentType(contentType);
 432  66
     storageObject.setGeneration(generation);
 433  66
     storageObject.setMd5Hash(md5);
 434  66
     storageObject.setMediaLink(mediaLink);
 435  66
     storageObject.setMetadata(metadata);
 436  66
     storageObject.setMetageneration(metageneration);
 437  66
     storageObject.setName(name);
 438  66
     storageObject.setContentDisposition(contentDisposition);
 439  66
     storageObject.setComponentCount(componentCount);
 440  66
     storageObject.setContentLanguage(contentLanguage);
 441  66
     storageObject.setEtag(etag);
 442  66
     storageObject.setId(id);
 443  66
     storageObject.setSelfLink(selfLink);
 444  66
     return storageObject;
 445  
   }
 446  
 
 447  
   static Blob fromPb(StorageObject storageObject) {
 448  2
     Builder builder = new Builder()
 449  
         .bucket(storageObject.getBucket())
 450  
         .cacheControl(storageObject.getCacheControl())
 451  
         .contentEncoding(storageObject.getContentEncoding())
 452  
         .crc32c(storageObject.getCrc32c())
 453  
         .contentType(storageObject.getContentType())
 454  
         .generation(storageObject.getGeneration())
 455  
         .md5(storageObject.getMd5Hash())
 456  
         .mediaLink(storageObject.getMediaLink())
 457  
         .metageneration(storageObject.getMetageneration())
 458  
         .name(storageObject.getName())
 459  
         .contentDisposition(storageObject.getContentDisposition())
 460  
         .componentCount(storageObject.getComponentCount())
 461  
         .contentLanguage(storageObject.getContentLanguage())
 462  
         .etag(storageObject.getEtag())
 463  
         .id(storageObject.getId())
 464  
         .selfLink(storageObject.getSelfLink());
 465  2
     if (storageObject.getMetadata() != null) {
 466  2
       builder.metadata(storageObject.getMetadata());
 467  
     }
 468  2
     if (storageObject.getTimeDeleted() != null) {
 469  2
       builder.deleteTime(storageObject.getTimeDeleted().getValue());
 470  
     }
 471  2
     if (storageObject.getUpdated() != null) {
 472  2
       builder.updateTime(storageObject.getUpdated().getValue());
 473  
     }
 474  2
     if (storageObject.getSize() != null) {
 475  2
       builder.size(storageObject.getSize().longValue());
 476  
     }
 477  2
     if (storageObject.getOwner() != null) {
 478  2
       builder.owner(Acl.Entity.fromPb(storageObject.getOwner().getEntity()));
 479  
     }
 480  2
     if (storageObject.getAcl() != null) {
 481  4
       builder.acl(Lists.transform(storageObject.getAcl(), new Function<ObjectAccessControl, Acl>() {
 482  
         @Override
 483  
         public Acl apply(ObjectAccessControl objectAccessControl) {
 484  4
           return Acl.fromPb(objectAccessControl);
 485  
         }
 486  
       }));
 487  
     }
 488  2
     return builder.build();
 489  
   }
 490  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.BlobReadChannel.html b/cobertura/com.google.gcloud.storage.BlobReadChannel.html deleted file mode 100644 index 9b9eaebee44a..000000000000 --- a/cobertura/com.google.gcloud.storage.BlobReadChannel.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.BlobReadChannel
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
BlobReadChannel
N/A
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 import java.io.Closeable;
 20  
 import java.io.IOException;
 21  
 import java.io.Serializable;
 22  
 import java.nio.channels.ReadableByteChannel;
 23  
 
 24  
 /**
 25  
  * A channel for reading data from a Google Cloud Storage object.
 26  
  *
 27  
  * Implementations of this class may buffer data internally to reduce remote calls.
 28  
  *
 29  
  * This class is @{link Serializable}, which allows incremental reads.
 30  
  */
 31  
 public interface BlobReadChannel extends ReadableByteChannel, Serializable, Closeable {
 32  
 
 33  
   /**
 34  
    * Overridden to remove IOException.
 35  
    *
 36  
    * @see java.nio.channels.Channel#close()
 37  
    */
 38  
   @Override
 39  
   void close();
 40  
 
 41  
   void seek(int position) throws IOException;
 42  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.BlobReadChannelImpl.html b/cobertura/com.google.gcloud.storage.BlobReadChannelImpl.html deleted file mode 100644 index 8a5d7d90ddbd..000000000000 --- a/cobertura/com.google.gcloud.storage.BlobReadChannelImpl.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.BlobReadChannelImpl
-
 
- - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
BlobReadChannelImpl
0%
0/53
0%
0/16
2.1
BlobReadChannelImpl$1
0%
0/2
N/A
2.1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 import static com.google.gcloud.RetryHelper.runWithRetries;
 20  
 
 21  
 import com.google.api.services.storage.model.StorageObject;
 22  
 import com.google.gcloud.spi.StorageRpc;
 23  
 
 24  
 import java.io.IOException;
 25  
 import java.io.ObjectInputStream;
 26  
 import java.io.ObjectOutputStream;
 27  
 import java.nio.ByteBuffer;
 28  
 import java.util.Map;
 29  
 import java.util.concurrent.Callable;
 30  
 
 31  
 /**
 32  
  * Default implementation for BlobReadChannel.
 33  
  */
 34  0
 class BlobReadChannelImpl implements BlobReadChannel {
 35  
 
 36  
   private static final int MIN_BUFFER_SIZE = 2 * 1024 * 1024;
 37  
   private static final long serialVersionUID = 4821762590742862669L;
 38  
 
 39  
   private final StorageServiceOptions serviceOptions;
 40  
   private final Blob blob;
 41  
   private final Map<StorageRpc.Option, ?> requestOptions;
 42  
   private int position;
 43  
   private boolean isOpen;
 44  
   private boolean endOfStream;
 45  
 
 46  
   private transient StorageRpc storageRpc;
 47  
   private transient StorageObject storageObject;
 48  
   private transient int bufferPos;
 49  
   private transient byte[] buffer;
 50  
 
 51  
   BlobReadChannelImpl(StorageServiceOptions serviceOptions, Blob blob,
 52  0
       Map<StorageRpc.Option, ?> requestOptions) {
 53  0
     this.serviceOptions = serviceOptions;
 54  0
     this.blob = blob;
 55  0
     this.requestOptions = requestOptions;
 56  0
     isOpen = true;
 57  0
     initTransients();
 58  0
   }
 59  
 
 60  
   private void writeObject(ObjectOutputStream out) throws IOException {
 61  0
     if (buffer != null) {
 62  0
       position += bufferPos;
 63  0
       buffer = null;
 64  0
       bufferPos = 0;
 65  0
       endOfStream = false;
 66  
     }
 67  0
     out.defaultWriteObject();
 68  0
   }
 69  
 
 70  
   private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
 71  0
     in.defaultReadObject();
 72  0
     initTransients();
 73  0
   }
 74  
 
 75  
   private void initTransients() {
 76  0
     storageRpc = serviceOptions.storageRpc();
 77  0
     storageObject = blob.toPb();
 78  0
   }
 79  
 
 80  
   @Override
 81  
   public boolean isOpen() {
 82  
     return isOpen;
 83  
   }
 84  
 
 85  
   @Override
 86  
   public void close() {
 87  0
     if (isOpen) {
 88  0
       buffer = null;
 89  0
       isOpen = false;
 90  
     }
 91  0
   }
 92  
 
 93  
   private void validateOpen() throws IOException {
 94  0
     if (!isOpen) {
 95  0
       throw new IOException("stream is closed");
 96  
     }
 97  0
   }
 98  
 
 99  
   @Override
 100  
   public void seek(int position) throws IOException {
 101  0
     validateOpen();
 102  0
     this.position = position;
 103  0
     buffer = null;
 104  0
     bufferPos = 0;
 105  0
     endOfStream = false;
 106  0
   }
 107  
 
 108  
   @Override
 109  
   public int read(ByteBuffer byteBuffer) throws IOException {
 110  0
     validateOpen();
 111  0
     if (buffer == null) {
 112  0
       if (endOfStream) {
 113  0
         return -1;
 114  
       }
 115  0
       final int toRead = Math.max(byteBuffer.remaining(), MIN_BUFFER_SIZE);
 116  0
       buffer = runWithRetries(new Callable<byte[]>() {
 117  
         @Override
 118  
         public byte[] call() {
 119  0
           return storageRpc.read(storageObject, requestOptions, position, toRead);
 120  
         }
 121  
       }, serviceOptions.retryParams(), StorageServiceImpl.EXCEPTION_HANDLER);
 122  0
       if (toRead > buffer.length) {
 123  0
         endOfStream = true;
 124  0
         if (buffer.length == 0) {
 125  0
           buffer = null;
 126  0
           return -1;
 127  
         }
 128  
       }
 129  
     }
 130  0
     int toWrite = Math.min(buffer.length - bufferPos, byteBuffer.remaining());
 131  0
     byteBuffer.put(buffer, bufferPos, toWrite);
 132  0
     bufferPos += toWrite;
 133  0
     if (bufferPos >= buffer.length) {
 134  0
       position += buffer.length;
 135  0
       buffer = null;
 136  0
       bufferPos = 0;
 137  
     }
 138  0
     return toWrite;
 139  
   }
 140  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.BlobWriteChannel.html b/cobertura/com.google.gcloud.storage.BlobWriteChannel.html deleted file mode 100644 index ecf08cd0f7c7..000000000000 --- a/cobertura/com.google.gcloud.storage.BlobWriteChannel.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.BlobWriteChannel
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
BlobWriteChannel
N/A
N/A
0
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 import java.io.Closeable;
 20  
 import java.io.Serializable;
 21  
 import java.nio.channels.WritableByteChannel;
 22  
 
 23  
 /**
 24  
  * A channel for writing data to a Google Cloud Storage object.
 25  
  *
 26  
  * Implementations of this class may further buffer data internally to reduce remote calls. Written
 27  
  * data will only be visible after calling {@link #close()}. This class is serializable, to allow
 28  
  * incremental writes.
 29  
  */
 30  
 public interface BlobWriteChannel extends WritableByteChannel, Serializable, Closeable {
 31  
 
 32  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.BlobWriterChannelImpl.html b/cobertura/com.google.gcloud.storage.BlobWriterChannelImpl.html deleted file mode 100644 index 554dab85b69b..000000000000 --- a/cobertura/com.google.gcloud.storage.BlobWriterChannelImpl.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.BlobWriterChannelImpl
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
BlobWriterChannelImpl
0%
0/48
0%
0/18
1.909
BlobWriterChannelImpl$1
0%
0/2
N/A
1.909
BlobWriterChannelImpl$2
0%
0/2
N/A
1.909
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 import static com.google.gcloud.RetryHelper.runWithRetries;
 20  
 import static java.util.concurrent.Executors.callable;
 21  
 
 22  
 import com.google.api.services.storage.model.StorageObject;
 23  
 import com.google.gcloud.spi.StorageRpc;
 24  
 
 25  
 import java.io.IOException;
 26  
 import java.io.ObjectInputStream;
 27  
 import java.io.ObjectOutputStream;
 28  
 import java.nio.ByteBuffer;
 29  
 import java.util.Arrays;
 30  
 import java.util.Map;
 31  
 
 32  
 /**
 33  
  * Default implementation for BlobWriteChannel.
 34  
  */
 35  0
 class BlobWriterChannelImpl implements BlobWriteChannel {
 36  
 
 37  
   private static final long serialVersionUID = 8675286882724938737L;
 38  
   private static final int CHUNK_SIZE = 256 * 1024;
 39  
   private static final int MIN_BUFFER_SIZE = 8 * CHUNK_SIZE;
 40  
 
 41  
   private final StorageServiceOptions options;
 42  
   private final Blob blob;
 43  
   private final String uploadId;
 44  
   private int position;
 45  0
   private byte[] buffer = new byte[0];
 46  
   private int limit;
 47  0
   private boolean isOpen = true;
 48  
 
 49  
   private transient StorageRpc storageRpc;
 50  
   private transient StorageObject storageObject;
 51  
 
 52  
   public BlobWriterChannelImpl(StorageServiceOptions options, Blob blob,
 53  0
       Map<StorageRpc.Option, ?> optionsMap) {
 54  0
     this.options = options;
 55  0
     this.blob = blob;
 56  0
     initTransients();
 57  0
     uploadId = options.storageRpc().open(storageObject, optionsMap);
 58  0
   }
 59  
 
 60  
   private void writeObject(ObjectOutputStream out) throws IOException {
 61  0
     if (isOpen) {
 62  0
       flush(true);
 63  
     }
 64  0
     out.defaultWriteObject();
 65  0
   }
 66  
 
 67  
   private void flush(boolean compact) {
 68  0
     if (limit >= MIN_BUFFER_SIZE || compact && limit >= CHUNK_SIZE) {
 69  0
       final int length = limit - limit % CHUNK_SIZE;
 70  0
       runWithRetries(callable(new Runnable() {
 71  
         @Override
 72  
         public void run() {
 73  0
           storageRpc.write(uploadId, buffer, 0, storageObject, position, length, false);
 74  0
         }
 75  
       }), options.retryParams(), StorageServiceImpl.EXCEPTION_HANDLER);
 76  0
       position += length;
 77  0
       limit -= length;
 78  0
       byte[] temp = new byte[compact ? limit : MIN_BUFFER_SIZE];
 79  0
       System.arraycopy(buffer, length, temp, 0, limit);
 80  0
       buffer = temp;
 81  
     }
 82  0
   }
 83  
 
 84  
   private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
 85  0
     in.defaultReadObject();
 86  0
     if (isOpen) {
 87  0
       initTransients();
 88  
     }
 89  0
   }
 90  
 
 91  
   private void initTransients() {
 92  0
     storageRpc = options.storageRpc();
 93  0
     storageObject = blob.toPb();
 94  0
   }
 95  
 
 96  
   private void validateOpen() throws IOException {
 97  0
     if (!isOpen) {
 98  0
       throw new IOException("stream is closed");
 99  
     }
 100  0
   }
 101  
 
 102  
   @Override
 103  
   public int write(ByteBuffer byteBuffer) throws IOException {
 104  0
     validateOpen();
 105  0
     int toWrite = byteBuffer.remaining();
 106  0
     int spaceInBuffer = buffer.length - limit;
 107  0
     if (spaceInBuffer >= toWrite) {
 108  0
       byteBuffer.get(buffer, limit, toWrite);
 109  
     } else {
 110  0
       buffer = Arrays.copyOf(buffer,
 111  
           Math.max(MIN_BUFFER_SIZE, buffer.length + toWrite - spaceInBuffer));
 112  0
       byteBuffer.get(buffer, limit, toWrite);
 113  
     }
 114  0
     limit += toWrite;
 115  0
     flush(false);
 116  0
     return toWrite;
 117  
   }
 118  
 
 119  
   @Override
 120  
   public boolean isOpen() {
 121  
     return isOpen;
 122  
   }
 123  
 
 124  
   @Override
 125  
   public void close() throws IOException {
 126  0
     if (isOpen) {
 127  0
       runWithRetries(callable(new Runnable() {
 128  
         @Override
 129  
         public void run() {
 130  0
           storageRpc.write(uploadId, buffer, 0, storageObject, position, limit, true);
 131  0
         }
 132  
       }), options.retryParams(), StorageServiceImpl.EXCEPTION_HANDLER);
 133  0
       position += buffer.length;
 134  0
       isOpen = false;
 135  0
       buffer = null;
 136  
     }
 137  0
   }
 138  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.Bucket.html b/cobertura/com.google.gcloud.storage.Bucket.html deleted file mode 100644 index fd95103fbaca..000000000000 --- a/cobertura/com.google.gcloud.storage.Bucket.html +++ /dev/null @@ -1,1280 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.Bucket
-
 
- - - - - - - - - - - - - - - - - - - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Bucket
96%
95/98
70%
38/54
1.587
Bucket$1
0%
0/2
N/A
1.587
Bucket$2
0%
0/2
N/A
1.587
Bucket$3
100%
2/2
N/A
1.587
Bucket$4
100%
2/2
N/A
1.587
Bucket$5
100%
2/2
N/A
1.587
Bucket$6
100%
2/2
N/A
1.587
Bucket$7
100%
2/2
N/A
1.587
Bucket$8
100%
2/2
N/A
1.587
Bucket$AgeDeleteRule
83%
5/6
N/A
1.587
Bucket$Builder
100%
35/35
50%
3/6
1.587
Bucket$CreatedBeforeDeleteRule
0%
0/6
N/A
1.587
Bucket$DeleteRule
55%
16/29
38%
7/18
1.587
Bucket$DeleteRule$Type
100%
2/2
N/A
1.587
Bucket$IsLiveDeleteRule
0%
0/5
N/A
1.587
Bucket$Location
66%
16/24
25%
2/8
1.587
Bucket$Location$Option
100%
5/5
N/A
1.587
Bucket$NumNewerVersionsDeleteRule
0%
0/6
N/A
1.587
Bucket$RawDeleteRule
0%
0/11
N/A
1.587
Bucket$StorageClass
87%
14/16
50%
1/2
1.587
Bucket$StorageClass$Option
100%
5/5
N/A
1.587
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 import static com.google.api.client.repackaged.com.google.common.base.Preconditions.checkNotNull;
 20  
 import static com.google.common.base.MoreObjects.firstNonNull;
 21  
 import static com.google.common.collect.Lists.transform;
 22  
 
 23  
 import com.google.api.client.json.jackson2.JacksonFactory;
 24  
 import com.google.api.client.util.Data;
 25  
 import com.google.api.client.util.DateTime;
 26  
 import com.google.api.services.storage.model.Bucket.Lifecycle;
 27  
 import com.google.api.services.storage.model.Bucket.Lifecycle.Rule;
 28  
 import com.google.api.services.storage.model.Bucket.Owner;
 29  
 import com.google.api.services.storage.model.Bucket.Versioning;
 30  
 import com.google.api.services.storage.model.Bucket.Website;
 31  
 import com.google.api.services.storage.model.BucketAccessControl;
 32  
 import com.google.api.services.storage.model.ObjectAccessControl;
 33  
 import com.google.common.base.Function;
 34  
 import com.google.common.base.MoreObjects;
 35  
 import com.google.common.collect.ImmutableList;
 36  
 import com.google.common.collect.ImmutableMap;
 37  
 import com.google.gcloud.storage.Acl.Entity;
 38  
 
 39  
 import java.io.IOException;
 40  
 import java.io.ObjectInputStream;
 41  
 import java.io.ObjectOutputStream;
 42  
 import java.io.Serializable;
 43  
 import java.util.List;
 44  
 import java.util.Objects;
 45  
 
 46  
 /**
 47  
  * A Google Storage bucket.
 48  
  *
 49  
  * @see <a href="https://cloud.google.com/storage/docs/concepts-techniques#concepts">Concepts and Terminology</a>
 50  
  */
 51  14
 public final class Bucket implements Serializable {
 52  
 
 53  
   private static final long serialVersionUID = -3946094202176916586L;
 54  
 
 55  
   private final String id;
 56  
   private final String name;
 57  
   private final Acl.Entity owner;
 58  
   private final String selfLink;
 59  
   private final Boolean versioningEnabled;
 60  
   private final String indexPage;
 61  
   private final String notFoundPage;
 62  
   private final List<DeleteRule> deleteRules;
 63  
   private final String etag;
 64  
   private final Long createTime;
 65  
   private final Long metageneration;
 66  
   private final List<Cors> cors;
 67  
   private final List<Acl> acl;
 68  
   private final List<Acl> defaultAcl;
 69  
   private final Location location;
 70  
   private final StorageClass storageClass;
 71  
 
 72  2
   static final Function<com.google.api.services.storage.model.Bucket, Bucket> FROM_PB_FUNCTION =
 73  0
       new Function<com.google.api.services.storage.model.Bucket, Bucket>() {
 74  
         @Override
 75  
         public Bucket apply(com.google.api.services.storage.model.Bucket pb) {
 76  0
           return Bucket.fromPb(pb);
 77  
         }
 78  
       };
 79  
 
 80  2
   static final Function<Bucket, com.google.api.services.storage.model.Bucket> TO_PB_FUNCTION =
 81  0
       new Function<Bucket, com.google.api.services.storage.model.Bucket>() {
 82  
         @Override
 83  
         public com.google.api.services.storage.model.Bucket apply(Bucket bucket) {
 84  0
           return bucket.toPb();
 85  
         }
 86  
       };
 87  
 
 88  
   public static abstract class DeleteRule implements Serializable {
 89  
 
 90  
     private static final long serialVersionUID = 3137971668395933033L;
 91  
     private final Type type;
 92  
     private static final String SUPPORTED_ACTION = "Delete";
 93  
 
 94  2
     public enum Type {
 95  2
       AGE, CREATE_BEFORE, NUM_NEWER_VERSIONS, IS_LIVE, UNKNOWN
 96  
     }
 97  
 
 98  
     DeleteRule(Type type) {
 99  
       this.type = type;
 100  
     }
 101  
 
 102  
     public Type type() {
 103  0
       return type;
 104  
     }
 105  
 
 106  
     @Override
 107  
     public int hashCode() {
 108  0
       return Objects.hash(type);
 109  
     }
 110  
 
 111  
     @Override
 112  
     public boolean equals(Object obj) {
 113  4
       if (this == obj) {
 114  2
         return true;
 115  
       }
 116  2
       if (obj == null || getClass() != obj.getClass()) {
 117  0
         return false;
 118  
       }
 119  2
       final DeleteRule other = (DeleteRule) obj;
 120  2
       return Objects.equals(toPb(), other.toPb());
 121  
     }
 122  
 
 123  
     Rule toPb() {
 124  18
       Rule rule = new Rule();
 125  18
       rule.setAction(new Rule.Action().setType(SUPPORTED_ACTION));
 126  18
       Rule.Condition condition = new Rule.Condition();
 127  18
       populateCondition(condition);
 128  18
       rule.setCondition(condition);
 129  18
       return rule;
 130  
     }
 131  
 
 132  
     abstract void populateCondition(Rule.Condition condition);
 133  
 
 134  
     static DeleteRule fromPb(Rule rule) {
 135  2
       if (rule.getAction() != null && SUPPORTED_ACTION.endsWith(rule.getAction().getType())) {
 136  2
         Rule.Condition condition = rule.getCondition();
 137  2
         Integer age = condition.getAge();
 138  2
         if (age != null) {
 139  2
           return new AgeDeleteRule(age);
 140  
         }
 141  0
         DateTime dateTime = condition.getCreatedBefore();
 142  0
         if (dateTime != null) {
 143  0
           return new CreatedBeforeDeleteRule(dateTime.getValue());
 144  
         }
 145  0
         Integer numNewerVersions = condition.getNumNewerVersions();
 146  0
         if (numNewerVersions != null) {
 147  0
           return new NumNewerVersionsDeleteRule(numNewerVersions);
 148  
         }
 149  0
         Boolean isLive = condition.getIsLive();
 150  0
         if (isLive != null) {
 151  0
           return new IsLiveDeleteRule(isLive);
 152  
         }
 153  
       }
 154  0
       return new RawDeleteRule(rule);
 155  
     }
 156  
   }
 157  
 
 158  
   public static class AgeDeleteRule extends DeleteRule {
 159  
 
 160  
     private static final long serialVersionUID = 5697166940712116380L;
 161  
     private final int daysToLive;
 162  
 
 163  
     public AgeDeleteRule(int daysToLive) {
 164  4
       super(Type.AGE);
 165  4
       this.daysToLive = daysToLive;
 166  4
     }
 167  
 
 168  
     public int daysToLive() {
 169  0
       return daysToLive;
 170  
     }
 171  
 
 172  
     void populateCondition(Rule.Condition condition) {
 173  18
       condition.setAge(daysToLive);
 174  18
     }
 175  
   }
 176  
 
 177  
   static class RawDeleteRule extends DeleteRule {
 178  
 
 179  
     private static final long serialVersionUID = -7166938278642301933L;
 180  
 
 181  
     private transient Rule rule;
 182  
 
 183  
     RawDeleteRule(Rule rule) {
 184  0
       super(Type.UNKNOWN);
 185  0
       this.rule = rule;
 186  0
     }
 187  
 
 188  
     void populateCondition(Rule.Condition condition) {
 189  0
       throw new UnsupportedOperationException();
 190  
     }
 191  
 
 192  
     private void writeObject(ObjectOutputStream out) throws IOException {
 193  0
       out.defaultWriteObject();
 194  0
       out.writeUTF(rule.toString());
 195  0
     }
 196  
 
 197  
     private void readObject(ObjectInputStream in) throws IOException,
 198  
         ClassNotFoundException {
 199  0
       in.defaultReadObject();
 200  0
       rule = new JacksonFactory().fromString(in.readUTF(), Rule.class);
 201  0
     }
 202  
 
 203  
     Rule toPb() {
 204  0
       return rule;
 205  
     }
 206  
   }
 207  
 
 208  
   public static class CreatedBeforeDeleteRule extends DeleteRule {
 209  
 
 210  
     private static final long serialVersionUID = 881692650279195867L;
 211  
     private final long timeMillis;
 212  
 
 213  
     public CreatedBeforeDeleteRule(long timeMillis) {
 214  0
       super(Type.CREATE_BEFORE);
 215  0
       this.timeMillis = timeMillis;
 216  0
     }
 217  
 
 218  
     public long timeMillis() {
 219  0
       return timeMillis;
 220  
     }
 221  
 
 222  
     void populateCondition(Rule.Condition condition) {
 223  0
       condition.setCreatedBefore(new DateTime(timeMillis));
 224  0
     }
 225  
   }
 226  
 
 227  
   public static class NumNewerVersionsDeleteRule extends DeleteRule {
 228  
 
 229  
     private static final long serialVersionUID = -1955554976528303894L;
 230  
     private final int numNewerVersions;
 231  
 
 232  
     public NumNewerVersionsDeleteRule(int numNewerVersions) {
 233  0
       super(Type.NUM_NEWER_VERSIONS);
 234  0
       this.numNewerVersions = numNewerVersions;
 235  0
     }
 236  
 
 237  
     public int numNewerVersions() {
 238  0
       return numNewerVersions;
 239  
     }
 240  
 
 241  
     void populateCondition(Rule.Condition condition) {
 242  0
       condition.setNumNewerVersions(numNewerVersions);
 243  0
     }
 244  
   }
 245  
 
 246  
   public static class IsLiveDeleteRule extends DeleteRule {
 247  
 
 248  
     private static final long serialVersionUID = -3502994563121313364L;
 249  
     private final boolean isLive;
 250  
 
 251  
     public IsLiveDeleteRule(boolean isLive) {
 252  0
       super(Type.IS_LIVE);
 253  0
       this.isLive = isLive;
 254  0
     }
 255  
 
 256  
     public boolean isLive() {
 257  
       return isLive;
 258  
     }
 259  
 
 260  
     void populateCondition(Rule.Condition condition) {
 261  0
       condition.setIsLive(isLive);
 262  0
     }
 263  
   }
 264  
 
 265  28
   public static final class StorageClass implements Serializable {
 266  
 
 267  
     private static final long serialVersionUID = 374002156285326563L;
 268  
     private static final ImmutableMap<String, Option> STRING_TO_OPTION;
 269  2
     private static final StorageClass NULL_VALUE =
 270  
         new StorageClass(Data.<String>nullOf(String.class));
 271  
 
 272  
     private final String value;
 273  
 
 274  8
     public enum Option {
 275  2
       DURABLE_REDUCED_AVAILABILITY, STANDARD;
 276  
 
 277  
       private final StorageClass storageClass;
 278  
 
 279  4
       Option() {
 280  4
         storageClass = new StorageClass(name());
 281  4
       }
 282  
     }
 283  
 
 284  
     static {
 285  2
       ImmutableMap.Builder<String, Option> map = ImmutableMap.builder();
 286  6
       for (Option option : Option.values()) {
 287  4
         map.put(option.name(), option);
 288  
       }
 289  2
       STRING_TO_OPTION = map.build();
 290  2
     }
 291  
 
 292  6
     private StorageClass(String value) {
 293  6
       this.value = checkNotNull(value);
 294  6
     }
 295  
 
 296  
     public static StorageClass standard() {
 297  2
       return Option.STANDARD.storageClass;
 298  
     }
 299  
 
 300  
     public static StorageClass durableReducedAvailability() {
 301  0
       return Option.DURABLE_REDUCED_AVAILABILITY.storageClass;
 302  
     }
 303  
 
 304  
     public static StorageClass of(String value) {
 305  2
       Option option = STRING_TO_OPTION.get(value.toUpperCase());
 306  2
       return option == null ? new StorageClass(value) : option.storageClass;
 307  
     }
 308  
 
 309  
     @Override
 310  
     public String toString() {
 311  0
       return value();
 312  
     }
 313  
 
 314  
     public String value() {
 315  14
       return value;
 316  
     }
 317  
   }
 318  
 
 319  30
   public static final class Location implements Serializable {
 320  
 
 321  
     private static final long serialVersionUID = 9073107666838637662L;
 322  
     private static final ImmutableMap<String, Option> STRING_TO_OPTION;
 323  2
     private static final Location NULL_VALUE = new Location(Data.<String>nullOf(String.class));
 324  
 
 325  
     private final String value;
 326  
 
 327  8
     public enum Option {
 328  2
       US, EU, ASIA;
 329  
 
 330  
       private final Location location;
 331  
 
 332  6
       Option() {
 333  6
         location = new Location(name());
 334  6
       }
 335  
     }
 336  
 
 337  
     static {
 338  2
       ImmutableMap.Builder<String, Option> map = ImmutableMap.builder();
 339  8
       for (Option option : Option.values()) {
 340  6
         map.put(option.name(), option);
 341  
       }
 342  2
       STRING_TO_OPTION = map.build();
 343  2
     }
 344  
 
 345  8
     private Location(String value) {
 346  8
       this.value = checkNotNull(value);
 347  8
     }
 348  
 
 349  
     public static Location us() {
 350  0
       return Option.US.location;
 351  
     }
 352  
 
 353  
     public static Location eu() {
 354  0
       return Option.EU.location;
 355  
     }
 356  
 
 357  
     public static Location asia() {
 358  2
       return Option.ASIA.location;
 359  
     }
 360  
 
 361  
     public static Location of(String value) {
 362  2
       Option option = STRING_TO_OPTION.get(value.toUpperCase());
 363  2
       return option == null ? new Location(value) : option.location;
 364  
     }
 365  
 
 366  
     @Override
 367  
     public int hashCode() {
 368  0
       return Objects.hash(value);
 369  
     }
 370  
 
 371  
     @Override
 372  
     public boolean equals(Object obj) {
 373  8
       if (this == obj) {
 374  8
         return true;
 375  
       }
 376  0
       if (obj == null || getClass() != obj.getClass()) {
 377  0
         return false;
 378  
       }
 379  0
       final Location other = (Location) obj;
 380  0
       return Objects.equals(this.value, other.value);
 381  
     }
 382  
 
 383  
     @Override
 384  
     public String toString() {
 385  0
       return value();
 386  
     }
 387  
 
 388  
     public String value() {
 389  14
       return value;
 390  
     }
 391  
   }
 392  
 
 393  238
   public final static class Builder {
 394  
 
 395  
     private String id;
 396  
     private String name;
 397  
     private Acl.Entity owner;
 398  
     private String selfLink;
 399  
     private Boolean versioningEnabled;
 400  
     private String indexPage;
 401  
     private String notFoundPage;
 402  
     private ImmutableList<DeleteRule> deleteRules;
 403  
     private StorageClass storageClass;
 404  
     private Location location;
 405  
     private String etag;
 406  
     private Long createTime;
 407  
     private Long metageneration;
 408  
     private ImmutableList<Cors> cors;
 409  
     private ImmutableList<Acl> acl;
 410  
     private ImmutableList<Acl> defaultAcl;
 411  
 
 412  
     private Builder() {}
 413  
 
 414  
     public Builder name(String name) {
 415  18
       this.name = checkNotNull(name);
 416  18
       return this;
 417  
     }
 418  
 
 419  
     Builder id(String id) {
 420  14
       this.id = id;
 421  14
       return this;
 422  
     }
 423  
 
 424  
     Builder owner(Acl.Entity owner) {
 425  10
       this.owner = owner;
 426  10
       return this;
 427  
     }
 428  
 
 429  
     Builder selfLink(String selfLink) {
 430  10
       this.selfLink = selfLink;
 431  10
       return this;
 432  
     }
 433  
 
 434  
     public Builder versioningEnabled(Boolean enable) {
 435  10
       this.versioningEnabled = firstNonNull(enable, Data.<Boolean>nullOf(Boolean.class));
 436  10
       return this;
 437  
     }
 438  
 
 439  
     public Builder indexPage(String indexPage) {
 440  10
       this.indexPage = indexPage;
 441  10
       return this;
 442  
     }
 443  
 
 444  
     public Builder notFoundPage(String notFoundPage) {
 445  10
       this.notFoundPage = notFoundPage;
 446  10
       return this;
 447  
     }
 448  
 
 449  
     public Builder deleteRules(Iterable<? extends DeleteRule> rules) {
 450  10
       this.deleteRules = ImmutableList.copyOf(rules);
 451  10
       return this;
 452  
     }
 453  
 
 454  
     public Builder storageClass(StorageClass storageClass) {
 455  10
       this.storageClass = firstNonNull(storageClass, StorageClass.NULL_VALUE);
 456  10
       return this;
 457  
     }
 458  
 
 459  
     public Builder location(Location location) {
 460  10
       this.location = firstNonNull(location, Location.NULL_VALUE);
 461  10
       return this;
 462  
     }
 463  
 
 464  
     Builder etag(String etag) {
 465  10
       this.etag = etag;
 466  10
       return this;
 467  
     }
 468  
 
 469  
     Builder createTime(Long createTime) {
 470  10
       this.createTime = createTime;
 471  10
       return this;
 472  
     }
 473  
 
 474  
     Builder metageneration(Long metageneration) {
 475  10
       this.metageneration = metageneration;
 476  10
       return this;
 477  
     }
 478  
 
 479  
     public Builder cors(Iterable<Cors> cors) {
 480  10
       this.cors = cors != null ? ImmutableList.copyOf(cors) : null;
 481  10
       return this;
 482  
     }
 483  
 
 484  
     public Builder acl(Iterable<Acl> acl) {
 485  10
       this.acl = acl != null ? ImmutableList.copyOf(acl) : null;
 486  10
       return this;
 487  
     }
 488  
 
 489  
     public Builder defaultAcl(Iterable<Acl> acl) {
 490  10
       this.defaultAcl = acl != null ? ImmutableList.copyOf(acl) : null;
 491  10
       return this;
 492  
     }
 493  
 
 494  
     public Bucket build() {
 495  14
       checkNotNull(name);
 496  14
       return new Bucket(this);
 497  
     }
 498  
   }
 499  
 
 500  14
   private Bucket(Builder builder) {
 501  14
     id = builder.id;
 502  14
     name = builder.name;
 503  14
     etag = builder.etag;
 504  14
     createTime = builder.createTime;
 505  14
     metageneration = builder.metageneration;
 506  14
     location = builder.location;
 507  14
     storageClass = builder.storageClass;
 508  14
     cors = builder.cors;
 509  14
     acl = builder.acl;
 510  14
     defaultAcl = builder.defaultAcl;
 511  14
     owner = builder.owner;
 512  14
     selfLink = builder.selfLink;
 513  14
     versioningEnabled = builder.versioningEnabled;
 514  14
     indexPage = builder.indexPage;
 515  14
     notFoundPage = builder.notFoundPage;
 516  14
     deleteRules = builder.deleteRules;
 517  14
   }
 518  
 
 519  
   public String id() {
 520  16
     return id;
 521  
   }
 522  
 
 523  
   public String name() {
 524  18
     return name;
 525  
   }
 526  
 
 527  
   public Entity owner() {
 528  14
     return owner;
 529  
   }
 530  
 
 531  
   public String selfLink() {
 532  14
     return selfLink;
 533  
   }
 534  
 
 535  
   public Boolean versioningEnabled() {
 536  14
     return Data.isNull(versioningEnabled) ? null : versioningEnabled;
 537  
   }
 538  
 
 539  
   public String indexPage() {
 540  14
     return indexPage;
 541  
   }
 542  
 
 543  
   public String notFoundPage() {
 544  14
     return notFoundPage;
 545  
   }
 546  
 
 547  
   public List<? extends DeleteRule> deleteRules() {
 548  14
     return deleteRules;
 549  
   }
 550  
 
 551  
   public String etag() {
 552  14
     return etag;
 553  
   }
 554  
 
 555  
   public Long createTime() {
 556  14
     return createTime;
 557  
   }
 558  
 
 559  
   public Long metageneration() {
 560  14
     return metageneration;
 561  
   }
 562  
 
 563  
   public Location location() {
 564  14
     return location == null || Data.isNull(location.value) ? null : location;
 565  
   }
 566  
 
 567  
   public StorageClass storageClass() {
 568  14
     return storageClass == null || Data.isNull(storageClass.value) ? null : storageClass;
 569  
   }
 570  
 
 571  
   public List<Cors> cors() {
 572  14
     return cors;
 573  
   }
 574  
 
 575  
   public List<Acl> acl() {
 576  14
     return acl;
 577  
   }
 578  
 
 579  
   public List<Acl> defaultAcl() {
 580  14
     return defaultAcl;
 581  
   }
 582  
 
 583  
   public Builder toBuilder() {
 584  6
     return new Builder()
 585  
         .name(name)
 586  
         .id(id)
 587  
         .createTime(createTime)
 588  
         .etag(etag)
 589  
         .metageneration(metageneration)
 590  
         .cors(cors)
 591  
         .acl(acl)
 592  
         .defaultAcl(defaultAcl)
 593  
         .location(location)
 594  
         .storageClass(storageClass)
 595  
         .owner(owner)
 596  
         .selfLink(selfLink)
 597  
         .versioningEnabled(versioningEnabled)
 598  
         .indexPage(indexPage)
 599  
         .notFoundPage(notFoundPage)
 600  
         .deleteRules(deleteRules);
 601  
   }
 602  
 
 603  
   @Override
 604  
   public int hashCode() {
 605  0
     return Objects.hash(name);
 606  
   }
 607  
 
 608  
   @Override
 609  
   public boolean equals(Object obj) {
 610  12
     if (!(obj instanceof Bucket)) {
 611  0
       return  false;
 612  
     }
 613  12
     return Objects.equals(toPb(), ((Bucket) obj).toPb());
 614  
   }
 615  
 
 616  
   @Override
 617  
   public String toString() {
 618  0
     return MoreObjects.toStringHelper(this)
 619  
         .add("name", name())
 620  
         .toString();
 621  
   }
 622  
 
 623  
   public static Bucket of(String name) {
 624  4
     return builder(name).build();
 625  
   }
 626  
 
 627  
   public static Builder builder(String name) {
 628  6
     return new Builder().name(name);
 629  
   }
 630  
 
 631  
   com.google.api.services.storage.model.Bucket toPb() {
 632  26
     com.google.api.services.storage.model.Bucket bucketPb =
 633  
         new com.google.api.services.storage.model.Bucket();
 634  26
     bucketPb.setId(id);
 635  26
     bucketPb.setName(name);
 636  26
     bucketPb.setEtag(etag);
 637  26
     if (createTime != null) {
 638  14
       bucketPb.setTimeCreated(new DateTime(createTime));
 639  
     }
 640  26
     if (metageneration != null) {
 641  14
       bucketPb.setMetageneration(metageneration);
 642  
     }
 643  26
     if (location != null) {
 644  14
       bucketPb.setLocation(location.value());
 645  
     }
 646  26
     if (storageClass != null) {
 647  14
       bucketPb.setStorageClass(storageClass.value());
 648  
     }
 649  26
     if (cors != null) {
 650  14
       bucketPb.setCors(transform(cors, Cors.TO_PB_FUNCTION));
 651  
     }
 652  26
     if (acl != null) {
 653  14
       bucketPb.setAcl(transform(acl, new Function<Acl, BucketAccessControl>() {
 654  
         @Override
 655  
         public BucketAccessControl apply(Acl acl) {
 656  28
           return acl.toBucketPb();
 657  
         }
 658  
       }));
 659  
     }
 660  26
     if (defaultAcl != null) {
 661  14
       bucketPb.setDefaultObjectAcl(transform(defaultAcl, new Function<Acl, ObjectAccessControl>() {
 662  
         @Override
 663  
         public ObjectAccessControl apply(Acl acl) {
 664  14
           return acl.toObjectPb();
 665  
         }
 666  
       }));
 667  
     }
 668  26
     if (owner != null) {
 669  14
       bucketPb.setOwner(new Owner().setEntity(owner.toPb()));
 670  
     }
 671  26
     bucketPb.setSelfLink(selfLink);
 672  26
     if (versioningEnabled != null) {
 673  14
       bucketPb.setVersioning(new Versioning().setEnabled(versioningEnabled));
 674  
     }
 675  26
     if (indexPage != null || notFoundPage != null) {
 676  14
       Website website = new Website();
 677  14
       website.setMainPageSuffix(indexPage);
 678  14
       website.setNotFoundPage(notFoundPage);
 679  14
       bucketPb.setWebsite(website);
 680  
     }
 681  26
     if (deleteRules != null) {
 682  14
       Lifecycle lifecycle = new Lifecycle();
 683  14
       lifecycle.setRule(transform(deleteRules, new Function<DeleteRule, Rule>() {
 684  
         @Override
 685  
         public Rule apply(DeleteRule deleteRule) {
 686  14
           return deleteRule.toPb();
 687  
         }
 688  
       }));
 689  14
       bucketPb.setLifecycle(lifecycle);
 690  
     }
 691  26
     return bucketPb;
 692  
   }
 693  
 
 694  
   static Bucket fromPb(com.google.api.services.storage.model.Bucket bucketPb) {
 695  2
     Builder builder = new Builder()
 696  
         .name(bucketPb.getName())
 697  
         .id(bucketPb.getId())
 698  
         .etag(bucketPb.getEtag())
 699  
         .metageneration(bucketPb.getMetageneration())
 700  
         .createTime(bucketPb.getTimeCreated().getValue())
 701  
         .location(Location.of(bucketPb.getLocation()))
 702  
         .selfLink(bucketPb.getSelfLink());
 703  2
     if (bucketPb.getStorageClass() != null) {
 704  2
       builder.storageClass(StorageClass.of(bucketPb.getStorageClass()));
 705  
     }
 706  2
     if (bucketPb.getCors() != null) {
 707  2
       builder.cors(transform(bucketPb.getCors(), Cors.FROM_PB_FUNCTION));
 708  
     }
 709  2
     if (bucketPb.getAcl() != null) {
 710  2
       builder.acl(transform(bucketPb.getAcl(), new Function<BucketAccessControl, Acl>() {
 711  
         @Override
 712  
         public Acl apply(BucketAccessControl bucketAccessControl) {
 713  4
           return Acl.fromPb(bucketAccessControl);
 714  
         }
 715  
       }));
 716  
     }
 717  2
     if (bucketPb.getDefaultObjectAcl() != null) {
 718  2
       builder.defaultAcl(transform(bucketPb.getDefaultObjectAcl(),
 719  2
           new Function<ObjectAccessControl, Acl>() {
 720  
             @Override
 721  
             public Acl apply(ObjectAccessControl objectAccessControl) {
 722  2
               return Acl.fromPb(objectAccessControl);
 723  
             }
 724  
           }));
 725  
     }
 726  2
     if (bucketPb.getOwner() != null) {
 727  2
       builder.owner(Entity.fromPb(bucketPb.getOwner().getEntity()));
 728  
     }
 729  2
     if (bucketPb.getVersioning() != null) {
 730  2
       builder.versioningEnabled(bucketPb.getVersioning().getEnabled());
 731  
     }
 732  2
     Website website = bucketPb.getWebsite();
 733  2
     if (website != null) {
 734  2
       builder.indexPage(website.getMainPageSuffix());
 735  2
       builder.notFoundPage(website.getNotFoundPage());
 736  
     }
 737  2
     if (bucketPb.getLifecycle() != null && bucketPb.getLifecycle().getRule() != null) {
 738  2
       builder.deleteRules(transform(bucketPb.getLifecycle().getRule(),
 739  2
           new Function<Rule, DeleteRule>() {
 740  
             @Override
 741  
             public DeleteRule apply(Rule rule) {
 742  2
               return DeleteRule.fromPb(rule);
 743  
             }
 744  
           }));
 745  
     }
 746  2
     return builder.build();
 747  
   }
 748  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.Cors.html b/cobertura/com.google.gcloud.storage.Cors.html deleted file mode 100644 index be6ee758614d..000000000000 --- a/cobertura/com.google.gcloud.storage.Cors.html +++ /dev/null @@ -1,439 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.Cors
-
 
- - - - - - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Cors
80%
28/35
50%
9/18
1.655
Cors$1
100%
2/2
N/A
1.655
Cors$2
100%
2/2
N/A
1.655
Cors$3
0%
0/2
N/A
1.655
Cors$4
0%
0/2
N/A
1.655
Cors$Builder
100%
10/10
66%
4/6
1.655
Cors$Method
100%
2/2
N/A
1.655
Cors$Origin
76%
13/17
75%
3/4
1.655
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkNotNull;
 20  
 import static com.google.common.collect.Iterables.transform;
 21  
 import static com.google.common.collect.Lists.newArrayList;
 22  
 
 23  
 import com.google.api.services.storage.model.Bucket;
 24  
 import com.google.common.base.Function;
 25  
 import com.google.common.base.Functions;
 26  
 import com.google.common.collect.ImmutableList;
 27  
 
 28  
 import java.io.Serializable;
 29  
 import java.net.URI;
 30  
 import java.net.URISyntaxException;
 31  
 import java.util.List;
 32  
 import java.util.Objects;
 33  
 
 34  
 /**
 35  
  * Cross-Origin Resource Sharing (CORS) configuration for a bucket.
 36  
  */
 37  8
 public final class Cors implements Serializable {
 38  
 
 39  
   private static final long serialVersionUID = -8637770919343335655L;
 40  
 
 41  2
   static final Function<Bucket.Cors, Cors> FROM_PB_FUNCTION = new Function<Bucket.Cors, Cors>() {
 42  
     @Override
 43  
     public Cors apply(Bucket.Cors pb) {
 44  2
       return Cors.fromPb(pb);
 45  
     }
 46  
   };
 47  
 
 48  14
   static final Function<Cors, Bucket.Cors> TO_PB_FUNCTION = new Function<Cors, Bucket.Cors>() {
 49  
     @Override
 50  
     public Bucket.Cors apply(Cors cors) {
 51  14
       return cors.toPb();
 52  
     }
 53  
   };
 54  
 
 55  
   private final Integer maxAgeSeconds;
 56  
   private final ImmutableList<Method> methods;
 57  
   private final ImmutableList<Origin> origins;
 58  
   private final ImmutableList<String> responseHeaders;
 59  
 
 60  2
   public enum Method {
 61  2
     ANY, GET, HEAD, PUT, POST, DELETE
 62  
   }
 63  
 
 64  
   public static final class Origin implements Serializable {
 65  
 
 66  
     private static final long serialVersionUID = -4447958124895577993L;
 67  
     private static final String ANY_URI = "*";
 68  
     private final String value;
 69  
 
 70  2
     private static final Origin ANY = new Origin(ANY_URI);
 71  
 
 72  8
     private Origin(String value) {
 73  8
       this.value = checkNotNull(value);
 74  8
     }
 75  
 
 76  
     public static Origin any() {
 77  8
       return ANY;
 78  
     }
 79  
 
 80  
     public static Origin of(String scheme, String host, int port) {
 81  
       try {
 82  2
         return of(new URI(scheme, null, host, port, null, null, null).toString());
 83  0
       } catch (URISyntaxException e) {
 84  0
         throw new IllegalArgumentException(e);
 85  
       }
 86  
     }
 87  
 
 88  
     public static Origin of(String value) {
 89  8
       if (ANY_URI.equals(value)) {
 90  2
         return any();
 91  
       }
 92  6
       return new Origin(value);
 93  
     }
 94  
 
 95  
     @Override
 96  
     public int hashCode() {
 97  0
       return value.hashCode();
 98  
     }
 99  
 
 100  
     @Override
 101  
     public boolean equals(Object obj) {
 102  10
       if (!(obj instanceof Origin)) {
 103  0
         return false;
 104  
       }
 105  10
       return value.equals(((Origin)obj).value);
 106  
     }
 107  
 
 108  
     @Override
 109  
     public String toString() {
 110  2
       return value();
 111  
     }
 112  
 
 113  
     public String value() {
 114  4
       return value;
 115  
     }
 116  
   }
 117  
 
 118  40
   public static final class Builder {
 119  
 
 120  
     private Integer maxAgeSeconds;
 121  
     private ImmutableList<Method> methods;
 122  
     private ImmutableList<Origin> origins;
 123  
     private ImmutableList<String> responseHeaders;
 124  
 
 125  
     private Builder() {}
 126  
 
 127  
     public Builder maxAgeSeconds(Integer maxAgeSeconds) {
 128  6
       this.maxAgeSeconds = maxAgeSeconds;
 129  6
       return this;
 130  
     }
 131  
 
 132  
     public Builder methods(Iterable<Method> methods) {
 133  2
       this.methods = methods != null ? ImmutableList.copyOf(methods) : null;
 134  2
       return this;
 135  
     }
 136  
 
 137  
     public Builder origins(Iterable<Origin> origins) {
 138  4
       this.origins = origins != null ? ImmutableList.copyOf(origins) : null;
 139  4
       return this;
 140  
     }
 141  
 
 142  
     public Builder responseHeaders(Iterable<String> headers) {
 143  4
       this.responseHeaders = headers != null ? ImmutableList.copyOf(headers) : null;
 144  4
       return this;
 145  
     }
 146  
 
 147  
     public Cors build() {
 148  8
       return new Cors(this);
 149  
     }
 150  
   }
 151  
 
 152  8
   private Cors(Builder builder) {
 153  8
     this.maxAgeSeconds = builder.maxAgeSeconds;
 154  8
     this.methods = builder.methods;
 155  8
     this.origins = builder.origins;
 156  8
     this.responseHeaders = builder.responseHeaders;
 157  8
   }
 158  
 
 159  
   public Integer maxAgeSeconds() {
 160  2
     return maxAgeSeconds;
 161  
   }
 162  
 
 163  
   public List<Method> methods() {
 164  2
     return methods;
 165  
   }
 166  
 
 167  
   public List<Origin> origins() {
 168  2
     return origins;
 169  
   }
 170  
 
 171  
   public List<String> responseHeaders() {
 172  2
     return responseHeaders;
 173  
   }
 174  
 
 175  
   public Builder toBuilder() {
 176  0
     return builder()
 177  
         .maxAgeSeconds(maxAgeSeconds)
 178  
         .methods(methods)
 179  
         .origins(origins)
 180  
         .responseHeaders(responseHeaders);
 181  
   }
 182  
 
 183  
   @Override
 184  
   public int hashCode() {
 185  0
     return Objects.hash(maxAgeSeconds, methods, origins, responseHeaders);
 186  
   }
 187  
 
 188  
   @Override
 189  
   public boolean equals(Object obj) {
 190  10
     if (!(obj instanceof Cors)) {
 191  0
       return false;
 192  
     }
 193  10
     Cors other = (Cors) obj;
 194  10
     return Objects.equals(maxAgeSeconds, other.maxAgeSeconds)
 195  
         && Objects.equals(methods, other.methods)
 196  
         && Objects.equals(origins, other.origins)
 197  
         && Objects.equals(responseHeaders, other.responseHeaders);
 198  
   }
 199  
 
 200  
   public static Builder builder() {
 201  8
     return new Builder();
 202  
   }
 203  
 
 204  
   Bucket.Cors toPb() {
 205  14
     Bucket.Cors pb = new Bucket.Cors();
 206  14
     pb.setMaxAgeSeconds(maxAgeSeconds);
 207  14
     pb.setResponseHeader(responseHeaders);
 208  14
     if (methods != null) {
 209  0
       pb.setMethod(newArrayList(transform(methods, Functions.toStringFunction())));
 210  
     }
 211  14
     if (origins != null) {
 212  0
       pb.setOrigin(newArrayList(transform(origins, Functions.toStringFunction())));
 213  
     }
 214  14
     return pb;
 215  
   }
 216  
 
 217  
   static Cors fromPb(Bucket.Cors cors) {
 218  2
     Builder builder = builder().maxAgeSeconds(cors.getMaxAgeSeconds());
 219  2
     if (cors.getMethod() != null) {
 220  0
       builder.methods(transform(cors.getMethod(), new Function<String, Method>() {
 221  
         @Override
 222  
         public Method apply(String name) {
 223  0
           return Method.valueOf(name.toUpperCase());
 224  
         }
 225  
       }));
 226  
     }
 227  2
     if (cors.getOrigin() != null) {
 228  0
       builder.origins(transform(cors.getOrigin(), new Function<String, Origin>() {
 229  
         @Override
 230  
         public Origin apply(String value) {
 231  0
           return Origin.of(value);
 232  
         }
 233  
       }));
 234  
     }
 235  2
     builder.responseHeaders(cors.getResponseHeader());
 236  2
     return builder.build();
 237  
   }
 238  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.ListResult.html b/cobertura/com.google.gcloud.storage.ListResult.html deleted file mode 100644 index d823c0c4209f..000000000000 --- a/cobertura/com.google.gcloud.storage.ListResult.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.ListResult
-
 
- - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
ListResult
70%
7/10
50%
6/12
2
ListResult$NextPageFetcher
N/A
N/A
2
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 
 20  
 import java.io.Serializable;
 21  
 import java.util.Collections;
 22  
 import java.util.Iterator;
 23  
 import java.util.Objects;
 24  
 
 25  
 /**
 26  
  * Google Cloud storage list result.
 27  
  */
 28  
 public final class ListResult<T extends Serializable> implements Iterable<T>, Serializable {
 29  
 
 30  
   private static final long serialVersionUID = -6937287874908527950L;
 31  
 
 32  
   private final String cursor;
 33  
   private final Iterable<T> results;
 34  
   private final NextPageFetcher<T> pageFetcher;
 35  
 
 36  
   interface NextPageFetcher<T extends Serializable> extends Serializable {
 37  
     ListResult<T> nextPage();
 38  
   }
 39  
 
 40  
   public ListResult(NextPageFetcher<T> pageFetcher, String cursor, Iterable<T> results) {
 41  
     this.pageFetcher = pageFetcher;
 42  
     this.cursor = cursor;
 43  
     this.results = results;
 44  
   }
 45  
 
 46  
   /**
 47  
    * Returns the cursor for the nextPage or {@code null} if no more results.
 48  
    */
 49  
   public String nextPageCursor() {
 50  2
     return cursor;
 51  
   }
 52  
 
 53  
   /**
 54  
    * Returns the results of the nextPage or {@code null} if no more result.
 55  
    */
 56  
   public ListResult<T> nextPage() {
 57  2
     if (cursor == null || pageFetcher == null) {
 58  0
       return null;
 59  
     }
 60  2
     return pageFetcher.nextPage();
 61  
   }
 62  
 
 63  
   @Override
 64  
   public Iterator<T> iterator() {
 65  2
     return results == null ? Collections.<T>emptyIterator() : results.iterator();
 66  
   }
 67  
 
 68  
   @Override
 69  
   public int hashCode() {
 70  0
     return Objects.hash(cursor, results);
 71  
   }
 72  
 
 73  
   @Override
 74  
   public boolean equals(Object obj) {
 75  8
     if (!(obj instanceof ListResult)) {
 76  0
       return false;
 77  
     }
 78  8
     ListResult<?> other = (ListResult<?>) obj;
 79  8
     return Objects.equals(cursor, other.cursor)
 80  
         && Objects.equals(results, other.results);
 81  
   }
 82  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.Option.html b/cobertura/com.google.gcloud.storage.Option.html deleted file mode 100644 index 08e624973d74..000000000000 --- a/cobertura/com.google.gcloud.storage.Option.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.Option
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
Option
75%
9/12
50%
3/6
1.5
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkNotNull;
 20  
 
 21  
 import com.google.common.base.MoreObjects;
 22  
 import com.google.gcloud.spi.StorageRpc;
 23  
 
 24  
 import java.io.Serializable;
 25  
 import java.util.Objects;
 26  
 
 27  
 /**
 28  
  * Base class for Storage operation option
 29  
  */
 30  
 class Option implements Serializable {
 31  
 
 32  
   private static final long serialVersionUID = -73199088766477208L;
 33  
 
 34  
   private final StorageRpc.Option rpcOption;
 35  
   private final Object value;
 36  
 
 37  28
   Option(StorageRpc.Option rpcOption, Object value) {
 38  28
     this.rpcOption = checkNotNull(rpcOption);
 39  26
     this.value = value;
 40  26
   }
 41  
 
 42  
   StorageRpc.Option rpcOption() {
 43  2
     return rpcOption;
 44  
   }
 45  
 
 46  
   Object value() {
 47  2
     return value;
 48  
   }
 49  
 
 50  
   @Override
 51  
   public boolean equals(Object obj) {
 52  40
     if (!(obj instanceof Option)) {
 53  0
       return false;
 54  
     }
 55  40
     Option other = (Option) obj;
 56  40
     return Objects.equals(rpcOption, other.rpcOption)
 57  
         && Objects.equals(value, other.value);
 58  
   }
 59  
 
 60  
   @Override
 61  
   public int hashCode() {
 62  0
     return Objects.hash(rpcOption, value);
 63  
   }
 64  
 
 65  
   @Override
 66  
   public String toString() {
 67  0
     return MoreObjects.toStringHelper(this)
 68  
         .add("name", rpcOption.value())
 69  
         .add("value", value)
 70  
         .toString();
 71  
   }
 72  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.StorageService.html b/cobertura/com.google.gcloud.storage.StorageService.html deleted file mode 100644 index 4eae8680be6b..000000000000 --- a/cobertura/com.google.gcloud.storage.StorageService.html +++ /dev/null @@ -1,987 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.StorageService
-
 
- - - - - - - - - - - - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
StorageService
N/A
N/A
1.012
StorageService$1
N/A
N/A
1.012
StorageService$BlobListOption
40%
2/5
N/A
1.012
StorageService$BlobSourceOption
71%
5/7
N/A
1.012
StorageService$BlobTargetOption
55%
5/9
N/A
1.012
StorageService$BucketListOption
50%
2/4
N/A
1.012
StorageService$BucketSourceOption
80%
4/5
N/A
1.012
StorageService$BucketTargetOption
57%
4/7
N/A
1.012
StorageService$ComposeRequest
0%
0/12
N/A
1.012
StorageService$ComposeRequest$Builder
0%
0/17
0%
0/4
1.012
StorageService$ComposeRequest$SourceBlob
0%
0/4
N/A
1.012
StorageService$CopyRequest
0%
0/16
N/A
1.012
StorageService$CopyRequest$Builder
0%
0/16
N/A
1.012
StorageService$PredefinedAcl
100%
10/10
N/A
1.012
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 import static com.google.common.base.Preconditions.checkArgument;
 20  
 import static com.google.common.base.Preconditions.checkNotNull;
 21  
 
 22  
 import com.google.common.collect.ImmutableList;
 23  
 import com.google.gcloud.Service;
 24  
 import com.google.gcloud.spi.StorageRpc;
 25  
 
 26  
 import java.io.Serializable;
 27  
 import java.util.Arrays;
 28  
 import java.util.Collections;
 29  
 import java.util.LinkedHashSet;
 30  
 import java.util.LinkedList;
 31  
 import java.util.List;
 32  
 import java.util.Set;
 33  
 
 34  
 /**
 35  
  * An interface for Google Cloud Storage.
 36  
  *
 37  
  * @see <a href="https://cloud.google.com/storage/docs">Google Cloud Storage</a>
 38  
  */
 39  
 public interface StorageService extends Service<StorageServiceOptions> {
 40  
 
 41  2
   enum PredefinedAcl {
 42  2
     AUTHENTICATED_READ("authenticatedRead"),
 43  2
     ALL_AUTHENTICATED_USERS("allAuthenticatedUsers"),
 44  2
     PRIVATE("private"),
 45  2
     PROJECT_PRIVATE("projectPrivate"),
 46  2
     PUBLIC_READ("publicRead"),
 47  2
     PUBLIC_READ_WRITE("publicReadWrite"),
 48  2
     BUCKET_OWNER_READ("bucketOwnerRead"),
 49  2
     BUCKET_OWNER_FULL_CONTROL("bucketOwnerFullControl");
 50  
 
 51  
     private final String entry;
 52  
 
 53  
     PredefinedAcl(String entry) {
 54  
       this.entry = entry;
 55  
     }
 56  
 
 57  
     String entry() {
 58  4
       return entry;
 59  
     }
 60  
   }
 61  
 
 62  6
   class BucketTargetOption extends Option {
 63  
 
 64  
     private static final long serialVersionUID = -5880204616982900975L;
 65  
 
 66  
     private BucketTargetOption(StorageRpc.Option rpcOption, Object value) {
 67  
       super(rpcOption, value);
 68  
     }
 69  
 
 70  
     private BucketTargetOption(StorageRpc.Option rpcOption) {
 71  2
       this(rpcOption, null);
 72  2
     }
 73  
 
 74  
     public static BucketTargetOption predefinedAcl(PredefinedAcl acl) {
 75  0
       return new BucketTargetOption(StorageRpc.Option.PREDEFINED_ACL, acl.entry());
 76  
     }
 77  
 
 78  
     public static BucketTargetOption predefinedDefaultObjectAcl(PredefinedAcl acl) {
 79  0
       return new BucketTargetOption(StorageRpc.Option.PREDEFINED_DEFAULT_OBJECT_ACL, acl.entry());
 80  
     }
 81  
 
 82  
     public static BucketTargetOption metagenerationMatch() {
 83  0
       return new BucketTargetOption(StorageRpc.Option.IF_METAGENERATION_MATCH);
 84  
     }
 85  
 
 86  
     public static BucketTargetOption metagenerationNotMatch() {
 87  2
       return new BucketTargetOption(StorageRpc.Option.IF_METAGENERATION_NOT_MATCH);
 88  
     }
 89  
   }
 90  
 
 91  6
   class BucketSourceOption extends Option {
 92  
 
 93  
     private static final long serialVersionUID = 5185657617120212117L;
 94  
 
 95  
     private BucketSourceOption(StorageRpc.Option rpcOption, long metageneration) {
 96  2
       super(rpcOption, metageneration);
 97  2
     }
 98  
 
 99  
     public static BucketSourceOption metagenerationMatch(long metageneration) {
 100  2
       return new BucketSourceOption(StorageRpc.Option.IF_METAGENERATION_MATCH, metageneration);
 101  
     }
 102  
 
 103  
     public static BucketSourceOption metagenerationNotMatch(long metageneration) {
 104  0
       return new BucketSourceOption(StorageRpc.Option.IF_METAGENERATION_NOT_MATCH, metageneration);
 105  
     }
 106  
   }
 107  
 
 108  8
   class BlobTargetOption extends Option {
 109  
 
 110  
     private static final long serialVersionUID = 214616862061934846L;
 111  
 
 112  
     private BlobTargetOption(StorageRpc.Option rpcOption, Object value) {
 113  
       super(rpcOption, value);
 114  
     }
 115  
 
 116  
     private BlobTargetOption(StorageRpc.Option rpcOption) {
 117  2
       this(rpcOption, null);
 118  2
     }
 119  
 
 120  
     public static BlobTargetOption predefinedAcl(PredefinedAcl acl) {
 121  4
       return new BlobTargetOption(StorageRpc.Option.PREDEFINED_ACL, acl.entry());
 122  
     }
 123  
 
 124  
     public static BlobTargetOption doesNotExists() {
 125  0
       return new BlobTargetOption(StorageRpc.Option.IF_GENERATION_MATCH, 0);
 126  
     }
 127  
 
 128  
     public static BlobTargetOption generationMatch() {
 129  2
       return new BlobTargetOption(StorageRpc.Option.IF_GENERATION_MATCH);
 130  
     }
 131  
 
 132  
     public static BlobTargetOption generationNotMatch() {
 133  0
       return new BlobTargetOption(StorageRpc.Option.IF_GENERATION_NOT_MATCH);
 134  
     }
 135  
 
 136  
     public static BlobTargetOption metagenerationMatch() {
 137  0
       return new BlobTargetOption(StorageRpc.Option.IF_METAGENERATION_MATCH);
 138  
     }
 139  
 
 140  
     public static BlobTargetOption metagenerationNotMatch() {
 141  0
       return new BlobTargetOption(StorageRpc.Option.IF_METAGENERATION_NOT_MATCH);
 142  
     }
 143  
   }
 144  
 
 145  8
   class BlobSourceOption extends Option {
 146  
 
 147  
     private static final long serialVersionUID = -3712768261070182991L;
 148  
 
 149  
     private BlobSourceOption(StorageRpc.Option rpcOption, long value) {
 150  10
       super(rpcOption, value);
 151  10
     }
 152  
 
 153  
     public static BlobSourceOption generationMatch(long generation) {
 154  8
       return new BlobSourceOption(StorageRpc.Option.IF_GENERATION_MATCH, generation);
 155  
     }
 156  
 
 157  
     public static BlobSourceOption generationNotMatch(long generation) {
 158  0
       return new BlobSourceOption(StorageRpc.Option.IF_GENERATION_NOT_MATCH, generation);
 159  
     }
 160  
 
 161  
     public static BlobSourceOption metagenerationMatch(long metageneration) {
 162  2
       return new BlobSourceOption(StorageRpc.Option.IF_METAGENERATION_MATCH, metageneration);
 163  
     }
 164  
 
 165  
     public static BlobSourceOption metagenerationNotMatch(long metageneration) {
 166  0
       return new BlobSourceOption(StorageRpc.Option.IF_METAGENERATION_NOT_MATCH, metageneration);
 167  
     }
 168  
   }
 169  
 
 170  6
   class BucketListOption extends Option {
 171  
 
 172  
     private static final long serialVersionUID = 8754017079673290353L;
 173  
 
 174  
     private BucketListOption(StorageRpc.Option option, Object value) {
 175  
       super(option, value);
 176  
     }
 177  
 
 178  
     public static BucketListOption maxResults(long maxResults) {
 179  0
       return new BucketListOption(StorageRpc.Option.MAX_RESULTS, maxResults);
 180  
     }
 181  
 
 182  
     public static BucketListOption startPageToken(String pageToken) {
 183  0
       return new BucketListOption(StorageRpc.Option.PAGE_TOKEN, pageToken);
 184  
     }
 185  
 
 186  
     public static BucketListOption prefix(String prefix) {
 187  2
       return new BucketListOption(StorageRpc.Option.PREFIX, prefix);
 188  
     }
 189  
   }
 190  
 
 191  6
   class BlobListOption extends Option {
 192  
 
 193  
     private static final long serialVersionUID = 9083383524788661294L;
 194  
 
 195  
     private BlobListOption(StorageRpc.Option option, Object value) {
 196  
       super(option, value);
 197  
     }
 198  
 
 199  
     public static BlobListOption maxResults(long maxResults) {
 200  2
       return new BlobListOption(StorageRpc.Option.MAX_RESULTS, maxResults);
 201  
     }
 202  
 
 203  
     public static BlobListOption startPageToken(String pageToken) {
 204  0
       return new BlobListOption(StorageRpc.Option.PAGE_TOKEN, pageToken);
 205  
     }
 206  
 
 207  
     public static BlobListOption prefix(String prefix) {
 208  0
       return new BlobListOption(StorageRpc.Option.PREFIX, prefix);
 209  
     }
 210  
 
 211  
     public static BlobListOption recursive(boolean recursive) {
 212  0
       return new BlobListOption(StorageRpc.Option.DELIMITER, recursive);
 213  
     }
 214  
   }
 215  
 
 216  0
   class ComposeRequest implements Serializable {
 217  
 
 218  
     private static final long serialVersionUID = -7385681353748590911L;
 219  
 
 220  
     private final List<SourceBlob> sourceBlobs;
 221  
     private final Blob target;
 222  
     private final List<BlobTargetOption> targetOptions;
 223  
 
 224  
     public static class SourceBlob implements Serializable {
 225  
 
 226  
       private static final long serialVersionUID = 4094962795951990439L;
 227  
 
 228  
       final String name;
 229  
       final Long generation;
 230  
 
 231  
       SourceBlob(String name) {
 232  0
         this(name, null);
 233  0
       }
 234  
 
 235  
       SourceBlob(String name, Long generation) {
 236  
         this.name = name;
 237  
         this.generation = generation;
 238  
       }
 239  
 
 240  
       public String name() {
 241  0
         return name;
 242  
       }
 243  
 
 244  
       public Long generation() {
 245  0
         return generation;
 246  
       }
 247  
     }
 248  
 
 249  0
     public static class Builder {
 250  
 
 251  0
       private final List<SourceBlob> sourceBlobs = new LinkedList<>();
 252  
       private Blob target;
 253  0
       private final Set<BlobTargetOption> targetOptions = new LinkedHashSet<>();
 254  
 
 255  
       public Builder addSource(Iterable<String> blobs) {
 256  0
         for (String blob : blobs) {
 257  0
           sourceBlobs.add(new SourceBlob(blob));
 258  0
         }
 259  0
         return this;
 260  
       }
 261  
 
 262  
       public Builder addSource(String... blobs) {
 263  0
         return addSource(Arrays.asList(blobs));
 264  
       }
 265  
 
 266  
       /**
 267  
        * Add a source with a specific generation to match.
 268  
        */
 269  
       public Builder addSource(String blob, long generation) {
 270  0
         sourceBlobs.add(new SourceBlob(blob, generation));
 271  0
         return this;
 272  
       }
 273  
 
 274  
       public Builder target(Blob target) {
 275  0
         this.target = target;
 276  0
         return this;
 277  
       }
 278  
 
 279  
       public Builder targetOptions(BlobTargetOption... options) {
 280  0
         Collections.addAll(targetOptions, options);
 281  0
         return this;
 282  
       }
 283  
 
 284  
       public ComposeRequest build() {
 285  0
         checkArgument(!sourceBlobs.isEmpty());
 286  0
         checkNotNull(target);
 287  0
         return new ComposeRequest(this);
 288  
       }
 289  
     }
 290  
 
 291  0
     private ComposeRequest(Builder builder) {
 292  0
       sourceBlobs = ImmutableList.copyOf(builder.sourceBlobs);
 293  0
       target = builder.target;
 294  0
       targetOptions = ImmutableList.copyOf(builder.targetOptions);
 295  0
     }
 296  
 
 297  
     public List<SourceBlob> sourceBlobs() {
 298  0
       return sourceBlobs;
 299  
     }
 300  
 
 301  
     public Blob target() {
 302  0
       return target;
 303  
     }
 304  
 
 305  
     public List<BlobTargetOption> targetOptions() {
 306  0
       return targetOptions;
 307  
     }
 308  
 
 309  
     public static ComposeRequest of(Iterable<String> sources, Blob target) {
 310  0
       return builder().target(target).addSource(sources).build();
 311  
     }
 312  
 
 313  
     public static ComposeRequest of(String bucket, Iterable<String> sources, String target) {
 314  0
       return of(sources, Blob.of(bucket, target));
 315  
     }
 316  
 
 317  
     public static Builder builder() {
 318  0
       return new Builder();
 319  
     }
 320  
   }
 321  
 
 322  0
   class CopyRequest implements Serializable {
 323  
 
 324  
     private static final long serialVersionUID = -2606508373751748775L;
 325  
 
 326  
     private final String sourceBucket;
 327  
     private final String sourceBlob;
 328  
     private final List<BlobSourceOption> sourceOptions;
 329  
     private final Blob target;
 330  
     private final List<BlobTargetOption> targetOptions;
 331  
 
 332  0
     public static class Builder {
 333  
 
 334  
       private String sourceBucket;
 335  
       private String sourceBlob;
 336  0
       private final Set<BlobSourceOption> sourceOptions = new LinkedHashSet<>();
 337  
       private Blob target;
 338  0
       private final Set<BlobTargetOption> targetOptions = new LinkedHashSet<>();
 339  
 
 340  
       public Builder source(String bucket, String blob) {
 341  0
         this.sourceBucket = bucket;
 342  0
         this.sourceBlob = blob;
 343  0
         return this;
 344  
       }
 345  
 
 346  
       public Builder sourceOptions(BlobSourceOption... options) {
 347  0
         Collections.addAll(sourceOptions, options);
 348  0
         return this;
 349  
       }
 350  
 
 351  
       public Builder target(Blob target) {
 352  0
         this.target = target;
 353  0
         return this;
 354  
       }
 355  
 
 356  
       public Builder targetOptions(BlobTargetOption... options) {
 357  0
         Collections.addAll(targetOptions, options);
 358  0
         return this;
 359  
       }
 360  
 
 361  
       public CopyRequest build() {
 362  0
         checkNotNull(sourceBucket);
 363  0
         checkNotNull(sourceBlob);
 364  0
         checkNotNull(target);
 365  0
         return new CopyRequest(this);
 366  
       }
 367  
     }
 368  
 
 369  0
     private CopyRequest(Builder builder) {
 370  0
       sourceBucket = checkNotNull(builder.sourceBucket);
 371  0
       sourceBlob = checkNotNull(builder.sourceBlob);
 372  0
       sourceOptions = ImmutableList.copyOf(builder.sourceOptions);
 373  0
       target = checkNotNull(builder.target);
 374  0
       targetOptions = ImmutableList.copyOf(builder.targetOptions);
 375  0
     }
 376  
 
 377  
     public String sourceBucket() {
 378  0
       return sourceBucket;
 379  
     }
 380  
 
 381  
     public String sourceBlob() {
 382  0
       return sourceBlob;
 383  
     }
 384  
 
 385  
     public List<BlobSourceOption> sourceOptions() {
 386  0
       return sourceOptions;
 387  
     }
 388  
 
 389  
     public Blob target() {
 390  0
       return target;
 391  
     }
 392  
 
 393  
     public List<BlobTargetOption> targetOptions() {
 394  0
       return targetOptions;
 395  
     }
 396  
 
 397  
     public static CopyRequest of(String sourceBucket, String sourceBlob, Blob target) {
 398  0
       return builder().source(sourceBucket, sourceBlob).target(target).build();
 399  
     }
 400  
 
 401  
     public static CopyRequest of(String sourceBucket, String sourceBlob, String targetBlob) {
 402  0
       return of(sourceBucket, sourceBlob, Blob.of(sourceBucket, targetBlob));
 403  
     }
 404  
 
 405  
     public static Builder builder() {
 406  0
       return new Builder();
 407  
     }
 408  
   }
 409  
 
 410  
   /**
 411  
    * Create a new bucket.
 412  
    *
 413  
    * @return a complete bucket information.
 414  
    * @throws StorageServiceException upon failure
 415  
    */
 416  
   Bucket create(Bucket bucket, BucketTargetOption... options);
 417  
 
 418  
   /**
 419  
    * Create a new blob.
 420  
    *
 421  
    * @return a complete blob information.
 422  
    * @throws StorageServiceException upon failure
 423  
    */
 424  
   Blob create(Blob blob, byte[] content, BlobTargetOption... options);
 425  
 
 426  
   /**
 427  
    * Return the requested bucket or {@code null} if not found.
 428  
    *
 429  
    * @throws StorageServiceException upon failure
 430  
    */
 431  
   Bucket get(String bucket, BucketSourceOption... options);
 432  
 
 433  
   /**
 434  
    * Return the requested blob or {@code null} if not found.
 435  
    *
 436  
    * @throws StorageServiceException upon failure
 437  
    */
 438  
   Blob get(String bucket, String blob, BlobSourceOption... options);
 439  
 
 440  
   /**
 441  
    * List the project's buckets.
 442  
    *
 443  
    * @throws StorageServiceException upon failure
 444  
    */
 445  
   ListResult<Bucket> list(BucketListOption... options);
 446  
 
 447  
   /**
 448  
    * List the bucket's blobs.
 449  
    *
 450  
    * @throws StorageServiceException upon failure
 451  
    */
 452  
   ListResult<Blob> list(String bucket, BlobListOption... options);
 453  
 
 454  
   /**
 455  
    * Update bucket information.
 456  
    *
 457  
    * @return the updated bucket
 458  
    * @throws StorageServiceException upon failure
 459  
    */
 460  
   Bucket update(Bucket bucket, BucketTargetOption... options);
 461  
 
 462  
   /**
 463  
    * Update blob information.
 464  
    *
 465  
    * @return the updated blob
 466  
    * @throws StorageServiceException upon failure
 467  
    */
 468  
   Blob update(Blob blob, BlobTargetOption... options);
 469  
 
 470  
   /**
 471  
    * Delete the requested bucket.
 472  
    *
 473  
    * @return true if bucket was deleted
 474  
    * @throws StorageServiceException upon failure
 475  
    */
 476  
   boolean delete(String bucket, BucketSourceOption... options);
 477  
 
 478  
   /**
 479  
    * Delete the requested blob.
 480  
    *
 481  
    * @return true if blob was deleted
 482  
    * @throws StorageServiceException upon failure
 483  
    */
 484  
   boolean delete(String bucket, String blob, BlobSourceOption... options);
 485  
 
 486  
   /**
 487  
    * Send a compose request.
 488  
    *
 489  
    * @return the composed blob.
 490  
    * @throws StorageServiceException upon failure
 491  
    */
 492  
   Blob compose(ComposeRequest composeRequest);
 493  
 
 494  
   /**
 495  
    * Send a copy request.
 496  
    *
 497  
    * @return the copied blob.
 498  
    * @throws StorageServiceException upon failure
 499  
    */
 500  
   Blob copy(CopyRequest copyRequest);
 501  
 
 502  
   /**
 503  
    * Load the content of the given blob.
 504  
    *
 505  
    * @return the blob's content.
 506  
    * @throws StorageServiceException upon failure
 507  
    */
 508  
   byte[] load(String bucket, String blob, BlobSourceOption... options);
 509  
 
 510  
   /**
 511  
    * Send a batch request.
 512  
    *
 513  
    * @return the batch response
 514  
    * @throws StorageServiceException upon failure
 515  
    */
 516  
   BatchResponse apply(BatchRequest batchRequest);
 517  
 
 518  
   /**
 519  
    * Return a channel for reading the blob's content.
 520  
    *
 521  
    * @throws StorageServiceException upon failure
 522  
    */
 523  
   BlobReadChannel reader(String bucket, String blob, BlobSourceOption... options);
 524  
 
 525  
   /**
 526  
    * Create a blob and return a channel for writing its content.
 527  
    *
 528  
    * @throws StorageServiceException upon failure
 529  
    */
 530  
   BlobWriteChannel writer(Blob blob, BlobTargetOption... options);
 531  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.StorageServiceException.html b/cobertura/com.google.gcloud.storage.StorageServiceException.html deleted file mode 100644 index b983a3a48bb2..000000000000 --- a/cobertura/com.google.gcloud.storage.StorageServiceException.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.StorageServiceException
-
 
- - - - -
Classes in this File Line Coverage Branch Coverage Complexity
StorageServiceException
0%
0/2
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 /**
 20  
  * Storage service exception.
 21  
  *
 22  
  * @see <a href="https://cloud.google.com/storage/docs/json_api/v1/status-codes">Google Cloud
 23  
  *      Storage error codes</a>
 24  
  */
 25  
 public class StorageServiceException extends RuntimeException {
 26  
 
 27  
   private static final long serialVersionUID = -3748432005065428084L;
 28  
 
 29  
   private final int code;
 30  
   private final boolean retryable;
 31  
 
 32  
   public StorageServiceException(int code, String message, boolean retryable) {
 33  
     super(message);
 34  
     this.code = code;
 35  
     this.retryable = retryable;
 36  
   }
 37  
 
 38  
   /**
 39  
    * Returns the code associated with this exception.
 40  
    */
 41  
   public int code() {
 42  0
     return code;
 43  
   }
 44  
 
 45  
   public boolean retryable() {
 46  0
     return retryable;
 47  
   }
 48  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.StorageServiceFactory.html b/cobertura/com.google.gcloud.storage.StorageServiceFactory.html deleted file mode 100644 index a17b6607919b..000000000000 --- a/cobertura/com.google.gcloud.storage.StorageServiceFactory.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.StorageServiceFactory
-
 
- - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
StorageServiceFactory
0%
0/2
N/A
1
StorageServiceFactory$1
0%
0/1
N/A
1
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 
 20  
 /**
 21  
  * A base class for StorageService factories.
 22  
  */
 23  
 public abstract class StorageServiceFactory {
 24  
 
 25  0
   private static final StorageServiceFactory INSTANCE = new StorageServiceFactory() {
 26  
     @Override
 27  
     public StorageService get(StorageServiceOptions options) {
 28  0
       return new StorageServiceImpl(options);
 29  
     }
 30  
   };
 31  
 
 32  
   /**
 33  
    * Returns the default factory instance.
 34  
    */
 35  
   public static StorageServiceFactory instance() {
 36  0
     return INSTANCE;
 37  
   }
 38  
 
 39  
   /**
 40  
    * Returns a {@code StorageService} for the given options.
 41  
    */
 42  
   public abstract StorageService get(StorageServiceOptions options);
 43  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.StorageServiceImpl.html b/cobertura/com.google.gcloud.storage.StorageServiceImpl.html deleted file mode 100644 index 7857b967c939..000000000000 --- a/cobertura/com.google.gcloud.storage.StorageServiceImpl.html +++ /dev/null @@ -1,860 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.StorageServiceImpl
-
 
- - - - - - - - - - - - - - - - - - - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
StorageServiceImpl
0%
0/128
0%
0/32
1.58
StorageServiceImpl$1
0%
0/5
0%
0/4
1.58
StorageServiceImpl$10
0%
0/2
N/A
1.58
StorageServiceImpl$11
0%
0/2
N/A
1.58
StorageServiceImpl$12
0%
0/2
N/A
1.58
StorageServiceImpl$13
0%
0/2
N/A
1.58
StorageServiceImpl$14
0%
0/2
N/A
1.58
StorageServiceImpl$15
0%
0/2
N/A
1.58
StorageServiceImpl$16
0%
0/2
N/A
1.58
StorageServiceImpl$2
0%
0/2
N/A
1.58
StorageServiceImpl$3
0%
0/2
N/A
1.58
StorageServiceImpl$4
0%
0/6
0%
0/2
1.58
StorageServiceImpl$5
0%
0/6
0%
0/2
1.58
StorageServiceImpl$6
0%
0/2
N/A
1.58
StorageServiceImpl$7
0%
0/2
N/A
1.58
StorageServiceImpl$8
0%
0/2
N/A
1.58
StorageServiceImpl$9
0%
0/2
N/A
1.58
StorageServiceImpl$BasePageFetcher
0%
0/10
0%
0/4
1.58
StorageServiceImpl$BlobPageFetcher
0%
0/1
N/A
1.58
StorageServiceImpl$BucketPageFetcher
0%
0/1
N/A
1.58
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 import static com.google.common.base.MoreObjects.firstNonNull;
 20  
 import static com.google.common.base.Preconditions.checkArgument;
 21  
 import static com.google.gcloud.RetryHelper.runWithRetries;
 22  
 import static com.google.gcloud.spi.StorageRpc.Option.DELIMITER;
 23  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_GENERATION_MATCH;
 24  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_GENERATION_NOT_MATCH;
 25  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_METAGENERATION_MATCH;
 26  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_METAGENERATION_NOT_MATCH;
 27  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_SOURCE_GENERATION_MATCH;
 28  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_SOURCE_GENERATION_NOT_MATCH;
 29  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_SOURCE_METAGENERATION_MATCH;
 30  
 import static com.google.gcloud.spi.StorageRpc.Option.IF_SOURCE_METAGENERATION_NOT_MATCH;
 31  
 import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
 32  
 import static java.util.concurrent.Executors.callable;
 33  
 
 34  
 import com.google.api.services.storage.model.StorageObject;
 35  
 import com.google.common.base.Function;
 36  
 import com.google.common.base.Functions;
 37  
 import com.google.common.collect.ImmutableMap;
 38  
 import com.google.common.collect.Iterables;
 39  
 import com.google.common.collect.Lists;
 40  
 import com.google.common.collect.Maps;
 41  
 import com.google.common.collect.Sets;
 42  
 import com.google.common.primitives.Ints;
 43  
 import com.google.gcloud.BaseService;
 44  
 import com.google.gcloud.ExceptionHandler;
 45  
 import com.google.gcloud.ExceptionHandler.Interceptor;
 46  
 import com.google.gcloud.spi.StorageRpc;
 47  
 import com.google.gcloud.spi.StorageRpc.Tuple;
 48  
 
 49  
 import java.io.Serializable;
 50  
 import java.util.Arrays;
 51  
 import java.util.List;
 52  
 import java.util.Map;
 53  
 import java.util.Set;
 54  
 import java.util.concurrent.Callable;
 55  
 
 56  0
 final class StorageServiceImpl extends BaseService<StorageServiceOptions> implements StorageService {
 57  
 
 58  0
   private static final Interceptor EXCEPTION_HANDLER_INTERCEPTOR = new Interceptor() {
 59  
 
 60  
     private static final long serialVersionUID = -7758580330857881124L;
 61  
 
 62  
     @Override
 63  
     public RetryResult afterEval(Exception exception, RetryResult retryResult) {
 64  0
       return null;
 65  
     }
 66  
 
 67  
     @Override
 68  
     public RetryResult beforeEval(Exception exception) {
 69  0
       if (exception instanceof StorageServiceException) {
 70  0
         boolean retriable = ((StorageServiceException) exception).retryable();
 71  0
         return retriable ? Interceptor.RetryResult.RETRY : Interceptor.RetryResult.ABORT;
 72  
       }
 73  0
       return null;
 74  
     }
 75  
   };
 76  0
   static final ExceptionHandler EXCEPTION_HANDLER = ExceptionHandler.builder()
 77  
       .abortOn(RuntimeException.class).interceptor(EXCEPTION_HANDLER_INTERCEPTOR).build();
 78  0
   private static final byte[] EMPTY_BYTE_ARRAY = {};
 79  
 
 80  
   private final StorageRpc storageRpc;
 81  
 
 82  
   StorageServiceImpl(StorageServiceOptions options) {
 83  0
     super(options);
 84  0
     storageRpc = options.storageRpc();
 85  
     // todo: replace nulls with Value.asNull (per toPb)
 86  
     // todo: configure timeouts - https://developers.google.com/api-client-library/java/google-api-java-client/errors
 87  
     // todo: provide rewrite - https://cloud.google.com/storage/docs/json_api/v1/objects/rewrite
 88  
     // todo: provide signed urls - https://cloud.google.com/storage/docs/access-control#Signed-URLs
 89  
     // todo: check if we need to expose https://cloud.google.com/storage/docs/json_api/v1/bucketAccessControls/insert vs using bucket update/patch
 90  0
   }
 91  
 
 92  
   @Override
 93  
   public Bucket create(Bucket bucket, BucketTargetOption... options) {
 94  0
     final com.google.api.services.storage.model.Bucket bucketPb = bucket.toPb();
 95  0
     final Map<StorageRpc.Option, ?> optionsMap = optionMap(bucket, options);
 96  0
     return Bucket.fromPb(runWithRetries(
 97  0
         new Callable<com.google.api.services.storage.model.Bucket>() {
 98  
           @Override
 99  
           public com.google.api.services.storage.model.Bucket call() {
 100  0
             return storageRpc.create(bucketPb, optionsMap);
 101  
           }
 102  
         }, options().retryParams(), EXCEPTION_HANDLER));
 103  
   }
 104  
 
 105  
   @Override
 106  
   public Blob create(Blob blob, final byte[] content, BlobTargetOption... options) {
 107  0
     final StorageObject blobPb = blob.toPb();
 108  0
     final Map<StorageRpc.Option, ?> optionsMap = optionMap(blob, options);
 109  0
     return Blob.fromPb(runWithRetries(new Callable<StorageObject>() {
 110  
       @Override
 111  
       public StorageObject call() {
 112  0
         return storageRpc.create(blobPb, firstNonNull(content, EMPTY_BYTE_ARRAY), optionsMap);
 113  
       }
 114  
     }, options().retryParams(), EXCEPTION_HANDLER));
 115  
   }
 116  
 
 117  
   @Override
 118  
   public Bucket get(String bucket, BucketSourceOption... options) {
 119  0
     final com.google.api.services.storage.model.Bucket bucketPb = Bucket.of(bucket).toPb();
 120  0
     final Map<StorageRpc.Option, ?> optionsMap = optionMap(options);
 121  0
     com.google.api.services.storage.model.Bucket answer = runWithRetries(
 122  0
         new Callable<com.google.api.services.storage.model.Bucket>() {
 123  
           @Override
 124  
           public com.google.api.services.storage.model.Bucket call() {
 125  
             try {
 126  0
               return storageRpc.get(bucketPb, optionsMap);
 127  0
             } catch (StorageServiceException ex) {
 128  0
               if (ex.code() == HTTP_NOT_FOUND) {
 129  0
                 return null;
 130  
               }
 131  0
               throw ex;
 132  
             }
 133  
           }
 134  
         }, options().retryParams(), EXCEPTION_HANDLER);
 135  0
     return answer == null ? null : Bucket.fromPb(answer);
 136  
   }
 137  
 
 138  
   @Override
 139  
   public Blob get(String bucket, String blob, BlobSourceOption... options) {
 140  0
     final StorageObject storedObject = Blob.of(bucket, blob).toPb();
 141  0
     final Map<StorageRpc.Option, ?> optionsMap = optionMap(options);
 142  0
     StorageObject storageObject = runWithRetries(new Callable<StorageObject>() {
 143  
       @Override
 144  
       public StorageObject call() {
 145  
         try {
 146  0
           return storageRpc.get(storedObject, optionsMap);
 147  0
         } catch (StorageServiceException ex) {
 148  0
           if (ex.code() == HTTP_NOT_FOUND) {
 149  0
             return null;
 150  
           }
 151  0
           throw ex;
 152  
         }
 153  
       }
 154  
     }, options().retryParams(), EXCEPTION_HANDLER);
 155  0
     return storageObject == null ? null : Blob.fromPb(storageObject);
 156  
   }
 157  
 
 158  
   private static abstract class BasePageFetcher<T extends Serializable>
 159  
       implements ListResult.NextPageFetcher<T> {
 160  
 
 161  
     private static final long serialVersionUID = 8236329004030295223L;
 162  
     protected final Map<StorageRpc.Option, ?> requestOptions;
 163  
     protected final StorageServiceOptions serviceOptions;
 164  
 
 165  
     BasePageFetcher(StorageServiceOptions serviceOptions, String cursor,
 166  0
         Map<StorageRpc.Option, ?> optionMap) {
 167  0
       this.serviceOptions = serviceOptions;
 168  0
       ImmutableMap.Builder<StorageRpc.Option, Object> builder = ImmutableMap.builder();
 169  0
       builder.put(StorageRpc.Option.PAGE_TOKEN, cursor);
 170  0
       for (Map.Entry<StorageRpc.Option, ?> option : optionMap.entrySet()) {
 171  0
         if (option.getKey() != StorageRpc.Option.PAGE_TOKEN) {
 172  0
           builder.put(option.getKey(), option.getValue());
 173  
         }
 174  0
       }
 175  0
       this.requestOptions = builder.build();
 176  0
     }
 177  
   }
 178  
 
 179  
   private static class BucketPageFetcher extends BasePageFetcher<Bucket> {
 180  
 
 181  
     private static final long serialVersionUID = -5490616010200159174L;
 182  
 
 183  
     BucketPageFetcher(StorageServiceOptions serviceOptions, String cursor,
 184  
         Map<StorageRpc.Option, ?> optionMap) {
 185  
       super(serviceOptions, cursor, optionMap);
 186  
     }
 187  
 
 188  
     @Override
 189  
     public ListResult<Bucket> nextPage() {
 190  0
       return listBuckets(serviceOptions, requestOptions);
 191  
     }
 192  
   }
 193  
 
 194  
   private static class BlobPageFetcher extends BasePageFetcher<Blob> {
 195  
 
 196  
     private static final long serialVersionUID = -5490616010200159174L;
 197  
     private final String bucket;
 198  
 
 199  
     BlobPageFetcher(String bucket, StorageServiceOptions serviceOptions, String cursor,
 200  
         Map<StorageRpc.Option, ?> optionMap) {
 201  
       super(serviceOptions, cursor, optionMap);
 202  
       this.bucket = bucket;
 203  
     }
 204  
 
 205  
     @Override
 206  
     public ListResult<Blob> nextPage() {
 207  0
       return listBlobs(bucket, serviceOptions, requestOptions);
 208  
     }
 209  
   }
 210  
 
 211  
   @Override
 212  
   public ListResult<Bucket> list(BucketListOption... options) {
 213  0
     return listBuckets(options(), optionMap(options));
 214  
   }
 215  
 
 216  
   private static ListResult<Bucket> listBuckets(final StorageServiceOptions serviceOptions,
 217  
       final Map<StorageRpc.Option, ?> optionsMap) {
 218  0
     Tuple<String, Iterable<com.google.api.services.storage.model.Bucket>> result = runWithRetries(
 219  0
         new Callable<Tuple<String, Iterable<com.google.api.services.storage.model.Bucket>>>() {
 220  
           @Override
 221  
           public Tuple<String, Iterable<com.google.api.services.storage.model.Bucket>> call() {
 222  0
             return serviceOptions.storageRpc().list(optionsMap);
 223  
           }
 224  
         }, serviceOptions.retryParams(), EXCEPTION_HANDLER);
 225  0
     String cursor = result.x();
 226  0
     return new ListResult<>(new BucketPageFetcher(serviceOptions, cursor, optionsMap), cursor,
 227  
         Iterables.transform(result.y(),
 228  0
             new Function<com.google.api.services.storage.model.Bucket, Bucket>() {
 229  
               @Override
 230  
               public Bucket apply(com.google.api.services.storage.model.Bucket bucketPb) {
 231  0
                 return Bucket.fromPb(bucketPb);
 232  
               }
 233  
             }));
 234  
   }
 235  
 
 236  
   @Override
 237  
   public ListResult<Blob> list(final String bucket, BlobListOption... options) {
 238  0
     return listBlobs(bucket, options(), optionMap(options));
 239  
   }
 240  
 
 241  
   private static ListResult<Blob> listBlobs(final String bucket,
 242  
       final StorageServiceOptions serviceOptions, final Map<StorageRpc.Option, ?> optionsMap) {
 243  0
     Tuple<String, Iterable<StorageObject>> result = runWithRetries(
 244  0
         new Callable<Tuple<String, Iterable<StorageObject>>>() {
 245  
           @Override
 246  
           public Tuple<String, Iterable<StorageObject>> call() {
 247  0
             return serviceOptions.storageRpc().list(bucket, optionsMap);
 248  
           }
 249  
         }, serviceOptions.retryParams(), EXCEPTION_HANDLER);
 250  0
     String cursor = result.x();
 251  0
     return new ListResult<>(new BlobPageFetcher(bucket, serviceOptions, cursor, optionsMap), cursor,
 252  
         Iterables.transform(result.y(),
 253  0
             new Function<StorageObject, Blob>() {
 254  
               @Override
 255  
               public Blob apply(StorageObject storageObject) {
 256  0
                 return Blob.fromPb(storageObject);
 257  
               }
 258  
             }));
 259  
   }
 260  
 
 261  
   @Override
 262  
   public Bucket update(Bucket bucket, BucketTargetOption... options) {
 263  0
     final com.google.api.services.storage.model.Bucket bucketPb = bucket.toPb();
 264  0
     final Map<StorageRpc.Option, ?> optionsMap = optionMap(bucket, options);
 265  0
     return Bucket.fromPb(runWithRetries(
 266  0
         new Callable<com.google.api.services.storage.model.Bucket>() {
 267  
           @Override
 268  
           public com.google.api.services.storage.model.Bucket call() {
 269  0
             return storageRpc.patch(bucketPb, optionsMap);
 270  
           }
 271  
         }, options().retryParams(), EXCEPTION_HANDLER));
 272  
   }
 273  
 
 274  
   @Override
 275  
   public Blob update(Blob blob, BlobTargetOption... options) {
 276  0
     final StorageObject storageObject = blob.toPb();
 277  0
     final Map<StorageRpc.Option, ?> optionsMap = optionMap(blob, options);
 278  0
     return Blob.fromPb(runWithRetries(new Callable<StorageObject>() {
 279  
       @Override
 280  
       public StorageObject call() {
 281  0
         return storageRpc.patch(storageObject, optionsMap);
 282  
       }
 283  
     }, options().retryParams(), EXCEPTION_HANDLER));
 284  
   }
 285  
 
 286  
   @Override
 287  
   public boolean delete(String bucket, BucketSourceOption... options) {
 288  0
     final com.google.api.services.storage.model.Bucket bucketPb = Bucket.of(bucket).toPb();
 289  0
     final Map<StorageRpc.Option, ?> optionsMap = optionMap(options);
 290  0
     return runWithRetries(new Callable<Boolean>() {
 291  
       @Override
 292  
       public Boolean call() {
 293  0
         return storageRpc.delete(bucketPb, optionsMap);
 294  
       }
 295  
     }, options().retryParams(), EXCEPTION_HANDLER);
 296  
   }
 297  
 
 298  
   @Override
 299  
   public boolean delete(String bucket, String blob, BlobSourceOption... options) {
 300  0
     final StorageObject storageObject = Blob.of(bucket, blob).toPb();
 301  0
     final Map<StorageRpc.Option, ?> optionsMap = optionMap(options);
 302  0
     return runWithRetries(new Callable<Boolean>() {
 303  
       @Override
 304  
       public Boolean call() {
 305  0
         return storageRpc.delete(storageObject, optionsMap);
 306  
       }
 307  
     }, options().retryParams(), EXCEPTION_HANDLER);
 308  
   }
 309  
 
 310  
   @Override
 311  
   public Blob compose(final ComposeRequest composeRequest) {
 312  0
     final List<StorageObject> sources =
 313  
         Lists.newArrayListWithCapacity(composeRequest.sourceBlobs().size());
 314  0
     for (ComposeRequest.SourceBlob sourceBlob : composeRequest.sourceBlobs()) {
 315  0
       sources.add(Blob.builder(composeRequest.target().bucket(), sourceBlob.name())
 316  
           .generation(sourceBlob.generation()).build().toPb());
 317  0
     }
 318  0
     final StorageObject target = composeRequest.target().toPb();
 319  0
     final Map<StorageRpc.Option, ?> targetOptions = optionMap(composeRequest.target().generation(),
 320  
         composeRequest.target().metageneration(), composeRequest.targetOptions());
 321  0
     return Blob.fromPb(runWithRetries(new Callable<StorageObject>() {
 322  
       @Override
 323  
       public StorageObject call() {
 324  0
         return storageRpc.compose(sources, target, targetOptions);
 325  
       }
 326  
     }, options().retryParams(), EXCEPTION_HANDLER));
 327  
   }
 328  
 
 329  
   @Override
 330  
   public Blob copy(CopyRequest copyRequest) {
 331  0
     final StorageObject source =
 332  
         Blob.of(copyRequest.sourceBucket(), copyRequest.sourceBlob()).toPb();
 333  0
     copyRequest.sourceOptions();
 334  0
     final Map<StorageRpc.Option, ?> sourceOptions =
 335  
         optionMap(null, null, copyRequest.sourceOptions(), true);
 336  0
     final StorageObject target = copyRequest.target().toPb();
 337  0
     final Map<StorageRpc.Option, ?> targetOptions = optionMap(copyRequest.target().generation(),
 338  
         copyRequest.target().metageneration(), copyRequest.targetOptions());
 339  0
     return Blob.fromPb(runWithRetries(new Callable<StorageObject>() {
 340  
       @Override
 341  
       public StorageObject call() {
 342  0
         return storageRpc.copy(source, sourceOptions, target, targetOptions);
 343  
       }
 344  
     }, options().retryParams(), EXCEPTION_HANDLER));
 345  
   }
 346  
 
 347  
   @Override
 348  
   public byte[] load(String bucket, String blob, BlobSourceOption... options) {
 349  0
     final StorageObject storageObject = Blob.of(bucket, blob).toPb();
 350  0
     final Map<StorageRpc.Option, ?> optionsMap = optionMap(options);
 351  0
     return runWithRetries(new Callable<byte[]>() {
 352  
       @Override
 353  
       public byte[] call() {
 354  0
         return storageRpc.load(storageObject, optionsMap);
 355  
       }
 356  
     }, options().retryParams(), EXCEPTION_HANDLER);
 357  
   }
 358  
 
 359  
   @Override
 360  
   public BatchResponse apply(BatchRequest batchRequest) {
 361  0
     List<Tuple<StorageObject, Map<StorageRpc.Option, ?>>> toDelete =
 362  
         Lists.newArrayListWithCapacity(batchRequest.toDelete().size());
 363  0
     for (Map.Entry<Blob, Iterable<BlobSourceOption>> entry : batchRequest.toDelete().entrySet()) {
 364  0
       Blob blob = entry.getKey();
 365  0
       Map<StorageRpc.Option, ?> optionsMap =
 366  
           optionMap(blob.generation(), blob.metageneration(), entry.getValue());
 367  0
       StorageObject storageObject = blob.toPb();
 368  0
       toDelete.add(Tuple.<StorageObject, Map<StorageRpc.Option, ?>>of(storageObject, optionsMap));
 369  0
     }
 370  0
     List<Tuple<StorageObject, Map<StorageRpc.Option, ?>>> toUpdate =
 371  
         Lists.newArrayListWithCapacity(batchRequest.toUpdate().size());
 372  0
     for (Map.Entry<Blob, Iterable<BlobTargetOption>> entry : batchRequest.toUpdate().entrySet()) {
 373  0
       Blob blob = entry.getKey();
 374  0
       Map<StorageRpc.Option, ?> optionsMap =
 375  
           optionMap(blob.generation(), blob.metageneration(), entry.getValue());
 376  0
       toUpdate.add(Tuple.<StorageObject, Map<StorageRpc.Option, ?>>of(blob.toPb(), optionsMap));
 377  0
     }
 378  0
     List<Tuple<StorageObject, Map<StorageRpc.Option, ?>>> toGet =
 379  
         Lists.newArrayListWithCapacity(batchRequest.toGet().size());
 380  0
     for (Map.Entry<Blob, Iterable<BlobSourceOption>> entry : batchRequest.toGet().entrySet()) {
 381  0
       Blob blob = entry.getKey();
 382  0
       Map<StorageRpc.Option, ?> optionsMap =
 383  
           optionMap(blob.generation(), blob.metageneration(), entry.getValue());
 384  0
       toGet.add(Tuple.<StorageObject, Map<StorageRpc.Option, ?>>of(blob.toPb(), optionsMap));
 385  0
     }
 386  0
     StorageRpc.BatchResponse response =
 387  
         storageRpc.batch(new StorageRpc.BatchRequest(toDelete, toUpdate, toGet));
 388  0
     List<BatchResponse.Result<Boolean>> deletes = transformBatchResult(
 389  
         toDelete, response.deletes, Functions.<Boolean>identity());
 390  0
     List<BatchResponse.Result<Blob>> updates = transformBatchResult(
 391  
         toUpdate, response.updates, Blob.FROM_PB_FUNCTION);
 392  0
     List<BatchResponse.Result<Blob>> gets = transformBatchResult(
 393  
         toGet, response.gets, Blob.FROM_PB_FUNCTION, HTTP_NOT_FOUND);
 394  0
     return new BatchResponse(deletes, updates, gets);
 395  
   }
 396  
 
 397  
   private <I, O extends Serializable> List<BatchResponse.Result<O>> transformBatchResult(
 398  
       Iterable<Tuple<StorageObject, Map<StorageRpc.Option, ?>>> request,
 399  
       Map<StorageObject, Tuple<I, StorageServiceException>> results, Function<I, O> transform,
 400  
       int... nullOnErrorCodes) {
 401  0
     Set nullOnErrorCodesSet = Sets.newHashSet(Ints.asList(nullOnErrorCodes));
 402  0
     List<BatchResponse.Result<O>> response = Lists.newArrayListWithCapacity(results.size());
 403  0
     for (Tuple<StorageObject, ?> tuple : request) {
 404  0
       Tuple<I, StorageServiceException> result = results.get(tuple.x());
 405  0
       if (result.x() != null) {
 406  0
         response.add(BatchResponse.Result.of(transform.apply(result.x())));
 407  
       } else {
 408  0
         StorageServiceException exception = result.y();
 409  0
         if (nullOnErrorCodesSet.contains(exception.code())) {
 410  
           //noinspection unchecked
 411  0
           response.add(BatchResponse.Result.<O>empty());
 412  
         } else {
 413  0
           response.add(new BatchResponse.Result<O>(exception));
 414  
         }
 415  
       }
 416  0
     }
 417  0
     return response;
 418  
   }
 419  
 
 420  
   @Override
 421  
   public BlobReadChannel reader(String bucket, String blob, BlobSourceOption... options) {
 422  0
     Map<StorageRpc.Option, ?> optionsMap = optionMap(options);
 423  0
     return new BlobReadChannelImpl(options(), Blob.of(bucket, blob), optionsMap);
 424  
   }
 425  
 
 426  
  @Override
 427  
   public BlobWriteChannel writer(Blob blob, BlobTargetOption... options) {
 428  0
     final Map<StorageRpc.Option, ?> optionsMap = optionMap(blob, options);
 429  0
     return new BlobWriterChannelImpl(options(), blob, optionsMap);
 430  
   }
 431  
 
 432  
   private Map<StorageRpc.Option, ?> optionMap(Long generation, Long metaGeneration,
 433  
       Iterable<? extends Option> options) {
 434  0
     return optionMap(generation, metaGeneration, options, false);
 435  
   }
 436  
 
 437  
   private Map<StorageRpc.Option, ?> optionMap(Long generation, Long metaGeneration,
 438  
       Iterable<? extends Option> options, boolean useAsSource) {
 439  0
     Map<StorageRpc.Option, Object> temp = Maps.newEnumMap(StorageRpc.Option.class);
 440  0
     for (Option option : options) {
 441  0
       Object prev = temp.put(option.rpcOption(), option.value());
 442  0
       checkArgument(prev == null, "Duplicate option %s", option);
 443  0
     }
 444  0
     Boolean value = (Boolean) temp.remove(DELIMITER);
 445  0
     if (Boolean.TRUE.equals(value)) {
 446  0
       temp.put(DELIMITER, options().pathDelimiter());
 447  
     }
 448  0
     if (useAsSource) {
 449  0
       addToOptionMap(IF_GENERATION_MATCH, IF_SOURCE_GENERATION_MATCH, generation, temp);
 450  0
       addToOptionMap(IF_GENERATION_NOT_MATCH, IF_SOURCE_GENERATION_NOT_MATCH, generation, temp);
 451  0
       addToOptionMap(IF_METAGENERATION_MATCH, IF_SOURCE_METAGENERATION_MATCH, metaGeneration, temp);
 452  0
       addToOptionMap(IF_METAGENERATION_NOT_MATCH,
 453  
           IF_SOURCE_METAGENERATION_NOT_MATCH, metaGeneration, temp);
 454  
     } else {
 455  0
       addToOptionMap(IF_GENERATION_MATCH, generation, temp);
 456  0
       addToOptionMap(IF_GENERATION_NOT_MATCH, generation, temp);
 457  0
       addToOptionMap(IF_METAGENERATION_MATCH, metaGeneration, temp);
 458  0
       addToOptionMap(IF_METAGENERATION_NOT_MATCH, metaGeneration, temp);
 459  
     }
 460  0
     return ImmutableMap.copyOf(temp);
 461  
   }
 462  
 
 463  
   private static <T> void addToOptionMap(StorageRpc.Option option, T defaultValue,
 464  
       Map<StorageRpc.Option, Object> map) {
 465  0
     addToOptionMap(option, option, defaultValue, map);
 466  0
   }
 467  
 
 468  
   private static <T> void addToOptionMap(StorageRpc.Option getOption, StorageRpc.Option putOption,
 469  
       T defaultValue, Map<StorageRpc.Option, Object> map) {
 470  0
     if (map.containsKey(getOption)) {
 471  
       @SuppressWarnings("unchecked")
 472  0
       T value = (T) map.remove(getOption);
 473  0
       checkArgument(value != null || defaultValue != null,
 474  
           "Option " + getOption.value() + " is missing a value");
 475  0
       value = firstNonNull(value, defaultValue);
 476  0
       map.put(putOption, value);
 477  
     }
 478  0
   }
 479  
 
 480  
   private Map<StorageRpc.Option, ?> optionMap(Option... options) {
 481  0
     return optionMap(null, null, Arrays.asList(options));
 482  
   }
 483  
 
 484  
   private Map<StorageRpc.Option, ?> optionMap(Long generation, Long metaGeneration,
 485  
       Option... options) {
 486  0
     return optionMap(generation, metaGeneration, Arrays.asList(options));
 487  
   }
 488  
 
 489  
   private Map<StorageRpc.Option, ?> optionMap(Bucket bucket, Option... options) {
 490  0
     return optionMap(null, bucket.metageneration(), options);
 491  
   }
 492  
 
 493  
   private Map<StorageRpc.Option, ?> optionMap(Blob blob, Option... options) {
 494  0
     return optionMap(blob.generation(), blob.metageneration(), options);
 495  
   }
 496  
 }
- - - - diff --git a/cobertura/com.google.gcloud.storage.StorageServiceOptions.html b/cobertura/com.google.gcloud.storage.StorageServiceOptions.html deleted file mode 100644 index 0ce17113e83d..000000000000 --- a/cobertura/com.google.gcloud.storage.StorageServiceOptions.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - -Coverage Report - - - - -
Coverage Report - com.google.gcloud.storage.StorageServiceOptions
-
 
- - - - - - -
Classes in this File Line Coverage Branch Coverage Complexity
StorageServiceOptions
47%
10/21
30%
3/10
1.462
StorageServiceOptions$1
N/A
N/A
1.462
StorageServiceOptions$Builder
100%
4/4
N/A
1.462
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 1  
 /*
 2  
  * Copyright 2015 Google Inc. All Rights Reserved.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *       http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package com.google.gcloud.storage;
 18  
 
 19  
 import com.google.common.base.MoreObjects;
 20  
 import com.google.common.collect.ImmutableSet;
 21  
 import com.google.gcloud.ServiceOptions;
 22  
 import com.google.gcloud.spi.ServiceRpcProvider;
 23  
 import com.google.gcloud.spi.StorageRpc;
 24  
 
 25  
 import java.util.Objects;
 26  
 import java.util.Set;
 27  
 
 28  4
 public class StorageServiceOptions extends ServiceOptions<StorageRpc, StorageServiceOptions> {
 29  
 
 30  
   private static final long serialVersionUID = -7804860602287801084L;
 31  
   private static final String GCS_SCOPE = "https://www.googleapis.com/auth/devstorage.full_control";
 32  2
   private static final Set<String> SCOPES = ImmutableSet.of(GCS_SCOPE);
 33  
   private static final String DEFAULT_PATH_DELIMITER = "/";
 34  
 
 35  
   private final String pathDelimiter;
 36  
   private transient StorageRpc storageRpc;
 37  
 
 38  8
   public static class Builder extends
 39  
       ServiceOptions.Builder<StorageRpc, StorageServiceOptions, Builder> {
 40  
 
 41  
     private String pathDelimiter;
 42  
 
 43  
     private Builder() {}
 44  
 
 45  
     private Builder(StorageServiceOptions options) {
 46  
       super(options);
 47  
     }
 48  
 
 49  
     public Builder pathDelimiter(String pathDelimiter) {
 50  2
       this.pathDelimiter = pathDelimiter;
 51  2
       return this;
 52  
     }
 53  
 
 54  
     @Override
 55  
     public StorageServiceOptions build() {
 56  4
       return new StorageServiceOptions(this);
 57  
     }
 58  
   }
 59  
 
 60  
   private StorageServiceOptions(Builder builder) {
 61  4
     super(builder);
 62  4
     pathDelimiter = MoreObjects.firstNonNull(builder.pathDelimiter, DEFAULT_PATH_DELIMITER);
 63  
     // todo: consider providing read-timeout
 64  4
   }
 65  
 
 66  
   @Override
 67  
   protected Set<String> scopes() {
 68  0
     return SCOPES;
 69  
   }
 70  
 
 71  
   StorageRpc storageRpc() {
 72  0
     if (storageRpc != null) {
 73  0
       return storageRpc;
 74  
     }
 75  0
     if (serviceRpcFactory() != null) {
 76  0
       storageRpc = serviceRpcFactory().create(this);
 77  
     } else {
 78  0
       storageRpc = ServiceRpcProvider.storage(this);
 79  
     }
 80  0
     return storageRpc;
 81  
   }
 82  
 
 83  
   public String pathDelimiter() {
 84  0
     return pathDelimiter;
 85  
   }
 86  
 
 87  
   @Override
 88  
   public Builder toBuilder() {
 89  2
     return new Builder(this);
 90  
   }
 91  
 
 92  
   @Override
 93  
   public int hashCode() {
 94  0
     return super.hashCode() ^ Objects.hash(pathDelimiter);
 95  
   }
 96  
 
 97  
   @Override
 98  
   public boolean equals(Object obj) {
 99  4
     if (!(obj instanceof StorageServiceOptions)) {
 100  0
       return false;
 101  
     }
 102  4
     StorageServiceOptions other = (StorageServiceOptions) obj;
 103  4
     return isEquals(other) && Objects.equals(pathDelimiter, other.pathDelimiter);
 104  
   }
 105  
 
 106  
   public static StorageServiceOptions defaultInstance() {
 107  0
     return builder().build();
 108  
   }
 109  
 
 110  
   public static Builder builder() {
 111  2
     return new Builder();
 112  
   }
 113  
 }
- - - - diff --git a/cobertura/coverage.xml b/cobertura/coverage.xml deleted file mode 100644 index 3112bb0767c6..000000000000 --- a/cobertura/coverage.xml +++ /dev/null @@ -1,19272 +0,0 @@ - - - - - - /home/travis/build/GoogleCloudPlatform/gcloud-java/src/main/java - --source - /home/travis/build/GoogleCloudPlatform/gcloud-java/target/generated-sources/annotations - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cobertura/css/help.css b/cobertura/css/help.css deleted file mode 100644 index b023e03348cd..000000000000 --- a/cobertura/css/help.css +++ /dev/null @@ -1,22 +0,0 @@ -dl { - float: left; - width: 100%; -} - -dt { - border-top: 1px solid #808080; - float: left; - font-weight: bold; - margin: 0; - padding: 1em; - width: 20%; -} - -dd { - border-top: 1px solid #808080; - float: left; - font-style: italic; - margin: 0; - padding: 1em; - width: 60%; -} diff --git a/cobertura/css/main.css b/cobertura/css/main.css deleted file mode 100644 index fb209e4134d8..000000000000 --- a/cobertura/css/main.css +++ /dev/null @@ -1,131 +0,0 @@ -@import url("help.css"); -@import url("source-viewer.css"); -@import url("tooltip.css"); - -.hidden { - display: none; -} - -a.dfn { - border-bottom: 1px dotted #00aa00; - cursor: help; -} - -a.dfn:active, a.dfn:link, a.dfn:visited { - color: #000000; - text-decoration: none; -} - -a.dfn:hover { - color: #0000ff; - text-decoration: none; -} - -body { - font-family: verdana, arial, helvetica; -} - -h1, h2, h3, h4, h5, h6 { - margin-bottom: 0.5em; -} - -h5 { - margin-top: 0.5em; -} - -div.footer { - font-size: 68%; - margin-top: 1.5em; -} - -div.percentgraph -{ - background-color: #f02020; - border: #808080 1px solid; - height: 1.3em; - margin: 0px; - padding: 0px; - width: 100px; -} - -div.percentgraph div.greenbar -{ - background-color: #00f000; - height: 1.3em; - margin: 0px; - padding: 0px; -} - -div.percentgraph div.na -{ - background-color: #eaeaea; - height: 1.3em; - margin: 0px; - padding: 0px; -} - -div.percentgraph span.text -{ - display: block; - position: absolute; - text-align: center; - width: 100px; -} - -div.separator { - height: 10px; -} - -table tr td, table tr th { - font-size: 68%; -} - -td.value table tr td { - font-size: 11px; -} - -table.percentgraph { - border: 0px; - font-size: 130%; - margin: 0px; - margin-left: auto; - margin-right: 0px; - padding: 0px; -} - -table.percentgraph tr.percentgraph { - border: 0px; - margin: 0px; - padding: 0px; -} - -table.percentgraph td.percentgraph { - border: 0px; - margin: 0px; - padding: 0px; - padding-left: 4px; -} - -table.report { - border-collapse: collapse; - width: 100%; -} - -table.report td { - border: #d0d0d0 1px solid; -} - -table.report td.heading { - background: #dcecff; - font-weight: bold; - text-align: center; -} - -table.report td.heading:hover { - background: #c0ffc0; - cursor: pointer; -} - -table.report td.value { - text-align: right; -} diff --git a/cobertura/css/sortabletable.css b/cobertura/css/sortabletable.css deleted file mode 100644 index 7c1ff92bd8c8..000000000000 --- a/cobertura/css/sortabletable.css +++ /dev/null @@ -1,50 +0,0 @@ -.sort-table { - font: Icon; - border: 1px Solid ThreeDShadow; - background: Window; - color: WindowText; -} - -.sort-table thead { - background: ButtonFace; -} - -.sort-table td { - padding: 2px 5px; -} - -.sort-table thead td { - border: 1px solid; - border-color: ButtonHighlight ButtonShadow - ButtonShadow ButtonHighlight; - cursor: default; -} - -.sort-table thead td:active { - border-color: ButtonShadow ButtonHighlight - ButtonHighlight ButtonShadow; - padding: 3px 4px 1px 6px; -} - -.sort-table thead td[_sortType=None]:active { - border-color: ButtonHighlight ButtonShadow - ButtonShadow ButtonHighlight; - padding: 2px 5px; -} - -.sort-arrow { - width: 11px; - height: 11px; - background-position: center center; - background-repeat: no-repeat; - margin: 0 2px; -} - -.sort-arrow.descending { - background-image: url("../images/downsimple.png"); - -} - -.sort-arrow.ascending { - background-image: url("../images/upsimple.png"); -} \ No newline at end of file diff --git a/cobertura/css/source-viewer.css b/cobertura/css/source-viewer.css deleted file mode 100644 index 125a994b82ea..000000000000 --- a/cobertura/css/source-viewer.css +++ /dev/null @@ -1,73 +0,0 @@ -pre.src { - background: #ffffff; - margin-top: 0px; - margin-bottom: 0px; -} - -table.src { - border: #dcdcdc 1px solid; - font-size: 16px; -} - -td.numLine { - background: #f0f0f0; - border-right: #dcdcdc 1px solid; - padding-right: 3px; - text-align: right; -} - -td.numLineCover { - background: #80ff80; - border-right: #dcdcdc 1px solid; - padding-right: 3px; - text-align: right; -} - -td.nbHits { - background: #f0f0f0; - border-right: #dcdcdc 1px solid; - padding-right: 3px; - text-align: right; -} - -td.nbHitsCovered { - background: #80ff80; - border-right: #dcdcdc 1px solid; - padding-right: 3px; - text-align: right; -} - -td.nbHitsUncovered { - background: #ff9090; - border-right: #dcdcdc 1px solid; - font-weight: bold; - padding-right: 3px; - text-align: right; -} - -td.src { - width: 100%; -} - -span.comment { - color: #b22222; - font-style: italic; -} - -span.keyword { - color: #2020bf; - font-weight: bold; -} - -span.srcUncovered { - background: #ff9090; -} - -span.string { - color: #2a00ff; -} - -span.text_italic { - font-size: 12px; - font-style: italic; -} diff --git a/cobertura/css/tooltip.css b/cobertura/css/tooltip.css deleted file mode 100644 index 7c8050c89deb..000000000000 --- a/cobertura/css/tooltip.css +++ /dev/null @@ -1,49 +0,0 @@ -a.hastooltip { - border-bottom: 1px dotted #00aa00; - color: #000000; - cursor: help; - font-style: normal; - position: relative; /* This is the key */ - text-decoration: none; - z-index: 24; /* What does this do? */ -} - -a.hastooltip:active { - color: #000000; - text-decoration: none; -} - -a.hastooltip:link { - color: #000000; - text-decoration: none; -} - -a.hastooltip:hover { - background-color: #a0b8ff; - color: #000000; - text-decoration: none; - z-index: 25; -} - -a.hastooltip:visited { - color: #000000; - text-decoration: none; -} - -a.hastooltip span { - display: none; -} - -a.hastooltip:hover span { - background-color: #eeeeee; - border: 1px solid #000000; - color: #000000; - display: block; - padding: 5px; - left: -15.2em; - position: absolute; - text-align: center; - text-decoration: none; - top: 2em; - width: 20em; -} diff --git a/cobertura/frame-packages.html b/cobertura/frame-packages.html deleted file mode 100644 index 697a3501dc22..000000000000 --- a/cobertura/frame-packages.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - -Coverage Report - - - -
Packages
- - - - - - - - - - - - - - - - -
All
com.google.gcloud
com.google.gcloud.datastore
com.google.gcloud.spi
com.google.gcloud.storage
- - diff --git a/cobertura/frame-sourcefiles-com.google.gcloud.datastore.html b/cobertura/frame-sourcefiles-com.google.gcloud.datastore.html deleted file mode 100644 index 873d6f0fa99f..000000000000 --- a/cobertura/frame-sourcefiles-com.google.gcloud.datastore.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - -Coverage Report Classes - - - -
-com.google.gcloud.datastore -
-
 
-
Classes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BaseDatastoreBatchWriter (98%)
BaseEntity (93%)
BaseKey (96%)
Batch (N/A)
BatchImpl (90%)
BatchOption (50%)
Blob (75%)
BlobValue (100%)
BooleanValue (100%)
Cursor (61%)
DatastoreBatchWriter (N/A)
DatastoreHelper (95%)
DatastoreReader (N/A)
DatastoreReaderWriter (N/A)
DatastoreService (N/A)
DatastoreServiceException (90%)
DatastoreServiceFactory (100%)
DatastoreServiceImpl (86%)
DatastoreServiceOptions (76%)
DatastoreWriter (N/A)
DateTime (86%)
DateTimeValue (100%)
DoubleValue (100%)
Entity (81%)
EntityValue (100%)
FullEntity (100%)
GqlQuery (54%)
IncompleteKey (96%)
Key (84%)
KeyFactory (95%)
KeyValue (100%)
ListValue (100%)
LongValue (100%)
NullValue (100%)
PathElement (92%)
ProjectionEntity (92%)
Query (75%)
QueryResults (N/A)
QueryResultsImpl (86%)
RawValue (95%)
Serializable (69%)
StringValue (100%)
StructuredQuery (72%)
Transaction (N/A)
TransactionImpl (81%)
TransactionOption (20%)
Validator (100%)
Value (96%)
ValueBuilder (N/A)
ValueMarshaller (N/A)
ValueType (100%)
- - diff --git a/cobertura/frame-sourcefiles-com.google.gcloud.html b/cobertura/frame-sourcefiles-com.google.gcloud.html deleted file mode 100644 index a0e8b4252786..000000000000 --- a/cobertura/frame-sourcefiles-com.google.gcloud.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - -Coverage Report Classes - - - -
-com.google.gcloud -
-
 
-
Classes
- - - - - - - - - - - - - - - - - - - - - - - - -
AuthCredentials (46%)
BaseService (100%)
ExceptionHandler (91%)
RetryHelper (82%)
RetryParams (96%)
Service (N/A)
ServiceOptions (47%)
- - diff --git a/cobertura/frame-sourcefiles-com.google.gcloud.spi.html b/cobertura/frame-sourcefiles-com.google.gcloud.spi.html deleted file mode 100644 index 8b2e627dc99f..000000000000 --- a/cobertura/frame-sourcefiles-com.google.gcloud.spi.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - -Coverage Report Classes - - - -
-com.google.gcloud.spi -
-
 
-
Classes
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
DatastoreRpc (94%)
DatastoreRpcFactory (N/A)
DefaultDatastoreRpc (71%)
DefaultStorageRpc (0%)
ServiceRpcFactory (N/A)
ServiceRpcProvider (50%)
StorageRpc (47%)
StorageRpcFactory (N/A)
- - diff --git a/cobertura/frame-sourcefiles-com.google.gcloud.storage.html b/cobertura/frame-sourcefiles-com.google.gcloud.storage.html deleted file mode 100644 index f7644901bf0b..000000000000 --- a/cobertura/frame-sourcefiles-com.google.gcloud.storage.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - -Coverage Report Classes - - - -
-com.google.gcloud.storage -
-
 
-
Classes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Acl (94%)
BatchRequest (92%)
BatchResponse (57%)
Blob (95%)
BlobReadChannel (N/A)
BlobReadChannelImpl (0%)
BlobWriteChannel (N/A)
BlobWriterChannelImpl (0%)
Bucket (77%)
Cors (79%)
ListResult (70%)
Option (75%)
StorageService (28%)
StorageServiceException (0%)
StorageServiceFactory (0%)
StorageServiceImpl (0%)
StorageServiceOptions (56%)
- - diff --git a/cobertura/frame-sourcefiles.html b/cobertura/frame-sourcefiles.html deleted file mode 100644 index b6860ffcb916..000000000000 --- a/cobertura/frame-sourcefiles.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - -Coverage Report Classes - - - -
-All Packages -
-
 
-
Classes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Acl (94%)
AuthCredentials (46%)
BaseDatastoreBatchWriter (98%)
BaseEntity (93%)
BaseKey (96%)
BaseService (100%)
Batch (N/A)
BatchImpl (90%)
BatchOption (50%)
BatchRequest (92%)
BatchResponse (57%)
Blob (75%)
Blob (95%)
BlobReadChannel (N/A)
BlobReadChannelImpl (0%)
BlobValue (100%)
BlobWriteChannel (N/A)
BlobWriterChannelImpl (0%)
BooleanValue (100%)
Bucket (77%)
Cors (79%)
Cursor (61%)
DatastoreBatchWriter (N/A)
DatastoreHelper (95%)
DatastoreReader (N/A)
DatastoreReaderWriter (N/A)
DatastoreRpc (94%)
DatastoreRpcFactory (N/A)
DatastoreService (N/A)
DatastoreServiceException (90%)
DatastoreServiceFactory (100%)
DatastoreServiceImpl (86%)
DatastoreServiceOptions (76%)
DatastoreWriter (N/A)
DateTime (86%)
DateTimeValue (100%)
DefaultDatastoreRpc (71%)
DefaultStorageRpc (0%)
DoubleValue (100%)
Entity (81%)
EntityValue (100%)
ExceptionHandler (91%)
FullEntity (100%)
GqlQuery (54%)
IncompleteKey (96%)
Key (84%)
KeyFactory (95%)
KeyValue (100%)
ListResult (70%)
ListValue (100%)
LongValue (100%)
NullValue (100%)
Option (75%)
PathElement (92%)
ProjectionEntity (92%)
Query (75%)
QueryResults (N/A)
QueryResultsImpl (86%)
RawValue (95%)
RetryHelper (82%)
RetryParams (96%)
Serializable (69%)
Service (N/A)
ServiceOptions (47%)
ServiceRpcFactory (N/A)
ServiceRpcProvider (50%)
StorageRpc (47%)
StorageRpcFactory (N/A)
StorageService (28%)
StorageServiceException (0%)
StorageServiceFactory (0%)
StorageServiceImpl (0%)
StorageServiceOptions (56%)
StringValue (100%)
StructuredQuery (72%)
Transaction (N/A)
TransactionImpl (81%)
TransactionOption (20%)
Validator (100%)
Value (96%)
ValueBuilder (N/A)
ValueMarshaller (N/A)
ValueType (100%)
- - diff --git a/cobertura/frame-summary-com.google.gcloud.datastore.html b/cobertura/frame-summary-com.google.gcloud.datastore.html deleted file mode 100644 index 730dbcb75240..000000000000 --- a/cobertura/frame-summary-com.google.gcloud.datastore.html +++ /dev/null @@ -1,226 +0,0 @@ - - - - -Coverage Report - - - - - - - -
Coverage Report - com.google.gcloud.datastore
-
 
- - - - - -
Package # Classes Line Coverage Branch Coverage Complexity
com.google.gcloud.datastore135
83%
1494/1799
69%
404/580
1.444
- -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Classes in this Package Line Coverage Branch Coverage Complexity
BaseDatastoreBatchWriter
98%
98/100
96%
48/50
2.3
BaseEntity
87%
42/48
87%
14/16
1.229
BaseEntity$Builder
98%
55/56
75%
3/4
1.229
BaseKey
93%
30/32
59%
13/22
1.524
BaseKey$Builder
100%
28/28
50%
2/4
1.524
Batch
N/A
N/A
1
Batch$Response
N/A
N/A
1
BatchImpl
88%
16/18
50%
2/4
1.333
BatchImpl$ResponseImpl
100%
1/1
N/A
1.333
BatchImpl$ResponseImpl$1
100%
2/2
N/A
1.333
BatchOption
60%
3/5
50%
1/2
1.2
BatchOption$ForceWrites
0%
0/1
N/A
1.2
Blob
75%
24/32
58%
7/12
1.353
Blob$1
100%
1/1
100%
2/2
1.353
BlobValue
100%
7/7
N/A
1
BlobValue$1
100%
6/6
N/A
1
BlobValue$Builder
100%
4/4
N/A
1
BooleanValue
100%
7/7
N/A
1
BooleanValue$1
100%
5/5
N/A
1
BooleanValue$Builder
100%
4/4
N/A
1
Cursor
61%
16/26
62%
5/8
1.818
DatastoreBatchWriter
N/A
N/A
1
DatastoreHelper
95%
22/23
75%
6/8
1.857
DatastoreReader
N/A
N/A
1
DatastoreReaderWriter
N/A
N/A
0
DatastoreService
N/A
N/A
1
DatastoreService$TransactionCallable
N/A
N/A
1
DatastoreServiceException
84%
22/26
33%
2/6
1.615
DatastoreServiceException$Code
100%
17/17
N/A
1.615
DatastoreServiceFactory
100%
2/2
N/A
1
DatastoreServiceFactory$1
100%
1/1
N/A
1
DatastoreServiceImpl
86%
105/121
84%
37/44
2.325
DatastoreServiceImpl$1
60%
3/5
75%
3/4
2.325
DatastoreServiceImpl$2
100%
2/2
N/A
2.325
DatastoreServiceImpl$3
100%
2/2
N/A
2.325
DatastoreServiceImpl$4
100%
2/2
N/A
2.325
DatastoreServiceImpl$5
100%
2/2
N/A
2.325
DatastoreServiceImpl$6
100%
2/2
N/A
2.325
DatastoreServiceImpl$7
100%
2/2
N/A
2.325
DatastoreServiceImpl$8
100%
3/3
N/A
2.325
DatastoreServiceImpl$ResultsIterator
83%
15/18
62%
5/8
2.325
DatastoreServiceOptions
70%
35/50
42%
12/28
2.158
DatastoreServiceOptions$1
N/A
N/A
2.158
DatastoreServiceOptions$Builder
100%
15/15
100%
2/2
2.158
DatastoreWriter
N/A
N/A
1
DateTime
86%
13/15
83%
5/6
1.143
DateTimeValue
100%
7/7
N/A
1
DateTimeValue$1
100%
5/5
N/A
1
DateTimeValue$Builder
100%
4/4
N/A
1
DoubleValue
100%
7/7
N/A
1
DoubleValue$1
100%
5/5
N/A
1
DoubleValue$Builder
100%
4/4
N/A
1
Entity
63%
7/11
25%
1/4
1.143
Entity$1
N/A
N/A
1.143
Entity$Builder
100%
11/11
50%
1/2
1.143
EntityValue
100%
7/7
N/A
1
EntityValue$1
100%
6/6
N/A
1
EntityValue$Builder
100%
6/6
100%
2/2
1
FullEntity
100%
5/5
N/A
1
FullEntity$Builder
100%
2/2
N/A
1
GqlQuery
71%
38/53
60%
17/28
1.66
GqlQuery$1
N/A
N/A
1.66
GqlQuery$Binding
60%
20/33
60%
12/20
1.66
GqlQuery$Builder
35%
23/64
66%
4/6
1.66
IncompleteKey
95%
23/24
66%
8/12
1.667
IncompleteKey$1
N/A
N/A
1.667
IncompleteKey$Builder
100%
3/3
N/A
1.667
Key
75%
30/40
50%
2/4
1.423
Key$1
N/A
N/A
1.423
Key$Builder
100%
23/23
100%
4/4
1.423
KeyFactory
95%
19/20
N/A
1
KeyValue
100%
7/7
N/A
1
KeyValue$1
100%
5/5
N/A
1
KeyValue$Builder
100%
4/4
N/A
1
ListValue
100%
10/10
N/A
1.278
ListValue$1
100%
12/12
100%
4/4
1.278
ListValue$Builder
100%
20/20
75%
6/8
1.278
LongValue
100%
7/7
N/A
1
LongValue$1
100%
5/5
N/A
1
LongValue$Builder
100%
4/4
N/A
1
NullValue
100%
7/7
N/A
1
NullValue$1
100%
4/4
N/A
1
NullValue$Builder
100%
6/6
50%
1/2
1
PathElement
92%
36/39
83%
25/30
1.867
ProjectionEntity
91%
11/12
66%
8/12
1.889
ProjectionEntity$1
N/A
N/A
1.889
ProjectionEntity$Builder
100%
2/2
N/A
1.889
Query
70%
12/17
N/A
1.36
Query$1
N/A
N/A
1.36
Query$ResultType
88%
23/26
66%
4/6
1.36
Query$ResultType$1
0%
0/5
0%
0/4
1.36
Query$ResultType$2
100%
2/2
N/A
1.36
Query$ResultType$3
100%
2/2
N/A
1.36
Query$ResultType$4
100%
2/2
N/A
1.36
QueryResults
N/A
N/A
1
QueryResultsImpl
86%
31/36
75%
12/16
2.6
RawValue
92%
12/13
75%
3/4
1.182
RawValue$1
100%
5/5
N/A
1.182
RawValue$Builder
100%
4/4
N/A
1.182
Serializable
69%
9/13
N/A
1.5
StringValue
100%
7/7
N/A
1
StringValue$1
100%
6/6
N/A
1
StringValue$Builder
100%
4/4
N/A
1
StructuredQuery
70%
49/70
62%
35/56
1.489
StructuredQuery$BaseBuilder
98%
70/71
83%
20/24
1.489
StructuredQuery$Builder
N/A
N/A
1.489
StructuredQuery$CompositeFilter
79%
27/34
64%
9/14
1.489
StructuredQuery$CompositeFilter$Operator
100%
4/4
N/A
1.489
StructuredQuery$EntityQueryBuilder
100%
3/3
N/A
1.489
StructuredQuery$Filter
100%
3/3
100%
2/2
1.489
StructuredQuery$KeyQueryBuilder
100%
9/9
N/A
1.489
StructuredQuery$OrderBy
68%
13/19
50%
4/8
1.489
StructuredQuery$OrderBy$Direction
100%
4/4
N/A
1.489
StructuredQuery$Projection
57%
15/26
50%
7/14
1.489
StructuredQuery$Projection$Aggregate
75%
3/4
N/A
1.489
StructuredQuery$ProjectionEntityQueryBuilder
100%
10/10
N/A
1.489
StructuredQuery$PropertyFilter
32%
23/70
50%
6/12
1.489
StructuredQuery$PropertyFilter$Operator
100%
9/9
N/A
1.489
Transaction
N/A
N/A
1
Transaction$Response
N/A
N/A
1
TransactionImpl
87%
36/41
50%
5/10
1.455
TransactionImpl$ResponseImpl
0%
0/1
N/A
1.455
TransactionImpl$ResponseImpl$1
0%
0/2
N/A
1.455
TransactionOption
42%
3/7
50%
1/2
1.071
TransactionOption$ForceWrites
0%
0/2
N/A
1.071
TransactionOption$IsolationLevel
0%
0/2
N/A
1.071
TransactionOption$IsolationLevel$Level
0%
0/4
N/A
1.071
Validator
100%
12/12
70%
7/10
1.25
Value
93%
28/30
77%
17/22
1.552
Value$BaseBuilder
100%
12/12
N/A
1.552
Value$BaseMarshaller
100%
13/13
100%
8/8
1.552
Value$BuilderFactory
N/A
N/A
1.552
ValueBuilder
N/A
N/A
1
ValueMarshaller
N/A
N/A
1
ValueType
100%
20/20
N/A
1
- - - - diff --git a/cobertura/frame-summary-com.google.gcloud.html b/cobertura/frame-summary-com.google.gcloud.html deleted file mode 100644 index 7e968f8046e1..000000000000 --- a/cobertura/frame-summary-com.google.gcloud.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - -Coverage Report - - - - - - - -
Coverage Report - com.google.gcloud
-
 
- - - - - - - - -
Package # Classes Line Coverage Branch Coverage Complexity
com.google.gcloud26
72%
268/369
54%
86/158
1.84
com.google.gcloud.datastore135
83%
1494/1799
69%
404/580
1.444
com.google.gcloud.spi17
22%
64/281
7%
4/54
2.19
com.google.gcloud.storage100
54%
588/1078
44%
148/336
1.478
- -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Classes in this Package Line Coverage Branch Coverage Complexity
AuthCredentials
77%
7/9
N/A
1.3
AuthCredentials$AppEngineAuthCredentials
75%
3/4
N/A
1.3
AuthCredentials$ApplicationDefaultAuthCredentials
28%
2/7
N/A
1.3
AuthCredentials$ComputeEngineAuthCredentials
20%
2/10
N/A
1.3
AuthCredentials$ServiceAccountAuthCredentials
47%
8/17
50%
4/8
1.3
BaseService
100%
1/1
N/A
1
ExceptionHandler
96%
53/55
100%
28/28
2.273
ExceptionHandler$1
N/A
N/A
2.273
ExceptionHandler$Builder
100%
15/15
100%
6/6
2.273
ExceptionHandler$Interceptor
N/A
N/A
2.273
ExceptionHandler$Interceptor$RetryResult
100%
3/3
N/A
2.273
ExceptionHandler$RetryInfo
58%
7/12
0%
0/4
2.273
RetryHelper
85%
51/60
77%
14/18
1.818
RetryHelper$Context
100%
2/2
N/A
1.818
RetryHelper$NonRetriableException
N/A
N/A
1.818
RetryHelper$RetriesExhaustedException
N/A
N/A
1.818
RetryHelper$RetryHelperException
N/A
N/A
1.818
RetryHelper$RetryInterruptedException
0%
0/2
N/A
1.818
RetryParams
94%
33/35
75%
21/28
1.455
RetryParams$1
N/A
N/A
1.455
RetryParams$Builder
100%
31/31
100%
2/2
1.455
Service
N/A
N/A
1
ServiceOptions
31%
24/76
16%
10/62
2.267
ServiceOptions$Builder
90%
20/22
N/A
2.267
ServiceOptions$DefaultHttpTransportFactory
75%
6/8
50%
1/2
2.267
ServiceOptions$HttpTransportFactory
N/A
N/A
2.267
- - - - diff --git a/cobertura/frame-summary-com.google.gcloud.spi.html b/cobertura/frame-summary-com.google.gcloud.spi.html deleted file mode 100644 index e2f833207f6c..000000000000 --- a/cobertura/frame-summary-com.google.gcloud.spi.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - -Coverage Report - - - - - - - -
Coverage Report - com.google.gcloud.spi
-
 
- - - - - -
Package # Classes Line Coverage Branch Coverage Complexity
com.google.gcloud.spi17
22%
64/281
7%
4/54
2.19
- -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Classes in this Package Line Coverage Branch Coverage Complexity
DatastoreRpc
N/A
N/A
1
DatastoreRpc$DatastoreRpcException
80%
4/5
N/A
1
DatastoreRpc$DatastoreRpcException$Reason
100%
12/12
N/A
1
DatastoreRpcFactory
N/A
N/A
0
DefaultDatastoreRpc
71%
30/42
50%
3/6
3.75
DefaultStorageRpc
0%
0/169
0%
0/44
3.621
DefaultStorageRpc$1
0%
0/5
N/A
3.621
DefaultStorageRpc$2
0%
0/5
N/A
3.621
DefaultStorageRpc$3
0%
0/5
N/A
3.621
ServiceRpcFactory
N/A
N/A
1
ServiceRpcProvider
50%
2/4
25%
1/4
2
StorageRpc
N/A
N/A
1
StorageRpc$BatchRequest
0%
0/5
N/A
1
StorageRpc$BatchResponse
0%
0/5
N/A
1
StorageRpc$Option
76%
16/21
N/A
1
StorageRpc$Tuple
0%
0/3
N/A
1
StorageRpcFactory
N/A
N/A
0
- - - - diff --git a/cobertura/frame-summary-com.google.gcloud.storage.html b/cobertura/frame-summary-com.google.gcloud.storage.html deleted file mode 100644 index 3de1c5a61211..000000000000 --- a/cobertura/frame-summary-com.google.gcloud.storage.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - -Coverage Report - - - - - - - -
Coverage Report - com.google.gcloud.storage
-
 
- - - - - -
Package # Classes Line Coverage Branch Coverage Complexity
com.google.gcloud.storage100
54%
588/1078
44%
148/336
1.478
- -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Classes in this Package Line Coverage Branch Coverage Complexity
Acl
90%
19/21
60%
6/10
1.903
Acl$Domain
100%
3/3
N/A
1.903
Acl$Entity
92%
25/27
81%
18/22
1.903
Acl$Entity$Type
100%
2/2
N/A
1.903
Acl$Group
100%
3/3
N/A
1.903
Acl$Project
100%
6/6
N/A
1.903
Acl$Project$ProjectRole
100%
2/2
N/A
1.903
Acl$RawEntity
100%
3/3
N/A
1.903
Acl$Role
100%
2/2
N/A
1.903
Acl$User
100%
9/9
80%
8/10
1.903
BatchRequest
86%
13/15
50%
4/8
1.333
BatchRequest$1
N/A
N/A
1.333
BatchRequest$Builder
100%
12/12
N/A
1.333
BatchResponse
83%
10/12
50%
4/8
1.562
BatchResponse$Result
35%
5/14
30%
3/10
1.562
Blob
97%
98/101
63%
24/38
1.367
Blob$1
0%
0/2
N/A
1.367
Blob$2
0%
0/2
N/A
1.367
Blob$3
100%
2/2
N/A
1.367
Blob$4
100%
2/2
N/A
1.367
Blob$Builder
100%
48/48
50%
2/4
1.367
BlobReadChannel
N/A
N/A
1
BlobReadChannelImpl
0%
0/53
0%
0/16
2.1
BlobReadChannelImpl$1
0%
0/2
N/A
2.1
BlobWriteChannel
N/A
N/A
0
BlobWriterChannelImpl
0%
0/48
0%
0/18
1.909
BlobWriterChannelImpl$1
0%
0/2
N/A
1.909
BlobWriterChannelImpl$2
0%
0/2
N/A
1.909
Bucket
96%
95/98
70%
38/54
1.587
Bucket$1
0%
0/2
N/A
1.587
Bucket$2
0%
0/2
N/A
1.587
Bucket$3
100%
2/2
N/A
1.587
Bucket$4
100%
2/2
N/A
1.587
Bucket$5
100%
2/2
N/A
1.587
Bucket$6
100%
2/2
N/A
1.587
Bucket$7
100%
2/2
N/A
1.587
Bucket$8
100%
2/2
N/A
1.587
Bucket$AgeDeleteRule
83%
5/6
N/A
1.587
Bucket$Builder
100%
35/35
50%
3/6
1.587
Bucket$CreatedBeforeDeleteRule
0%
0/6
N/A
1.587
Bucket$DeleteRule
55%
16/29
38%
7/18
1.587
Bucket$DeleteRule$Type
100%
2/2
N/A
1.587
Bucket$IsLiveDeleteRule
0%
0/5
N/A
1.587
Bucket$Location
66%
16/24
25%
2/8
1.587
Bucket$Location$Option
100%
5/5
N/A
1.587
Bucket$NumNewerVersionsDeleteRule
0%
0/6
N/A
1.587
Bucket$RawDeleteRule
0%
0/11
N/A
1.587
Bucket$StorageClass
87%
14/16
50%
1/2
1.587
Bucket$StorageClass$Option
100%
5/5
N/A
1.587
Cors
80%
28/35
50%
9/18
1.655
Cors$1
100%
2/2
N/A
1.655
Cors$2
100%
2/2
N/A
1.655
Cors$3
0%
0/2
N/A
1.655
Cors$4
0%
0/2
N/A
1.655
Cors$Builder
100%
10/10
66%
4/6
1.655
Cors$Method
100%
2/2
N/A
1.655
Cors$Origin
76%
13/17
75%
3/4
1.655
ListResult
70%
7/10
50%
6/12
2
ListResult$NextPageFetcher
N/A
N/A
2
Option
75%
9/12
50%
3/6
1.5
StorageService
N/A
N/A
1.012
StorageService$1
N/A
N/A
1.012
StorageService$BlobListOption
40%
2/5
N/A
1.012
StorageService$BlobSourceOption
71%
5/7
N/A
1.012
StorageService$BlobTargetOption
55%
5/9
N/A
1.012
StorageService$BucketListOption
50%
2/4
N/A
1.012
StorageService$BucketSourceOption
80%
4/5
N/A
1.012
StorageService$BucketTargetOption
57%
4/7
N/A
1.012
StorageService$ComposeRequest
0%
0/12
N/A
1.012
StorageService$ComposeRequest$Builder
0%
0/17
0%
0/4
1.012
StorageService$ComposeRequest$SourceBlob
0%
0/4
N/A
1.012
StorageService$CopyRequest
0%
0/16
N/A
1.012
StorageService$CopyRequest$Builder
0%
0/16
N/A
1.012
StorageService$PredefinedAcl
100%
10/10
N/A
1.012
StorageServiceException
0%
0/2
N/A
1
StorageServiceFactory
0%
0/2
N/A
1
StorageServiceFactory$1
0%
0/1
N/A
1
StorageServiceImpl
0%
0/128
0%
0/32
1.58
StorageServiceImpl$1
0%
0/5
0%
0/4
1.58
StorageServiceImpl$10
0%
0/2
N/A
1.58
StorageServiceImpl$11
0%
0/2
N/A
1.58
StorageServiceImpl$12
0%
0/2
N/A
1.58
StorageServiceImpl$13
0%
0/2
N/A
1.58
StorageServiceImpl$14
0%
0/2
N/A
1.58
StorageServiceImpl$15
0%
0/2
N/A
1.58
StorageServiceImpl$16
0%
0/2
N/A
1.58
StorageServiceImpl$2
0%
0/2
N/A
1.58
StorageServiceImpl$3
0%
0/2
N/A
1.58
StorageServiceImpl$4
0%
0/6
0%
0/2
1.58
StorageServiceImpl$5
0%
0/6
0%
0/2
1.58
StorageServiceImpl$6
0%
0/2
N/A
1.58
StorageServiceImpl$7
0%
0/2
N/A
1.58
StorageServiceImpl$8
0%
0/2
N/A
1.58
StorageServiceImpl$9
0%
0/2
N/A
1.58
StorageServiceImpl$BasePageFetcher
0%
0/10
0%
0/4
1.58
StorageServiceImpl$BlobPageFetcher
0%
0/1
N/A
1.58
StorageServiceImpl$BucketPageFetcher
0%
0/1
N/A
1.58
StorageServiceOptions
47%
10/21
30%
3/10
1.462
StorageServiceOptions$1
N/A
N/A
1.462
StorageServiceOptions$Builder
100%
4/4
N/A
1.462
- - - - diff --git a/cobertura/frame-summary.html b/cobertura/frame-summary.html deleted file mode 100644 index 11809b041068..000000000000 --- a/cobertura/frame-summary.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - -Coverage Report - - - - - - - -
Coverage Report - All Packages
-
 
- - - - - - - - - -
Package # Classes Line Coverage Branch Coverage Complexity
All Packages278
68%
2414/3527
56%
642/1128
1.532
com.google.gcloud26
72%
268/369
54%
86/158
1.84
com.google.gcloud.datastore135
83%
1494/1799
69%
404/580
1.444
com.google.gcloud.spi17
22%
64/281
7%
4/54
2.19
com.google.gcloud.storage100
54%
588/1078
44%
148/336
1.478
- - - - diff --git a/cobertura/help.html b/cobertura/help.html deleted file mode 100644 index b1de76394286..000000000000 --- a/cobertura/help.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -Coverage Report - Help - - - - -
- -
Line Coverage
-
The percent of lines executed by this test run.
- -
Branch Coverage
-
The percent of branches executed by this test run.
- -
Complexity
-
Average McCabe's cyclomatic code complexity for all methods. This is basically a count of the number of different code paths in a method (incremented by 1 for each if statement, while loop, etc.)
- -
N/A
-
Line coverage and branch coverage will appear as "Not Applicable" when Cobertura can not find line number information in the .class file. This happens for stub and skeleton classes, interfaces, or when the class was not compiled with "debug=true."
- -
- - - - diff --git a/cobertura/images/blank.png b/cobertura/images/blank.png deleted file mode 100644 index cee9cd37a10ebe8d7fe6a6ed0d8d74a2889f6e9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^!ayv*$P6UUaa~gcQtTz3zOL*Scz7A*wL3%Pb^(Pr z3p^r=85p=efH0%e8j~47LAC&&5LY1m|NsA`H|O64vY1MO{DS{8Jl$^K1?2I2x;TbZ j+)DoO|34!$s|3ToYTbu_uiJV9r5HS2{an^LB{Ts5Dp4nx diff --git a/cobertura/images/downsimple.png b/cobertura/images/downsimple.png deleted file mode 100644 index 4accf927bed9f998040ada65a35695bb758c78f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@!3-ps+W+JLDVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5XI0Jk_T>t<7-_p_onv&0MrCXRCq913h|0^A-< nECO>F1soiX9N|!6VB%rmQep^;zw7l7Xas|&tDnm{r-UW|t_U_c diff --git a/cobertura/images/upsimple.png b/cobertura/images/upsimple.png deleted file mode 100644 index c82b76ffe2c9d41a2f38a1c1115013cc0852f522..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@!3-ps+W+JLDVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5XI0Jk_Tw7XN{{R0EFVdQ&MBb@01yl}4*&oF diff --git a/cobertura/index.html b/cobertura/index.html deleted file mode 100644 index 17ebf4f7b6d1..000000000000 --- a/cobertura/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -Coverage Report - - - - - - - - - - - <body> - <p>This document is designed to be viewed using the frames feature. If you see this message, you are using a frame-incapable web client.</p> - <p><a href="frame-summary.html">Click here to view a non-frame version.</a></p> - </body> - - - - diff --git a/cobertura/js/customsorttypes.js b/cobertura/js/customsorttypes.js deleted file mode 100644 index 1fe955903444..000000000000 --- a/cobertura/js/customsorttypes.js +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Cobertura - http://cobertura.sourceforge.net/ - * - * Copyright (C) 2005 Mark Doliner - * Copyright (C) 2005 Olivier Parent - * - * Cobertura is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published - * by the Free Software Foundation; either version 2 of the License, - * or (at your option) any later version. - * - * Cobertura is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Cobertura; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - */ - - - -function percentageSortType( s ) -{ - var ret; - var i = s.indexOf( "%" ); - - if (i != -1) { - s = s.substr( 0, i ); - } - ret = parseFloat(s); - if (isNaN(ret)) { - ret = -1; - } - - return ret; -} - -SortableTable.prototype.addSortType( "Percentage", percentageSortType ); - - - -// This is needed for correctly sorting numbers in different -// locales. The stock number converter only expects to sort -// numbers which use a period as a separator instead of a -// comma (like French). -function formattedNumberSortType( s ) -{ - var ret; - var i = s.indexOf(';'); - - if (i != -1) { - s = s.substring(0, i); - } - ret = parseFloat(s); - if (isNaN(ret)) { - return -1; - } - - return ret; -} - -SortableTable.prototype.addSortType( "FormattedNumber", formattedNumberSortType ); diff --git a/cobertura/js/popup.js b/cobertura/js/popup.js deleted file mode 100644 index f1160ff584d4..000000000000 --- a/cobertura/js/popup.js +++ /dev/null @@ -1,8 +0,0 @@ -var newwindow; -function popupwindow(url) -{ - newwindow=window.open(url,'name','height=500,width=500,resizable=yes,scrollbars=yes'); - if (window.focus) { - newwindow.focus() - } -} diff --git a/cobertura/js/sortabletable.js b/cobertura/js/sortabletable.js deleted file mode 100644 index 2f7c72e5b8e2..000000000000 --- a/cobertura/js/sortabletable.js +++ /dev/null @@ -1,455 +0,0 @@ - -/*----------------------------------------------------------------------------\ -| Sortable Table 1.12 | -|-----------------------------------------------------------------------------| -| Created by Erik Arvidsson | -| (http://webfx.eae.net/contact.html#erik) | -| For WebFX (http://webfx.eae.net/) | -|-----------------------------------------------------------------------------| -| A DOM 1 based script that allows an ordinary HTML table to be sortable. | -|-----------------------------------------------------------------------------| -| Copyright (c) 1998 - 2004 Erik Arvidsson | -|-----------------------------------------------------------------------------| -| This software is provided "as is", without warranty of any kind, express or | -| implied, including but not limited to the warranties of merchantability, | -| fitness for a particular purpose and noninfringement. In no event shall the | -| authors or copyright holders be liable for any claim, damages or other | -| liability, whether in an action of contract, tort or otherwise, arising | -| from, out of or in connection with the software or the use or other | -| dealings in the software. | -| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | -| This software is available under the three different licenses mentioned | -| below. To use this software you must chose, and qualify, for one of those. | -| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | -| The WebFX Non-Commercial License http://webfx.eae.net/license.html | -| Permits anyone the right to use the software in a non-commercial context | -| free of charge. | -| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | -| The WebFX Commercial license http://webfx.eae.net/commercial.html | -| Permits the license holder the right to use the software in a commercial | -| context. Such license must be specifically obtained, however it's valid for | -| any number of implementations of the licensed software. | -| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | -| GPL - The GNU General Public License http://www.gnu.org/licenses/gpl.txt | -| Permits anyone the right to use and modify the software without limitations | -| as long as proper credits are given and the original and modified source | -| code are included. Requires that the final product, software derivate from | -| the original source or any software utilizing a GPL component, such as | -| this, is also licensed under the GPL license. | -|-----------------------------------------------------------------------------| -| 2003-01-10 | First version | -| 2003-01-19 | Minor changes to the date parsing | -| 2003-01-28 | JScript 5.0 fixes (no support for 'in' operator) | -| 2003-02-01 | Sloppy typo like error fixed in getInnerText | -| 2003-07-04 | Added workaround for IE cellIndex bug. | -| 2003-11-09 | The bDescending argument to sort was not correctly working | -| | Using onclick DOM0 event if no support for addEventListener | -| | or attachEvent | -| 2004-01-13 | Adding addSortType and removeSortType which makes it a lot | -| | easier to add new, custom sort types. | -| 2004-01-27 | Switch to use descending = false as the default sort order. | -| | Change defaultDescending to suit your needs. | -| 2004-03-14 | Improved sort type None look and feel a bit | -| 2004-08-26 | Made the handling of tBody and tHead more flexible. Now you | -| | can use another tHead or no tHead, and you can chose some | -| | other tBody. | -|-----------------------------------------------------------------------------| -| Created 2003-01-10 | All changes are in the log above. | Updated 2004-08-26 | -\----------------------------------------------------------------------------*/ - - -function SortableTable(oTable, oSortTypes) { - - this.sortTypes = oSortTypes || []; - - this.sortColumn = null; - this.descending = null; - - var oThis = this; - this._headerOnclick = function (e) { - oThis.headerOnclick(e); - }; - - if (oTable) { - this.setTable( oTable ); - this.document = oTable.ownerDocument || oTable.document; - } - else { - this.document = document; - } - - - // only IE needs this - var win = this.document.defaultView || this.document.parentWindow; - this._onunload = function () { - oThis.destroy(); - }; - if (win && typeof win.attachEvent != "undefined") { - win.attachEvent("onunload", this._onunload); - } -} - -SortableTable.gecko = navigator.product == "Gecko"; -SortableTable.msie = /msie/i.test(navigator.userAgent); -// Mozilla is faster when doing the DOM manipulations on -// an orphaned element. MSIE is not -SortableTable.removeBeforeSort = SortableTable.gecko; - -SortableTable.prototype.onsort = function () {}; - -// default sort order. true -> descending, false -> ascending -SortableTable.prototype.defaultDescending = false; - -// shared between all instances. This is intentional to allow external files -// to modify the prototype -SortableTable.prototype._sortTypeInfo = {}; - -SortableTable.prototype.setTable = function (oTable) { - if ( this.tHead ) - this.uninitHeader(); - this.element = oTable; - this.setTHead( oTable.tHead ); - this.setTBody( oTable.tBodies[0] ); -}; - -SortableTable.prototype.setTHead = function (oTHead) { - if (this.tHead && this.tHead != oTHead ) - this.uninitHeader(); - this.tHead = oTHead; - this.initHeader( this.sortTypes ); -}; - -SortableTable.prototype.setTBody = function (oTBody) { - this.tBody = oTBody; -}; - -SortableTable.prototype.setSortTypes = function ( oSortTypes ) { - if ( this.tHead ) - this.uninitHeader(); - this.sortTypes = oSortTypes || []; - if ( this.tHead ) - this.initHeader( this.sortTypes ); -}; - -// adds arrow containers and events -// also binds sort type to the header cells so that reordering columns does -// not break the sort types -SortableTable.prototype.initHeader = function (oSortTypes) { - if (!this.tHead) return; - var cells = this.tHead.rows[0].cells; - var doc = this.tHead.ownerDocument || this.tHead.document; - this.sortTypes = oSortTypes || []; - var l = cells.length; - var img, c; - for (var i = 0; i < l; i++) { - c = cells[i]; - if (this.sortTypes[i] != null && this.sortTypes[i] != "None") { - img = doc.createElement("IMG"); - img.src = "images/blank.png"; - c.appendChild(img); - if (this.sortTypes[i] != null) - c._sortType = this.sortTypes[i]; - if (typeof c.addEventListener != "undefined") - c.addEventListener("click", this._headerOnclick, false); - else if (typeof c.attachEvent != "undefined") - c.attachEvent("onclick", this._headerOnclick); - else - c.onclick = this._headerOnclick; - } - else - { - c.setAttribute( "_sortType", oSortTypes[i] ); - c._sortType = "None"; - } - } - this.updateHeaderArrows(); -}; - -// remove arrows and events -SortableTable.prototype.uninitHeader = function () { - if (!this.tHead) return; - var cells = this.tHead.rows[0].cells; - var l = cells.length; - var c; - for (var i = 0; i < l; i++) { - c = cells[i]; - if (c._sortType != null && c._sortType != "None") { - c.removeChild(c.lastChild); - if (typeof c.removeEventListener != "undefined") - c.removeEventListener("click", this._headerOnclick, false); - else if (typeof c.detachEvent != "undefined") - c.detachEvent("onclick", this._headerOnclick); - c._sortType = null; - c.removeAttribute( "_sortType" ); - } - } -}; - -SortableTable.prototype.updateHeaderArrows = function () { - if (!this.tHead) return; - var cells = this.tHead.rows[0].cells; - var l = cells.length; - var img; - for (var i = 0; i < l; i++) { - if (cells[i]._sortType != null && cells[i]._sortType != "None") { - img = cells[i].lastChild; - if (i == this.sortColumn) - img.className = "sort-arrow " + (this.descending ? "descending" : "ascending"); - else - img.className = "sort-arrow"; - } - } -}; - -SortableTable.prototype.headerOnclick = function (e) { - // find TD element - var el = e.target || e.srcElement; - while (el.tagName != "TD") - el = el.parentNode; - - this.sort(SortableTable.msie ? SortableTable.getCellIndex(el) : el.cellIndex); -}; - -// IE returns wrong cellIndex when columns are hidden -SortableTable.getCellIndex = function (oTd) { - var cells = oTd.parentNode.childNodes - var l = cells.length; - var i; - for (i = 0; cells[i] != oTd && i < l; i++) - ; - return i; -}; - -SortableTable.prototype.getSortType = function (nColumn) { - return this.sortTypes[nColumn] || "String"; -}; - -// only nColumn is required -// if bDescending is left out the old value is taken into account -// if sSortType is left out the sort type is found from the sortTypes array - -SortableTable.prototype.sort = function (nColumn, bDescending, sSortType) { - if (!this.tBody) return; - if (sSortType == null) - sSortType = this.getSortType(nColumn); - - // exit if None - if (sSortType == "None") - return; - - if (bDescending == null) { - if (this.sortColumn != nColumn) - this.descending = this.defaultDescending; - else - this.descending = !this.descending; - } - else - this.descending = bDescending; - - this.sortColumn = nColumn; - - if (typeof this.onbeforesort == "function") - this.onbeforesort(); - - var f = this.getSortFunction(sSortType, nColumn); - var a = this.getCache(sSortType, nColumn); - var tBody = this.tBody; - - a.sort(f); - - if (this.descending) - a.reverse(); - - if (SortableTable.removeBeforeSort) { - // remove from doc - var nextSibling = tBody.nextSibling; - var p = tBody.parentNode; - p.removeChild(tBody); - } - - // insert in the new order - var l = a.length; - for (var i = 0; i < l; i++) - tBody.appendChild(a[i].element); - - if (SortableTable.removeBeforeSort) { - // insert into doc - p.insertBefore(tBody, nextSibling); - } - - this.updateHeaderArrows(); - - this.destroyCache(a); - - if (typeof this.onsort == "function") - this.onsort(); -}; - -SortableTable.prototype.asyncSort = function (nColumn, bDescending, sSortType) { - var oThis = this; - this._asyncsort = function () { - oThis.sort(nColumn, bDescending, sSortType); - }; - window.setTimeout(this._asyncsort, 1); -}; - -SortableTable.prototype.getCache = function (sType, nColumn) { - if (!this.tBody) return []; - var rows = this.tBody.rows; - var l = rows.length; - var a = new Array(l); - var r; - for (var i = 0; i < l; i++) { - r = rows[i]; - a[i] = { - value: this.getRowValue(r, sType, nColumn), - element: r - }; - }; - return a; -}; - -SortableTable.prototype.destroyCache = function (oArray) { - var l = oArray.length; - for (var i = 0; i < l; i++) { - oArray[i].value = null; - oArray[i].element = null; - oArray[i] = null; - } -}; - -SortableTable.prototype.getRowValue = function (oRow, sType, nColumn) { - // if we have defined a custom getRowValue use that - if (this._sortTypeInfo[sType] && this._sortTypeInfo[sType].getRowValue) - return this._sortTypeInfo[sType].getRowValue(oRow, nColumn); - - var s; - var c = oRow.cells[nColumn]; - if (typeof c.innerText != "undefined") - s = c.innerText; - else - s = SortableTable.getInnerText(c); - return this.getValueFromString(s, sType); -}; - -SortableTable.getInnerText = function (oNode) { - var s = ""; - var cs = oNode.childNodes; - var l = cs.length; - for (var i = 0; i < l; i++) { - switch (cs[i].nodeType) { - case 1: //ELEMENT_NODE - s += SortableTable.getInnerText(cs[i]); - break; - case 3: //TEXT_NODE - s += cs[i].nodeValue; - break; - } - } - return s; -}; - -SortableTable.prototype.getValueFromString = function (sText, sType) { - if (this._sortTypeInfo[sType]) - return this._sortTypeInfo[sType].getValueFromString( sText ); - return sText; - /* - switch (sType) { - case "Number": - return Number(sText); - case "CaseInsensitiveString": - return sText.toUpperCase(); - case "Date": - var parts = sText.split("-"); - var d = new Date(0); - d.setFullYear(parts[0]); - d.setDate(parts[2]); - d.setMonth(parts[1] - 1); - return d.valueOf(); - } - return sText; - */ - }; - -SortableTable.prototype.getSortFunction = function (sType, nColumn) { - if (this._sortTypeInfo[sType]) - return this._sortTypeInfo[sType].compare; - return SortableTable.basicCompare; -}; - -SortableTable.prototype.destroy = function () { - this.uninitHeader(); - var win = this.document.parentWindow; - if (win && typeof win.detachEvent != "undefined") { // only IE needs this - win.detachEvent("onunload", this._onunload); - } - this._onunload = null; - this.element = null; - this.tHead = null; - this.tBody = null; - this.document = null; - this._headerOnclick = null; - this.sortTypes = null; - this._asyncsort = null; - this.onsort = null; -}; - -// Adds a sort type to all instance of SortableTable -// sType : String - the identifier of the sort type -// fGetValueFromString : function ( s : string ) : T - A function that takes a -// string and casts it to a desired format. If left out the string is just -// returned -// fCompareFunction : function ( n1 : T, n2 : T ) : Number - A normal JS sort -// compare function. Takes two values and compares them. If left out less than, -// <, compare is used -// fGetRowValue : function( oRow : HTMLTRElement, nColumn : int ) : T - A function -// that takes the row and the column index and returns the value used to compare. -// If left out then the innerText is first taken for the cell and then the -// fGetValueFromString is used to convert that string the desired value and type - -SortableTable.prototype.addSortType = function (sType, fGetValueFromString, fCompareFunction, fGetRowValue) { - this._sortTypeInfo[sType] = { - type: sType, - getValueFromString: fGetValueFromString || SortableTable.idFunction, - compare: fCompareFunction || SortableTable.basicCompare, - getRowValue: fGetRowValue - }; -}; - -// this removes the sort type from all instances of SortableTable -SortableTable.prototype.removeSortType = function (sType) { - delete this._sortTypeInfo[sType]; -}; - -SortableTable.basicCompare = function compare(n1, n2) { - if (n1.value < n2.value) - return -1; - if (n2.value < n1.value) - return 1; - return 0; -}; - -SortableTable.idFunction = function (x) { - return x; -}; - -SortableTable.toUpperCase = function (s) { - return s.toUpperCase(); -}; - -SortableTable.toDate = function (s) { - var parts = s.split("-"); - var d = new Date(0); - d.setFullYear(parts[0]); - d.setDate(parts[2]); - d.setMonth(parts[1] - 1); - return d.valueOf(); -}; - - -// add sort types -SortableTable.prototype.addSortType("Number", Number); -SortableTable.prototype.addSortType("CaseInsensitiveString", SortableTable.toUpperCase); -SortableTable.prototype.addSortType("Date", SortableTable.toDate); -SortableTable.prototype.addSortType("String"); -// None is a special case diff --git a/cobertura/js/stringbuilder.js b/cobertura/js/stringbuilder.js deleted file mode 100644 index 180812607756..000000000000 --- a/cobertura/js/stringbuilder.js +++ /dev/null @@ -1,79 +0,0 @@ -/*----------------------------------------------------------------------------\ -| String Builder 1.02 | -|-----------------------------------------------------------------------------| -| Created by Erik Arvidsson | -| (http://webfx.eae.net/contact.html#erik) | -| For WebFX (http://webfx.eae.net/) | -|-----------------------------------------------------------------------------| -| A class that allows more efficient building of strings than concatenation. | -|-----------------------------------------------------------------------------| -| Copyright (c) 1999 - 2002 Erik Arvidsson | -|-----------------------------------------------------------------------------| -| This software is provided "as is", without warranty of any kind, express or | -| implied, including but not limited to the warranties of merchantability, | -| fitness for a particular purpose and noninfringement. In no event shall the | -| authors or copyright holders be liable for any claim, damages or other | -| liability, whether in an action of contract, tort or otherwise, arising | -| from, out of or in connection with the software or the use or other | -| dealings in the software. | -| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | -| This software is available under the three different licenses mentioned | -| below. To use this software you must chose, and qualify, for one of those. | -| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | -| The WebFX Non-Commercial License http://webfx.eae.net/license.html | -| Permits anyone the right to use the software in a non-commercial context | -| free of charge. | -| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | -| The WebFX Commercial license http://webfx.eae.net/commercial.html | -| Permits the license holder the right to use the software in a commercial | -| context. Such license must be specifically obtained, however it's valid for | -| any number of implementations of the licensed software. | -| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | -| GPL - The GNU General Public License http://www.gnu.org/licenses/gpl.txt | -| Permits anyone the right to use and modify the software without limitations | -| as long as proper credits are given and the original and modified source | -| code are included. Requires that the final product, software derivate from | -| the original source or any software utilizing a GPL component, such as | -| this, is also licensed under the GPL license. | -|-----------------------------------------------------------------------------| -| 2000-10-02 | First version | -| 2000-10-05 | Added a cache of the string so that it does not need to be | -| | regenerated every time in toString | -| 2002-10-03 | Added minor improvement in the toString method | -|-----------------------------------------------------------------------------| -| Created 2000-10-02 | All changes are in the log above. | Updated 2002-10-03 | -\----------------------------------------------------------------------------*/ function StringBuilder(sString) { - - // public - this.length = 0; - - this.append = function (sString) { - // append argument - this.length += (this._parts[this._current++] = String(sString)).length; - - // reset cache - this._string = null; - return this; - }; - - this.toString = function () { - if (this._string != null) - return this._string; - - var s = this._parts.join(""); - this._parts = [s]; - this._current = 1; - this.length = s.length; - - return this._string = s; - }; - - // private - this._current = 0; - this._parts = []; - this._string = null; // used to cache the string - - // init - if (sString != null) - this.append(sString); -} diff --git a/css/apache-maven-fluido-1.3.1.min.css b/css/apache-maven-fluido-1.3.1.min.css deleted file mode 100644 index ed43d1211cff..000000000000 --- a/css/apache-maven-fluido-1.3.1.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Bootstrap v2.2.2 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover{color:#808080}.text-warning{color:#c09853}a.text-warning:hover{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover{color:#2d6987}.text-success{color:#468847}a.text-success:hover{color:#356635}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success td{background-color:#dff0d8}.table tbody tr.error td{background-color:#f2dede}.table tbody tr.warning td{background-color:#fcf8e3}.table tbody tr.info td{background-color:#d9edf7}.table-hover tbody tr.success:hover td{background-color:#d0e9c6}.table-hover tbody tr.error:hover td{background-color:#ebcccc}.table-hover tbody tr.warning:hover td{background-color:#faf2cc}.table-hover tbody tr.info:hover td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu li>a:hover,.dropdown-menu li>a:focus,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu .disabled>a,.dropdown-menu .disabled>a:hover{color:#999}.dropdown-menu .disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #bbb;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn{border-color:#c5c5c5;border-color:rgba(0,0,0,0.15) rgba(0,0,0,0.15) rgba(0,0,0,0.25)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #0044cc #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-mini .caret,.btn-small .caret,.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eeeeee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #dddddd #eee #eeeeee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eeeeee #eee #dddddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret{border-top-color:#555;border-bottom-color:#555}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{margin-top:-3px}.tooltip.right{margin-left:3px}.tooltip.bottom{margin-top:3px}.tooltip.left{margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media .pull-left{margin-right:10px}.media .pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed}.clear{clear:both;visibility:hidden}.clear hr{display:none}.section p,.section p,.section dt,.section dt{margin-right:7px;margin-left:7px}#ohloh{margin-bottom:10px}#poweredBy{text-align:center}a.externalLink{padding-right:18px}a.newWindow{background:url('../images/window-new.png') right center no-repeat;padding-right:18px}a.externalLink[href^=http]{background:url('../images/internet-web-browser.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".asc"]{background:url('../images/accessories-text-editor.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".jpg"],a.externalLink[href$=".jpeg"],a.externalLink[href$=".gif"],a.externalLink[href$=".png"]{background:url('../images/image-x-generic.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".tar.gz"],a.externalLink[href$=".zip"]{background:url('../images/package-x-generic.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".md5"],a.externalLink[href$=".sha1"]{background:url('../images/document-properties.png') right center no-repeat;padding-right:18px}a.externalLink[href^=https]{background:url('../images/application-certificate.png') right center no-repeat;padding-right:18px}a.externalLink[href^=file]{background:url('../images/drive-harddisk.png') right center no-repeat;padding-right:18px}a.externalLink[href^=ftp]{background:url('../images/network-server.png') right center no-repeat;padding-right:18px}a.externalLink[href^=mailto]{background:url('../images/contact-new.png') right center no-repeat;padding-right:18px}li.none{list-style:none}.search-query{background-image:url(http://www.google.com/cse/intl/en/images/google_custom_search_watermark.gif);background-attachment:initial;background-origin:initial;background-clip:initial;background-color:#fff;background-position:0 50%;background-repeat:no-repeat no-repeat;width:95%}body.topBarEnabled{padding-top:60px}body.topBarDisabled{padding-top:20px}.builtBy{display:block}img.builtBy{margin:10px auto}#search-form{margin-left:9px;margin-right:9px}.hero-unit h2{font-size:60px}tt{padding:0 3px 2px;font-family:Monaco,Andale Mono,Courier New,monospace;font-size:.8em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-color:#fee9cc;color:rgba(0,0,0,0.75);padding:1px 3px}li{color:#404040}table.zebra-striped{background-color:#FFF}.footer{background-color:#EEE}.sidebar-nav{padding-left:0;padding-right:0}.sidebar-nav .icon-chevron-right,.sidebar-nav .icon-chevron-down{margin-top:2px;margin-right:-6px;float:right;opacity:.25}li.pull-right{margin-left:3px;margin-right:3px}.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0;padding-left:15px}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} \ No newline at end of file diff --git a/css/github.min.css b/css/github.min.css new file mode 100644 index 000000000000..2bd26b60f15d --- /dev/null +++ b/css/github.min.css @@ -0,0 +1 @@ +.hljs{display:block;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-template_comment,.diff .hljs-header,.hljs-javadoc{color:#998;font-style:italic}.hljs-keyword,.css .rule .hljs-keyword,.hljs-winutils,.javascript .hljs-title,.nginx .hljs-title,.hljs-subst,.hljs-request,.hljs-status{color:#333;font-weight:bold}.hljs-number,.hljs-hexcolor,.ruby .hljs-constant{color:#099}.hljs-string,.hljs-tag .hljs-value,.hljs-phpdoc,.tex .hljs-formula{color:#d14}.hljs-title,.hljs-id,.coffeescript .hljs-params,.scss .hljs-preprocessor{color:#900;font-weight:bold}.javascript .hljs-title,.lisp .hljs-title,.clojure .hljs-title,.hljs-subst{font-weight:normal}.hljs-class .hljs-title,.haskell .hljs-type,.vhdl .hljs-literal,.tex .hljs-command{color:#458;font-weight:bold}.hljs-tag,.hljs-tag .hljs-title,.hljs-rules .hljs-property,.django .hljs-tag .hljs-keyword{color:#000080;font-weight:normal}.hljs-attribute,.hljs-variable,.lisp .hljs-body{color:#008080}.hljs-regexp{color:#009926}.hljs-symbol,.ruby .hljs-symbol .hljs-string,.lisp .hljs-keyword,.tex .hljs-special,.hljs-prompt{color:#990073}.hljs-built_in,.lisp .hljs-title,.clojure .hljs-built_in{color:#0086b3}.hljs-preprocessor,.hljs-pragma,.hljs-pi,.hljs-doctype,.hljs-shebang,.hljs-cdata{color:#999;font-weight:bold}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa} \ No newline at end of file diff --git a/css/normalize.css b/css/normalize.css new file mode 100644 index 000000000000..42e24d6880b5 --- /dev/null +++ b/css/normalize.css @@ -0,0 +1,527 @@ +/*! normalize.css v1.1.3 | MIT License | git.io/normalize */ + +/* ========================================================================== + HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +/** + * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. + */ + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. + * Known issue: no IE 6 support. + */ + +[hidden] { + display: none; +} + +/* ========================================================================== + Base + ========================================================================== */ + +/** + * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using + * `em` units. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-size: 100%; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Address `font-family` inconsistency between `textarea` and other form + * elements. + */ + +html, +button, +input, +select, +textarea { + font-family: sans-serif; +} + +/** + * Address margins handled incorrectly in IE 6/7. + */ + +body { + margin: 0; +} + +/* ========================================================================== + Links + ========================================================================== */ + +/** + * Address `outline` inconsistency between Chrome and other browsers. + */ + +a:focus { + outline: thin dotted; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* ========================================================================== + Typography + ========================================================================== */ + +/** + * Address font sizes and margins set differently in IE 6/7. + * Address font sizes within `section` and `article` in Firefox 4+, Safari 5, + * and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +h2 { + font-size: 1.5em; + margin: 0.83em 0; +} + +h3 { + font-size: 1.17em; + margin: 1em 0; +} + +h4 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +/** + * Address styling not present in IE 7/8/9, Safari 5, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +blockquote { + margin: 1em 40px; +} + +/** + * Address styling not present in Safari 5 and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address differences between Firefox and other browsers. + * Known issue: no IE 6/7 normalization. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Address styling not present in IE 6/7/8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address margins set differently in IE 6/7. + */ + +p, +pre { + margin: 1em 0; +} + +/** + * Correct font family set oddly in IE 6, Safari 4/5, and Chrome. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + _font-family: 'courier new', monospace; + font-size: 1em; +} + +/** + * Improve readability of pre-formatted text in all browsers. + */ + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +/** + * Address CSS quotes not supported in IE 6/7. + */ + +q { + quotes: none; +} + +/** + * Address `quotes` property not supported in Safari 4. + */ + +q:before, +q:after { + content: ''; + content: none; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* ========================================================================== + Lists + ========================================================================== */ + +/** + * Address margins set differently in IE 6/7. + */ + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +/** + * Address paddings set differently in IE 6/7. + */ + +menu, +ol, +ul { + padding: 0 0 0 40px; +} + +/** + * Correct list images handled incorrectly in IE 7. + */ + +nav ul, +nav ol { + list-style: none; + list-style-image: none; +} + +/* ========================================================================== + Embedded content + ========================================================================== */ + +/** + * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. + * 2. Improve image quality when scaled in IE 7. + */ + +img { + border: 0; /* 1 */ + -ms-interpolation-mode: bicubic; /* 2 */ +} + +/** + * Correct overflow displayed oddly in IE 9. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* ========================================================================== + Figures + ========================================================================== */ + +/** + * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. + */ + +figure { + margin: 0; +} + +/* ========================================================================== + Forms + ========================================================================== */ + +/** + * Correct margin displayed oddly in IE 6/7. + */ + +form { + margin: 0; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct color not being inherited in IE 6/7/8/9. + * 2. Correct text not wrapping in Firefox 3. + * 3. Correct alignment displayed oddly in IE 6/7. + */ + +legend { + border: 0; /* 1 */ + padding: 0; + white-space: normal; /* 2 */ + *margin-left: -7px; /* 3 */ +} + +/** + * 1. Correct font size not being inherited in all browsers. + * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, + * and Chrome. + * 3. Improve appearance and consistency in all browsers. + */ + +button, +input, +select, +textarea { + font-size: 100%; /* 1 */ + margin: 0; /* 2 */ + vertical-align: baseline; /* 3 */ + *vertical-align: middle; /* 3 */ +} + +/** + * Address Firefox 3+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +button, +input { + line-height: normal; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. + * Correct `select` style inheritance in Firefox 4+ and Opera. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + * 4. Remove inner spacing in IE 7 without affecting normal text inputs. + * Known issue: inner spacing remains in IE 6. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ + *overflow: visible; /* 4 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * 1. Address box sizing set to content-box in IE 8/9. + * 2. Remove excess padding in IE 8/9. + * 3. Remove excess padding in IE 7. + * Known issue: excess padding remains in IE 6. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ + *height: 13px; /* 3 */ + *width: 13px; /* 3 */ +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Remove inner padding and border in Firefox 3+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * 1. Remove default vertical scrollbar in IE 6/7/8/9. + * 2. Improve readability and alignment in all browsers. + */ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + +/* ========================================================================== + Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/css/print.css b/css/print.css deleted file mode 100644 index 46c5e8109dd0..000000000000 --- a/css/print.css +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* $Id: print.css 1201871 2011-11-14 20:18:24Z simonetripodi $ */ - -#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn {display: none !important;} -#bodyColumn, body.docs div.docs {margin: 0 !important;border: none !important} diff --git a/css/site.css b/css/site.css index 055e7e286adc..b1fed62bc505 100644 --- a/css/site.css +++ b/css/site.css @@ -1 +1,1317 @@ -/* You can override this file with your own styles */ \ No newline at end of file +/*! HTML5 Boilerplate v4.3.0 | MIT License | http://h5bp.com/ */ + +/* + * What follows is the result of much research on cross-browser styling. + * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal, + * Kroc Camen, and the H5BP dev community and team. + */ + +/* ========================================================================== + Base styles: opinionated defaults + ========================================================================== */ + +html, +button, +input, +select, +textarea { + color: #222; +} + +html { + font-size: 1em; + line-height: 1.4; +} + +/* + * Remove text-shadow in selection highlight: h5bp.com/i + * These selection rule sets have to be separate. + * Customize the background color to match your design. + */ + +::-moz-selection { + background: #b3d4fc; + text-shadow: none; +} + +::selection { + background: #b3d4fc; + text-shadow: none; +} + +/* + * A better looking default horizontal rule + */ + +hr { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #ccc; + margin: 1em 0; + padding: 0; +} + +/* + * Remove the gap between images, videos, audio and canvas and the bottom of + * their containers: h5bp.com/i/440 + */ + +audio, +canvas, +img, +video { + vertical-align: middle; +} + +/* + * Remove default fieldset styles. + */ + +fieldset { + border: 0; + margin: 0; + padding: 0; +} + +/* + * Allow only vertical resizing of textareas. + */ + +textarea { + resize: vertical; +} + +/* ========================================================================== + Browse Happy prompt + ========================================================================== */ + +.browsehappy { + margin: 0.2em 0; + background: #ccc; + color: #000; + padding: 0.2em 0; +} + +/* ========================================================================== + Author's custom styles + ========================================================================== */ + +html { + height: 100%; + background: #fff; +} + +body { + height: 100%; + font-family: 'Roboto', sans-serif; + color: #5d6061; +} + + +/* Global Elements + ========================================================================== */ + +pre { + padding: 0.5em; + background: #f8f8f8; + /* Border Radius */ + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + font-family: 'Droid Sans Mono', monospace; +} + +code { + font-size: 1em; + line-height: 1.4em; +} + +img { + max-width: 100%; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: normal; + font-weight: 300; +} + +/* Header + ========================================================================== */ + +.page-header, +.hero-banner { + background: #4285f4; + color: #fff; +} + +.page-header { + position: relative; + padding: 1em; +} + +.page-header.fixed { + position: fixed; + z-index: 2; + top: 0; + width: 100%; + padding: 0; +} + +/* + Logo +*/ + +.logo { + margin: 0; + width: 13em; + font-size: 1em; + line-height: normal; +} + +.page-header.fixed .logo { + width: auto; +} + +.page-header.fixed a { + color: #fff; + text-decoration: none; +} + +.page-header.fixed a:hover { + opacity: 0.4; +} + +.page-header.fixed .logo img { + position: relative; + top: -0.2em; + width: 2em; + margin: 0 0.5em; +} + +.page-header.fixed .gcloud { + display: inline-block; + padding: 0.4em 0 0.6em 0.6em; + border-left: 1px solid rgba(255,255,255,0.2); + font-family: 'Open Sans', sans-serif; + font-weight: 300; + font-size: 1.4em; +} + +/* + Menu +*/ + +.nav-current { + display: block; + position: absolute; + top: 1.2em; + right: 1em; + width: 24px; + height: 20px; + background: url(../img/icon-menu.svg) no-repeat; + text-indent: -90000px; + cursor: pointer; +} + +.page-header.fixed .nav-current { + top: 1em; +} + +.menu { + display: none; + position: absolute; + top: 3.6em; + right: 0; + width: 100%; + margin: 0; + padding: 0; + background: #2570ec; + /* Box Shadow */ + -webkit-box-shadow: 5px 5px 8px rgba(0,16,41,0.3); + -moz-box-shadow: 5px 5px 8px rgba(0,16,41,0.3); + box-shadow: 5px 5px 8px rgba(0,16,41,0.3); + /* Transitions */ + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -ms-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +.page-header.fixed .menu { + top: 3.3em; +} + +.menu a { + display: block; + padding: 1em; + border-top: 1px solid rgba(255,255,255,0.2); + color: #fff; + text-decoration: none; + /* Transitions */ + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -ms-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +.menu a:hover { + background: #1a65e0; +} + +.menu-icon { + margin-right: 0.5em; +} + +/* + Open Menu + */ + +.main-nav.open .nav-current { + opacity: 0.4; +} + +.main-nav.open .menu { + display: block; +} + + + +/* Home Content + ========================================================================== */ + +/* + Main Content +*/ + +.main { + font-size: 0.9em; + line-height: 1.8em; +} + +.container { + padding: 2.8em 2em; +} + +.block-title { + margin-top: 0; + font-size: 1.6em; +} + +/* + Hero Banner +*/ + +.hero-banner h1 { + margin: 0 0 0.6em; + font-family: 'Open Sans', sans-serif; + font-size: 3.5em; + font-weight: 300; +} + +.hero-banner p { + margin-bottom: 2.2em; + font-size: 0.9em; + line-height: 1.6em; +} + +.hero-banner h2 { + margin-bottom: 0.2em; + font-size: 1.3em; +} + +.hero-banner pre { + margin: 0; + padding: 1em; + border: none; + background: #2a74ed; +} + +/* + What is it? + */ +.about pre { + font-size: 110%; +} + +/* + Featuring +*/ + +.featuring .block-title { + text-align: center; +} + +.featuring p { + font-size: 0.9em; + line-height: 1.6em; +} + +.featuring-links { + list-style: none; + margin: 0; + padding: 0; +} + +.btn, +.ext-link { + display: block; +} + +.btn { + padding: 1em; + border: none; + /* Border Radius */ + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + background: #db4437; + color: #fff; + text-decoration: none; + /* Transitions */ + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -ms-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +.btn:hover { + background: #f24f41; +} + +.btn img { + margin-right: 0.5em; +} + +.btn-docs img { + background-color: #fff; + border: 1px solid transparent; + -webkit-border-radius: 80px; + -moz-border-radius: 80px; + border-radius: 80px; + padding: 4px; + width: 40px; + /* Transitions */ + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -ms-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + +.btn-docs:hover img { + border: 1px solid #ccc; + transform: rotate(135deg); + -webkit-box-shadow: 4px 4px 4px rgba(0, 0, 0, .3); + -moz-box-shadow: 4px 4px 4px rgba(0, 0, 0, .3); + box-shadow: 4px 4px 4px rgba(0, 0, 0, .3); +} + +.btn-docs:active img { + -webkit-box-shadow: 4px 4px 4px rgba(0, 0, 0, .5); + -moz-box-shadow: 4px 4px 4px rgba(0, 0, 0, .5); + box-shadow: 4px 4px 4px rgba(0, 0, 0, .5); +} + +.featuring-links .btn { + margin-bottom: 1em; + padding: 1.5em; + font-size: 1.1em; + text-align: center; +} + +.featuring-links .btn img { + width: 2em; +} + +.ext-link { + display: block; + padding: 1em; + border-bottom: 1px solid rgba(0,0,0,0.1); + color: #5d6061; + text-decoration: none; + /* Transitions */ + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -ms-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +.ext-link:hover { + background: #f6f6f6; +} + +.ext-link img { + opacity: 0.5; + margin-right: 0.5em; + /* Transitions */ + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -ms-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +.ext-link:hover img { + opacity: 0.7; +} + +.pagination { + margin: 2em 0 0; + padding: 0; + list-style: none; + text-decoration: none; + text-align: center; +} + +.pagination li { + display: inline-block; + width: 1em; + height: 1em; + margin: 0 0.2em; +} + +.pagination a { + display: block; + width: 100%; + height: 100%; + border: 1px solid rgba(0,0,0,0.2); + /* Border Radius */ + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; + background: #fff; + text-indent: -90000px; +} + +.pagination a:hover { + background: rgba(0,0,0,0.1); +} + +.pagination .current, +.pagination .current:hover { + background: #db4437; + border-color: #db4437; +} + +/* + About +*/ + +.about { + background: #eee; +} + +.about h4 { + margin-bottom: 0; + font-size: 1.2em; + font-weight: bold; + color: #4285f4; +} + +/* + FAQ +*/ + +.faq-btn, +.faq-questions { + max-width: 20em; + margin: 0; + padding: 0; + list-style: none; +} + +.faq-btn { + position: relative; + margin-bottom: 2em; +} + +.faq-btn .current { + background: #e6eefc url(../img/icon-dropdown-faq.svg) 95% 50% no-repeat; +} + +.faq-btn .current, +.faq-questions a { + display: block; + padding: 1em; + border: 1px solid #a7bfe8; + color: #2b70e2; + cursor: pointer; + text-decoration: none; + /* Transitions */ + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -ms-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +.faq-questions { + display: none; + position: absolute; + width: 100%; +} + +.faq-questions a { + border-top: none; + background: #e6eefc; +} + +.faq-questions a:hover { + background: #fcfdff; +} + +/* + Open FAQ button + */ + +.faq-btn.open .current { + background-color: #c6d7f6; + /* Box Shadow */ + -webkit-box-shadow: inset 0 0 10px rgba(16,71,163,0.3); + -moz-box-shadow: inset 0 0 10px rgba(16,71,163,0.3); + box-shadow: inset 0 0 10px rgba(16,71,163,0.3); + color: #1555bf; +} + +.faq-btn.open .faq-questions { + display: block; +} + + +/* Docs Content + ========================================================================== */ + +.docs-header { + position: relative; + padding: 7em 2em 4em; + background: #f8f8f8; + border-bottom: 1px solid rgba(0,0,0,0.05); +} + +/* + Page Title +*/ + +.page-title { + margin: 0; + font-family: 'Open Sans', sans-serif; + font-weight: 300; + color: #4285f4; + font-size: 2.4em; + line-height: 1em; +} + +/* + Versions +*/ + +.versions { + display: inline-block; + margin-top: 2em; +} + +.versions span, +.versions a { + display: block; +} + +.v-current { + font-size: 1.2em; + color: #2b70e2; +} + +.v-current i { + font-size: 0.7em; +} + +.v-btn { + padding: 0.5em; + border: 1px solid rgba(0,0,0,0.2); + background: rgba(0,0,0,0.07); + font-size: 0.8em; + color: rgba(0,0,0,0.6); + text-align: center; + text-decoration: none; + /* Transitions */ + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -ms-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +.v-btn:hover { + background: rgba(0,0,0,0.02); +} + +.v-btn img { + position: relative; + top: -0.1em; + opacity: 0.3; +} + +.v-list { + color: rgba(0,0,0,0.2); +} + +.v-list a { + color: #4285f4; + text-decoration: none; +} + +.v-list a:hover { + text-decoration: underline; +} + +/* + Content + */ + + +.content { + padding: 1em 2em; +} + +.content pre, +.table { + border: 0; + margin-bottom: 2em; +} + +.content h2, .content h3, .content h4, .content h5, .content h6 { + margin: 2em 0 0.5em; +} + +.content>h2:first-child { + margin-top: 1em; +} + +/* + Tables + */ + +.table { + text-align: left; +} + +.table th, +.table td { + padding: 0.3em 1em; + border: 1px solid #cfcfcf; +} + +.table th[scope="col"] { + border-color: #2264d0; + background: #4285f4; + color: #fff; +} + +.table th[scope="row"] { + background: #f6f6f6; +} + +/* + Side Nav + */ + + .side-nav { + padding-bottom: 3em; + background: #efefef; + } + +.side-nav a { + display: block; + padding: 0.3em 2em; + color: #5d6061; + text-decoration: none; + /* Transitions */ + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -ms-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +.side-nav a:hover { + background: rgba(255,255,255,0.7); +} + +.side-nav .current, +.side-nav .current:hover { + background: #e2e2e2; +} + +.side-nav ul { + margin: 0; + padding: 0; +} + +.side-nav .sub-sections a { + padding-left: 4em; +} + +.side-nav .external-links { + margin-top: 2em; +} + +.external-links img { + margin-right: 0.3em; + opacity: 0.3; + /* Transitions */ + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -ms-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +.external-links a:hover img { + opacity: 0.6; +} + + + +/* ========================================================================== + Helper classes + ========================================================================== */ + +/* + * Image replacement + */ + +.ir { + background-color: transparent; + border: 0; + overflow: hidden; + /* IE 6/7 fallback */ + *text-indent: -9999px; +} + +.ir:before { + content: ""; + display: block; + width: 0; + height: 150%; +} + +/* + * Hide from both screenreaders and browsers: h5bp.com/u + */ + +.hidden { + display: none !important; + visibility: hidden; +} + +/* + * Hide only visually, but have it available for screenreaders: h5bp.com/v + */ + +.visuallyhidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +/* + * Extends the .visuallyhidden class to allow the element to be focusable + * when navigated to via the keyboard: h5bp.com/p + */ + +.visuallyhidden.focusable:active, +.visuallyhidden.focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; +} + +/* + * Hide visually and from screenreaders, but maintain layout + */ + +.invisible { + visibility: hidden; +} + +/* + * Clearfix: contain floats + * + * For modern browsers + * 1. The space content is one way to avoid an Opera bug when the + * `contenteditable` attribute is included anywhere else in the document. + * Otherwise it causes space to appear at the top and bottom of elements + * that receive the `clearfix` class. + * 2. The use of `table` rather than `block` is only necessary if using + * `:before` to contain the top-margins of child elements. + */ + +.clearfix:before, +.clearfix:after { + content: " "; /* 1 */ + display: table; /* 2 */ +} + +.clearfix:after { + clear: both; +} + +/* + * For IE 6/7 only + * Include this rule to trigger hasLayout and contain floats. + */ + +.clearfix { + *zoom: 1; +} + +/* ========================================================================== + EXAMPLE Media Queries for Responsive Design. + These examples override the primary ('mobile first') styles. + Modify as content requires. + ========================================================================== */ + +@media only screen and (min-width: 35em) { + + /* + Main + */ + + .main { + font-size: 1em; + } + + /* + Featuring + */ + + .featuring-links { + text-align: center; + } + + .featuring-links li { + display: inline-block; + } + + .featuring-links li:first-child { + display: block; + } + + .featuring-links .btn { + display: inline-block; + padding: 1em 2.4em; + } + + .ext-link { + display: inline-block; + padding: 0.8em 1.2em; + border: none; + /* Border Radius */ + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + } + + .pagination li { + width: 0.6em; + height: 0.6em; + } + +} + +@media only screen and (min-width: 45em) { + + /* + Docs Header + */ + + .versions { + position: absolute; + top: 6em; + right: 2em; + margin: 0; + } + + .v-btn { + + font-size: 0.7em; + line-height: normal; + } + +} + +@media only screen and (min-width: 50em) { + + /* + Header + */ + + .page-header { + padding: 1.6em; + } + + .page-header.fixed .logo img { + margin: 0 0.8em; + } + + .page-header.fixed .gcloud { + padding: 0 0 0 1em; + height: 70px; + line-height: 70px; + } + + /* + Logo + */ + + .logo { + width: 280px; + } + + /* + Menu + */ + + .main-nav { + position: absolute; + top: 1.2em; + left: 21.5em; + } + + .page-header.fixed .main-nav { + top: 0; + left: 11.5em; + } + + .nav-current { + position: relative; + top: 0; + left: 0; + padding: 0.8em 1.6em; + width: 150px; + height: auto; + border: 1px solid rgba(255,255,255,0.4); + background: url(../img/icon-dropdown.svg) 90% 50% no-repeat; + text-indent: 0; + } + + .page-header.fixed .nav-current { + top: 0; + padding: 0 1.6em; + height: 70px; + border: 1px solid rgba(255,255,255,0.2); + border-top: none; + border-bottom: none; + line-height: 70px; + } + + .nav-current:hover { + background-color: rgba(255,255,255,0.1); + } + + .menu { + top: 3em; + left: 0; + } + + .menu a { + padding: 1.2em 1.5em; + } + + .page-header.fixed .menu { + top: 70px; + } + + /* + Docs Header + */ + + .docs-header { + padding-top: 7.7em; + } + + .versions { + top: 7em; + } + + + /* + Content + */ + + .container, + .content { + width: 80%; + margin: 0 auto; + padding: 2em 0; + } + + /* + Hero Banner + */ + + .hero-banner { + padding: 2em 0; + } + + .hero-banner h1 { + font-size: 5em; + margin-bottom: 0.8em; + } + + .hero-banner p { + font-size: 1em; + line-height: 2em; + } + + /* + Featuring + */ + + .featuring .block-title { + margin-bottom: 1.4em; + } + +} + +@media only screen and (min-width: 60em) { + + /* + Content + */ + + .container { + width: 90%; + max-width: 1020px; + font-size: 0.9em; + } + + .col { + width: 46%; + } + + .col-left { + float: left; + } + + .col-right { + float: right; + } + + .block-title { + font-size: 2em; + } + + /* + Hero Banner + */ + + .hero-banner { + padding-bottom: 0; + } + + .hero-banner .col-right { + padding-top: 3.6em; + } + + .hero-banner h1 { + font-size: 5.6em; + } + + .hero-banner p { + font-size: 1.1em; + } + + .hero-banner h2 { + font-size: 1.3em; + margin-bottom: 0.4em; + } + + .hero-banner pre { + font-size: 1.1em; + padding: 1em 1.5em; + } + + /* + Featuring + */ + + .featuring { + text-align: center; + } + + .featuring-links li { + font-size: 1em; + } + + .featuring-links li:first-child { + display: inline-block; + } + + .featuring-links .btn { + margin-right: 0.5em; + } + + .ext-link { + padding: 0.5em 1.2em; + } + + .featuring p { + max-width: 80%; + margin: 0 auto; + font-size: 1em; + } + + /* + About + */ + + .about .col-right { + padding-top: 2.4em; + } + + /* + FAQ + */ + + .faq .answer { + -moz-column-count: 2; + -moz-column-gap: 50px; + -webkit-column-count: 2; + -webkit-column-gap: 50px; + column-count: 2; + column-gap: 50px; + } + + /* + Docs Page + */ + + .lang-page { + background: url(../img/lang-bg.png) repeat-y; + } + + .docs-header { + margin-left: 240px; + } + + .content { + width: 100%; + max-width: 1070px; + padding-left: 290px; + padding-right: 2em; + /* Box Sizing */ + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + font-size: 0.9em; + } + + + .side-nav { + position: absolute; + top: 0; + left: 0; + width: 240px; + padding-top: 7.7em; + background: none; + font-size: 0.9em; + } + + .side-nav a { + padding-left: 2.5em; + } + +} + +@media print, + (-o-min-device-pixel-ratio: 5/4), + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + /* Style adjustments for high resolution devices */ +} + +/* ========================================================================== + Print styles. + Inlined to avoid required HTTP connection: h5bp.com/r + ========================================================================== */ + +@media print { + * { + background: transparent !important; + color: #000 !important; /* Black prints faster: h5bp.com/s */ + box-shadow: none !important; + text-shadow: none !important; + } + + a, + a:visited { + text-decoration: underline; + } + + a[href]:after { + content: " (" attr(href) ")"; + } + + abbr[title]:after { + content: " (" attr(title) ")"; + } + + /* + * Don't show links for images, or javascript/internal links + */ + + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + + thead { + display: table-header-group; /* h5bp.com/t */ + } + + tr, + img { + page-break-inside: avoid; + } + + img { + max-width: 100% !important; + } + + @page { + margin: 0.5cm; + } + + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + + h2, + h3 { + page-break-after: avoid; + } +} diff --git a/dependencies.html b/dependencies.html deleted file mode 100644 index 51a24d8e95eb..000000000000 --- a/dependencies.html +++ /dev/null @@ -1,1386 +0,0 @@ - - - - - - - - - GCloud Java – Project Dependencies - - - - - - - - - - - - - -
- - - - - -
-
- -
- - -
- - -
-

Project Dependencies

-
-

compile

-

The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GroupIdArtifactIdVersionTypeLicense
com.google.api-clientgoogle-api-client-appengine1.19.0jarThe Apache Software License, Version 2.0
com.google.apisgoogle-api-services-datastorev1beta2-rev23-1.19.0jarThe Apache Software License, Version 2.0
com.google.apisgoogle-api-services-datastore-protobufv1beta2-rev1-2.1.2jar-
com.google.apisgoogle-api-services-storagev1-rev33-1.20.0jarThe Apache Software License, Version 2.0
com.google.authgoogle-auth-library-credentials0.1.0jarBSD New license
com.google.authgoogle-auth-library-oauth2-http0.1.0jarBSD New license
com.google.guavaguava18.0jarThe Apache Software License, Version 2.0
com.google.http-clientgoogle-http-client1.19.0jarThe Apache Software License, Version 2.0
com.google.oauth-clientgoogle-oauth-client1.19.0jarThe Apache Software License, Version 2.0
joda-timejoda-time2.7jarApache 2
org.jsonjson20090211jarprovided without support or warranty
-
-

test

-

The following is a list of test dependencies for this project. These dependencies are only required to compile and run unit tests for the application:

- - - - - - - - - - - - - - - - - - -
GroupIdArtifactIdVersionTypeLicense
junitjunit4.12jarEclipse Public License 1.0
org.easymockeasymock3.3jarApache 2
-
-

Project Transitive Dependencies

-

The following is a list of transitive dependencies for this project. Transitive dependencies are the dependencies of the project dependencies.

-
-

compile

-

The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GroupIdArtifactIdVersionTypeLicense
com.fasterxml.jackson.corejackson-core2.1.3jarThe Apache Software License, Version 2.0
com.google.api-clientgoogle-api-client1.15.0-rcjarThe Apache Software License, Version 2.0
com.google.api-clientgoogle-api-client-servlet1.19.0jarThe Apache Software License, Version 2.0
com.google.code.findbugsjsr3051.3.9jarThe Apache Software License, Version 2.0
com.google.http-clientgoogle-http-client-appengine1.19.0jarThe Apache Software License, Version 2.0
com.google.http-clientgoogle-http-client-jackson1.15.0-rcjarThe Apache Software License, Version 2.0
com.google.http-clientgoogle-http-client-jackson21.19.0jarThe Apache Software License, Version 2.0
com.google.http-clientgoogle-http-client-jdo1.19.0jarThe Apache Software License, Version 2.0
com.google.http-clientgoogle-http-client-protobuf1.15.0-rcjarThe Apache Software License, Version 2.0
com.google.oauth-clientgoogle-oauth-client-appengine1.19.0jarThe Apache Software License, Version 2.0
com.google.oauth-clientgoogle-oauth-client-servlet1.19.0jarThe Apache Software License, Version 2.0
com.google.protobufprotobuf-java2.5.0jarNew BSD license
commons-codeccommons-codec1.3jar/LICENSE.txt
commons-loggingcommons-logging1.1.1jarThe Apache Software License, Version 2.0
javax.jdojdo2-api2.3-ebjarApache 2
javax.servletservlet-api2.5jar-
javax.transactiontransaction-api1.1jar-
org.apache.httpcomponentshttpclient4.0.1jar../LICENSE.txt
org.apache.httpcomponentshttpcore4.0.1jarApache License
org.codehaus.jacksonjackson-core-asl1.9.11jarThe Apache Software License, Version 2.0
-
-

test

-

The following is a list of test dependencies for this project. These dependencies are only required to compile and run unit tests for the application:

- - - - - - - - - - - - - - - - - - - - - - - - -
GroupIdArtifactIdVersionTypeLicense
cglibcglib-nodep3.1jarASF 2.0
org.hamcresthamcrest-core1.3jarNew BSD License
org.objenesisobjenesis2.1jarApache 2
-
-

Project Dependency Graph

- -
-

Dependency Tree

-
-
-

Licenses

-

ASF 2.0: Code Generation Library

-

New BSD License: Hamcrest Core

-

Apache 2: EasyMock, JDO2 API, Joda-Time, Objenesis

-

GCloud Java Software License: GCloud Java

-

Unknown: google-api-services-datastore-protobuf, servlet-api, transaction-api

-

Apache License: HttpClient, HttpCore

-

Eclipse Public License 1.0: JUnit

-

New BSD license: Protocol Buffer Java API

-

provided without support or warranty: JSON (JavaScript Object Notation)

-

The Apache Software License, Version 2.0: Cloud Storage API v1-rev33-1.20.0, Codec, Commons Logging, FindBugs-jsr305, Google APIs Client Library for Java, Google App Engine extensions to the Google API Client Library for Java., Google App Engine extensions to the Google HTTP Client Library for Java., Google App Engine extensions to the Google OAuth Client Library for Java., Google Cloud Datastore API v1beta2-rev23-1.19.0, Google HTTP Client Library for Java, Google OAuth Client Library for Java, Guava: Google Core Libraries for Java, JDO extensions to the Google HTTP Client Library for Java., Jackson, Jackson 2 extensions to the Google HTTP Client Library for Java., Jackson extensions to the Google HTTP Client Library for Java., Jackson-core, Protocol Buffer extensions to the Google HTTP Client Library for Java., Servlet and JDO extensions to the Google API Client Library for Java., Servlet and JDO extensions to the Google OAuth Client Library for Java.

-

BSD New license: Google Auth Library for Java - Credentials, Google Auth Library for Java - OAuth2 HTTP

-
-

Dependency File Details

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FilenameSizeEntriesClassesPackagesJava VersionDebug Information
cglib-nodep-3.1.jar331.20 kB25625291.2Yes
jackson-core-2.1.3.jar206.80 kB1108981.5Yes
google-api-client-1.15.0-rc.jar177.88 kB12693181.5Yes
google-api-client-appengine-1.19.0.jar9.87 kB22731.5Yes
google-api-client-servlet-1.19.0.jar6.72 kB14411.5Yes
google-api-services-datastore-v1beta2-rev23-1.19.0.jar49.85 kB584621.5Yes
google-api-services-datastore-protobuf-v1beta2-rev1-2.1.2.jar456.59 kB19017721.6Yes
google-api-services-storage-v1-rev33-1.20.0.jar97.82 kB837121.5Yes
google-auth-library-credentials-0.1.0.jar2.67 kB11111.5Yes
google-auth-library-oauth2-http-0.1.0.jar21.79 kB21921.5Yes
jsr305-1.3.9.jar33.01 kB723531.5Yes
guava-18.0.jar2.26 MB17191690171.6Yes
google-http-client-1.19.0.jar271.40 kB241208191.5Yes
google-http-client-appengine-1.19.0.jar15.69 kB211121.5Yes
google-http-client-jackson-1.15.0-rc.jar7.71 kB17411.5Yes
google-http-client-jackson2-1.19.0.jar6.72 kB13511.5Yes
google-http-client-jdo-1.19.0.jar11.34 kB13511.5Yes
google-http-client-protobuf-1.15.0-rc.jar7.09 kB19521.5Yes
google-oauth-client-1.19.0.jar61.08 kB574731.5Yes
google-oauth-client-appengine-1.19.0.jar7.95 kB17721.5Yes
google-oauth-client-servlet-1.19.0.jar22.12 kB241141.5Yes
protobuf-java-2.5.0.jar533.46 kB25624611.5Yes
commons-codec-1.3.jar46.72 kB422551.2Yes
commons-logging-1.1.1.jar60.69 kB422821.1Yes
jdo2-api-2.3-eb.jar192.70 kB22618271.5Yes
servlet-api-2.5.jar105.11 kB684221.5Yes
transaction-api-1.1.jar15.07 kB241821.3Yes
joda-time-2.7.jar589.29 kB67424571.5Yes
junit-4.12.jar314.93 kB323286301.5Yes
httpclient-4.0.1.jar291.04 kB266230221.5Yes
httpcore-4.0.1.jar172.89 kB181158101.3Yes
jackson-core-asl-1.9.11.jar232.13 kB13712181.5Yes
easymock-3.3.jar126.61 kB1049531.5Yes
hamcrest-core-1.3.jar45.02 kB524531.5Yes
json-20090211.jar45.94 kB211911.6Yes
objenesis-2.1.jar41.76 kB523791.5Yes
TotalSizeEntriesClassesPackagesJava VersionDebug Information
366.87 MB557245542151.636
compile: 31compile: 6.02 MBcompile: 4785compile: 3839compile: 161-compile: 31
test: 5test: 859.53 kBtest: 787test: 715test: 54-test: 5
-
-

Dependency Repository Locations

- - - - - - - - - - - - - - - - - - - - -
Repo IDURLReleaseSnapshot
apache.snapshotshttp://people.apache.org/repo/m2-snapshot-repositoryNoYes
sonatype-nexus-snapshotshttps://oss.sonatype.org/content/repositories/snapshotsNoYes
centralhttps://repo.maven.apache.org/maven2YesNo
-

Repository locations for each of the Dependencies.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Artifactapache.snapshotssonatype-nexus-snapshotscentral
cglib:cglib-nodep:jar:3.1--Found at https://repo.maven.apache.org/maven2
com.fasterxml.jackson.core:jackson-core:jar:2.1.3--Found at https://repo.maven.apache.org/maven2
com.google.api-client:google-api-client:jar:1.15.0-rc--Found at https://repo.maven.apache.org/maven2
com.google.api-client:google-api-client-appengine:jar:1.19.0--Found at https://repo.maven.apache.org/maven2
com.google.api-client:google-api-client-servlet:jar:1.19.0--Found at https://repo.maven.apache.org/maven2
com.google.apis:google-api-services-datastore:jar:v1beta2-rev23-1.19.0--Found at https://repo.maven.apache.org/maven2
com.google.apis:google-api-services-datastore-protobuf:jar:v1beta2-rev1-2.1.2--Found at https://repo.maven.apache.org/maven2
com.google.apis:google-api-services-storage:jar:v1-rev33-1.20.0--Found at https://repo.maven.apache.org/maven2
com.google.auth:google-auth-library-credentials:jar:0.1.0--Found at https://repo.maven.apache.org/maven2
com.google.auth:google-auth-library-oauth2-http:jar:0.1.0--Found at https://repo.maven.apache.org/maven2
com.google.code.findbugs:jsr305:jar:1.3.9--Found at https://repo.maven.apache.org/maven2
com.google.guava:guava:jar:18.0--Found at https://repo.maven.apache.org/maven2
com.google.http-client:google-http-client:jar:1.19.0--Found at https://repo.maven.apache.org/maven2
com.google.http-client:google-http-client-appengine:jar:1.19.0--Found at https://repo.maven.apache.org/maven2
com.google.http-client:google-http-client-jackson:jar:1.15.0-rc--Found at https://repo.maven.apache.org/maven2
com.google.http-client:google-http-client-jackson2:jar:1.19.0--Found at https://repo.maven.apache.org/maven2
com.google.http-client:google-http-client-jdo:jar:1.19.0--Found at https://repo.maven.apache.org/maven2
com.google.http-client:google-http-client-protobuf:jar:1.15.0-rc--Found at https://repo.maven.apache.org/maven2
com.google.oauth-client:google-oauth-client:jar:1.19.0--Found at https://repo.maven.apache.org/maven2
com.google.oauth-client:google-oauth-client-appengine:jar:1.19.0--Found at https://repo.maven.apache.org/maven2
com.google.oauth-client:google-oauth-client-servlet:jar:1.19.0--Found at https://repo.maven.apache.org/maven2
com.google.protobuf:protobuf-java:jar:2.5.0--Found at https://repo.maven.apache.org/maven2
commons-codec:commons-codec:jar:1.3--Found at https://repo.maven.apache.org/maven2
commons-logging:commons-logging:jar:1.1.1--Found at https://repo.maven.apache.org/maven2
javax.jdo:jdo2-api:jar:2.3-eb--Found at https://repo.maven.apache.org/maven2
javax.servlet:servlet-api:jar:2.5--Found at https://repo.maven.apache.org/maven2
javax.transaction:transaction-api:jar:1.1--Found at https://repo.maven.apache.org/maven2
joda-time:joda-time:jar:2.7--Found at https://repo.maven.apache.org/maven2
junit:junit:jar:4.12--Found at https://repo.maven.apache.org/maven2
org.apache.httpcomponents:httpclient:jar:4.0.1--Found at https://repo.maven.apache.org/maven2
org.apache.httpcomponents:httpcore:jar:4.0.1--Found at https://repo.maven.apache.org/maven2
org.codehaus.jackson:jackson-core-asl:jar:1.9.11--Found at https://repo.maven.apache.org/maven2
org.easymock:easymock:jar:3.3--Found at https://repo.maven.apache.org/maven2
org.hamcrest:hamcrest-core:jar:1.3--Found at https://repo.maven.apache.org/maven2
org.json:json:jar:20090211--Found at https://repo.maven.apache.org/maven2
org.objenesis:objenesis:jar:2.1--Found at https://repo.maven.apache.org/maven2
Totalapache.snapshotssonatype-nexus-snapshotscentral
36 (compile: 31, test: 5)0036
-
-
-
- -
- -
-
-
-

Copyright © 2015 - Google. - All rights reserved. - -

-
- - - -
-
- - diff --git a/dev-activity.html b/dev-activity.html deleted file mode 100644 index 19547ff05f78..000000000000 --- a/dev-activity.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - - GCloud Java – Developer Activity Report - - - - - - - - - - - - - -
- - - - - -
-
- -
- - -
- -
-

Developer Activity Report

-
-

Changes between 2015-04-19 and 2015-05-20

-

Total commits: 62
Total number of files changed: 84

- - - - - - - - - - - - - - - - -
DeveloperTotal commitsTotal Number of Files Changed
aozarov <aozarov@gmail.com>4376
Arie <aozarov@users.noreply.github.com>11
ozarov <aozarov@gmail.com>1841
-
-
-
- -
- -
-
-
-

Copyright © 2015 - Google. - All rights reserved. - -

-
- - - -
-
- - diff --git a/distribution-management.html b/distribution-management.html deleted file mode 100644 index e4e943c7abbf..000000000000 --- a/distribution-management.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - - GCloud Java – Project Distribution Management - - - - - - - - - - - - - -
- - - - - -
-
- -
- - -
- -
-

Overview

-

The following is the distribution management information used by this project.

- -
-

Snapshot Repository - sonatype-nexus-snapshots

https://oss.sonatype.org/content/repositories/snapshots
-
-
-
- -
- -
-
-
-

Copyright © 2015 - Google. - All rights reserved. - -

-
- - - -
-
- - diff --git a/file-activity.html b/file-activity.html deleted file mode 100644 index dcc1c7a0701d..000000000000 --- a/file-activity.html +++ /dev/null @@ -1,427 +0,0 @@ - - - - - - - - - GCloud Java – File Activity Report - - - - - - - - - - - - - -
- - - - - -
-
- -
- - -
- -
-

File Activity Report

-
-

Changes between 2015-04-19 and 2015-05-20

-

Total commits: 62
Total number of files changed: 84

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FilenameNumber of Times Changed
src/main/java/com/google/gcloud/spi/DefaultStorageRpc.java 25
src/main/java/com/google/gcloud/storage/StorageServiceImpl.java 24
src/main/java/com/google/gcloud/examples/StorageExample.java 23
src/main/java/com/google/gcloud/storage/StorageService.java 14
src/main/java/com/google/gcloud/spi/StorageRpc.java 13
src/main/java/com/google/gcloud/storage/Bucket.java 10
src/main/java/com/google/gcloud/storage/BatchResponse.java 9
src/main/java/com/google/gcloud/ServiceOptions.java 9
src/main/java/com/google/gcloud/storage/Blob.java 8
src/main/java/com/google/gcloud/storage/StorageServiceOptions.java 8
src/main/java/com/google/gcloud/storage/BatchRequest.java 7
src/main/java/com/google/gcloud/storage/Acl.java 7
src/main/java/com/google/gcloud/datastore/DatastoreServiceOptions.java 6
src/test/java/com/google/gcloud/storage/SerializationTest.java 5
src/main/java/com/google/gcloud/storage/ListResult.java 5
src/test/java/com/google/gcloud/datastore/DatastoreServiceTest.java 4
src/main/java/com/google/gcloud/AuthCredentials.java 4
src/main/java/com/google/gcloud/storage/Cors.java 4
src/test/java/com/google/gcloud/storage/BatchRequestTest.java 4
src/main/java/com/google/gcloud/storage/ListOptions.java 3
src/main/java/com/google/gcloud/examples/DatastoreExample.java 3
src/main/java/com/google/gcloud/storage/StorageServiceFactory.java 3
src/test/java/com/google/gcloud/datastore/DatastoreServiceOptionsTest.java 3
src/test/java/com/google/gcloud/storage/ListResultTest.java 3
src/main/java/com/google/gcloud/storage/package-info.java 3
src/test/java/com/google/gcloud/datastore/SerializationTest.java 2
README.md 2
src/main/java/com/google/gcloud/datastore/DatastoreServiceFactory.java 2
src/main/java/com/google/gcloud/datastore/DatastoreServiceImpl.java 2
src/main/java/com/google/gcloud/datastore/package-info.java 2
src/main/java/com/google/gcloud/storage/StorageServiceException.java 2
pom.xml 2
src/main/java/com/google/gcloud/storage/BlobIterOptions.java 2
src/main/java/com/google/gcloud/storage/BlobList.java 2
src/main/java/com/google/gcloud/storage/BlobListOptions.java 2
src/test/java/com/google/gcloud/datastore/DatastoreHelperTest.java 2
src/test/java/com/google/gcloud/datastore/KeyFactoryTest.java 2
src/main/java/com/google/gcloud/ExceptionHandler.java 2
src/test/java/com/google/gcloud/datastore/DatastoreServiceExceptionTest.java 2
src/test/java/com/google/gcloud/storage/BatchResponseTest.java 2
src/test/java/com/google/gcloud/storage/CorsTest.java 2
src/test/java/com/google/gcloud/storage/OptionTest.java 2
src/main/java/com/google/gcloud/storage/BlobReadChannel.java 2
src/main/java/com/google/gcloud/storage/Option.java 2
src/main/java/com/google/gcloud/storage/Validator.java 2
src/main/java/com/google/gcloud/datastore/Value.java 1
src/test/java/com/google/gcloud/datastore/BaseEntityTest.java 1
src/test/java/com/google/gcloud/datastore/BlobValueTest.java 1
src/test/java/com/google/gcloud/datastore/BooleanValueTest.java 1
src/test/java/com/google/gcloud/datastore/DateTimeValueTest.java 1
src/test/java/com/google/gcloud/datastore/DoubleValueTest.java 1
src/test/java/com/google/gcloud/datastore/EntityValueTest.java 1
src/test/java/com/google/gcloud/datastore/KeyValueTest.java 1
src/test/java/com/google/gcloud/datastore/ListValueTest.java 1
src/test/java/com/google/gcloud/datastore/LongValueTest.java 1
src/test/java/com/google/gcloud/datastore/NullValueTest.java 1
src/test/java/com/google/gcloud/datastore/ProjectionEntityTest.java 1
src/test/java/com/google/gcloud/datastore/RawValueTest.java 1
src/test/java/com/google/gcloud/datastore/StringValueTest.java 1
src/test/java/com/google/gcloud/datastore/ValueTest.java 1
src/test/java/com/google/gcloud/storage/AclTest.java 1
src/test/java/com/google/gcloud/storage/BlobTest.java 1
src/test/java/com/google/gcloud/storage/BucketTest.java 1
src/main/java/com/google/gcloud/storage/BlobReadChannelImpl.java 1
src/main/java/com/google/gcloud/storage/BlobWriterChannelImpl.java 1
src/main/java/com/google/gcloud/datastore/BaseKey.java 1
src/main/java/com/google/gcloud/datastore/DatastoreHelper.java 1
src/main/java/com/google/gcloud/datastore/DatastoreService.java 1
src/main/java/com/google/gcloud/datastore/IncompleteKey.java 1
src/main/java/com/google/gcloud/datastore/Key.java 1
src/main/java/com/google/gcloud/datastore/KeyFactory.java 1
src/main/java/com/google/gcloud/datastore/QueryResultsImpl.java 1
src/main/java/com/google/gcloud/datastore/Validator.java 1
src/main/java/com/google/gcloud/spi/DefaultDatastoreRpc.java 1
src/test/java/com/google/gcloud/datastore/BaseKeyTest.java 1
src/test/java/com/google/gcloud/datastore/IncompleteKeyTest.java 1
src/test/java/com/google/gcloud/datastore/LocalGcdHelper.java 1
src/main/java/com/google/gcloud/datastore/DatastoreServiceException.java 1
src/main/java/com/google/gcloud/spi/ServiceRpcFactory.java 1
src/main/java/com/google/gcloud/RetryHelper.java 1
src/main/java/com/google/gcloud/RetryParams.java 1
src/main/java/com/google/gcloud/spi/StorageRpcFactory.java 1
src/main/java/com/google/gcloud/storage/BlobWriteChannel.java 1
src/test/java/com/google/gcloud/ExceptionHandlerTest.java 1
-
-
-
- -
- -
-
-
-

Copyright © 2015 - Google. - All rights reserved. - -

-
- - - -
-
- - diff --git a/images/accessories-text-editor.png b/images/accessories-text-editor.png deleted file mode 100644 index abc3366edad864f1c06e1354c2f7cd0ee1f2a080..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F?i!z!(tV6XFWw9$CP!U~&MEL_-~2 zturUYuc~G2k7NQOAQwpPnVm8{M-46l)ZW(7+}_y&l!c=+t7L#iU0Nn~YlG3l-F|15 z@P0VoetaRz%cI#-`!i3iRywta^WbvRtIMVKukt^?RPfMZskwP_>zl3S&Y%79fJLFr)R5u{`~pcwQJ|jo!h;8_nch0Czn_4o{=~$Tdkui?!}82 zPoF-0^5jWpw9vyV8+S~Jn~|&5P#DqD)^z{={fV`486gG>yE10vs7-0jnK^T2duMA= zxOS1hU{#Kw#hCr%tWa%9@{DF+T5IJs^5$&)9i&zL%I{+xaL_HEjdBN!3HH6)q7{X9{`;59Zq8_K&a?NFvhbtJ!a#ML1s;*b3=G^r zHn%V%!>lqE9PESpH$neQx=aVO*B2%Y?K6$dU zvO@Al$kmjqrY2jrl%|w^{UQ0|3oj3EZ%?m}Pw82fGm<}abk?qEJm7ZynqNRiHh(Bgn?ad9p@g!lX0?hAY$6qZbCW z0lmYZTH+c}l9E`GYL#4+3Zxi}3=9o*fylrz#K6+Z#K6kbLfgR5%D~`Tz=gvo8glbf ZGSez?YiQ@qs0V6b@O1TaS?83{1OS^WRoMUl diff --git a/images/add.gif b/images/add.gif deleted file mode 100644 index 1cb3dbf936e38b5c5efdc3e247a042eb1b1d23e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 397 zcmV;80doFFNk%w1VGsZi0Hrwqfq{XHjC_`scb}hfo}Qksu4?V%HuUQ#_Ut72?;iT^ zBKq(m_wPpc?_K-yJooTv`tnWp@M`+UP{`_CX>@2HM@dakAa8CUVIWOmV*nxf1OW;FKL9KM0000G01yBG z28=)gU`QMW1_i@!3CKC0&ddYCI52ah&u7HtL@q0qBk^l$xg^p?lB(HEigIo{N|QVi z)(zKM$kAyhAQ&1iFcb)XbtESzDjgOT6Af33jV>-IB_SdLSAi#(F{3g$0H2JZE~KTW ra*U!eGBdQMSC^|Yvokcda+j>Uy{=7A#!jw6Max43OV7~J&_Mt@cAw$D diff --git a/images/apache-maven-project-2.png b/images/apache-maven-project-2.png deleted file mode 100644 index 6c096ec0c7d50ecca14e76dd49b1fcb9382c3d07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33442 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 AyZ`_I diff --git a/images/close.gif b/images/close.gif deleted file mode 100644 index 1c26bbc5264fcc943ad7b5a0f1a84daece211f34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmZ?wbhEHb6kyFkwP}e}6+mLp=yE)H5&?6cps==O-j2#K*@61O)i|`#U%|*xTD17#Qg5 z>nkWI$ji$M2ng`=^D}^ygDj#2&;c6F0P+h1n~g(5frm~PL&uV$l`S$eFDwzBDbhJD v>}Bvw*Al_tWna1PC9OaGVdk23i}vRhZI{iR^*V|n<^22a#~T_O9T}_vbswrX diff --git a/images/contact-new.png b/images/contact-new.png deleted file mode 100644 index ebc4316d844dea7c644b636a768348a4a105fefe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F?i!z~~#`6XFWw{(0&D=T+#RHwAw` z&Hnpo&YySH^B2wT=xUuXq4DDJ;vXMY{rmmm?~n68U)N8b+W+is-}IT2Cr_OKQ8Rn) zjLlm%?%28R-u1=5z8w7b_w%10wGpKB`?6U6pFe*dJ9ccrf(7f>ue)&m)R!-BCQRynbY{!R9*ZYy+@7p-UY@S-`Sa%w zA3nT)|NhsnUlS(vzIpp-Vt+(alI*llmi}Ot{8X*wt1GWuxpMjPD8G_FtAwYlM(@+7PjBA5dHwqJt5>i7{Q0y0(1MB6!uuu%PnZ(1WB07bk00N^ zfB)XSdp~~s0NV5M7AY?6_YmX)lQk*=z#qM@b= z;jzxa-qG&i{`U`D;5cDwW@u`>eZ!Vb+cs`xE_y2~Gk1<|Ow8SwyS5T3HhcHf*8Kf* zmx-x4rs2+m2^The=s2c1x z@?`Pi#gUPb%a$!mPfyRv%4%q+zjyD}h7B7sGBPqVGdnvwA3b_>`}XY_GiFp&ROIC3 zBqk>2=H`C-^y%l%pKss3eemGH!-o&gojcdo*4Ee8cjwNX^XJbmU%q_Jnl)d(e3_rK zQ5)znu96_XUAfnlM+?I*J`vNB)4cy(~cFE%!y3*C+dtm|AkbLP(0rAtI-WalPl zXQ#h^a3Yue>8TkOmX^DBoNC%>bIn0P>y;XJk*Kt_xlBQUk->(IhZxnF8MX%rzU~pe z)edx+YKdz^NlIc#s#S7PDv)9@GB7mM1tJ5>5Ccmq69X$#3vB~KD+7aX0T&LVXvob^ Z$xN%nt)ZPaqaLV%!PC{xWt~$(69B9}1)l%_ diff --git a/images/drive-harddisk.png b/images/drive-harddisk.png deleted file mode 100644 index d7ce475f83900cfe56bc5374932b5bf2ca4dbc8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC&II^`xaJjPLr`yjcXv-mMOEp) zfB$~|{Q2qgr}E0uH*ep*0fM(c8pHz9pFVy1{{8!_SFc~e@M|D=_4?z-kMG~VfBN+4 z=g*&?JbCir!-ub5zrK9=^4G6l&z?Q|^5x6(=g-S4OG?X&9zTA3@7}!^FJ6?E7oReKBW~hUcb538A@(YtL-+^H_dcdDlJpJ=Y$-@O`Fz zG@0+R=gebQ3|6LQE_?ex(qMMck(v6_v=g$+AOFmI(3&Wse&EvEy!Sf~KCI~aV|0G{ zk1FrS2B$YEFiv@18F*(Wd((ez|EgADxttge3!oF5szM@4obz*YQ}ap~7&xwf_C2e8 zRrlN)FW64!{5l*E!$tK_0oAjM#0U}&fdLejY7 zI~FXQH)-jvha*6u#Df8X9ChYuY)a%k^~E2mDLxODNt zmCKi|T)zC|@uR1YAH8|~^39u9@7}$6_wMcc_wPP@0HXIFK79E6`SZ7LU%!9<{_EGT z|C9m6e^Smxsfi`2DGKG8B^e6tp1uJJ`FRS73ciWS42nNl7`Yhi8FUzc0OVr^w%h~r z3p{khINcN{dHm3sxp?^`71bH@yqi{KNeBh-JDpc0PP#ir~m)} diff --git a/images/icon_error_sml.gif b/images/icon_error_sml.gif deleted file mode 100644 index 12e9a01a930c8dfa20992254a9c2b19272d1d491..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 633 zcmZ?wbhEHb6krfwIF`;38Xg=L5fUB=M4=H;VNo&RafvaB$?-`k33&xMO~v8m6{R(` zl?_dGEv=0$ZA~rhO>G^`?Hw)coj}yu(b?MG)!Nb3($Ur0+1)m2a{u;z-^o)aPMJDs z`t(UNXHAo#m!w{g?@=WBc~Zm8X~W#g8u zo3?D*v~~ODZQHl}UT^n%gZ1x?R=+k`T;JBTW7oDFySD${^*eoz@Oc*hmRckzCZ2A(L+a%9{G7V>Fe>N z^XJe0KGXR7Y}4;^^*`^=|M7h0?^~=l4^&mpY`6;P-`9HR5qr6O1d8TwsR`3>b@UzlT;FtFnna2=nZ#cumG*CCfUXh`R z+r!d5z(O-R)XZE>lB1r*D>%&0R$Il*Mn_6Qf{%sS(JIbXUpX=*NJ;FP;1pg}V|6*} zv?MJFQE_3;iOj5Q?9#Ex;l6qz5+~F=Ii~BU9y&2WMUzuPiAOcCQYbJ`P)$^n_v8t~ IKm`VC0O`0&yZ`_I diff --git a/images/icon_help_sml.gif b/images/icon_help_sml.gif deleted file mode 100644 index aaf20e6eea4148fe8fbb09bdf4595eb98334fff6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1072 zcmZ?wbhEHb6krfwcs`v$!K+=-yF&?xd^(hUI+cApRs6bC{eh@k&A(ecpj#`rPbZ{T zHx!8a^g{b}!zSp5_v=SYG>n*N6g|Zlh+?Lg#7s4dnQRg})go?+MZ$E8gc;Te)2xza zS|`u4Ntxx4KG!L8zI)~z=dAgzISbu#7kcN-_sn1Ho4>%jXsJ)pQs3fbfo02sDpp2R zERC#K7E-k)vT8+i)$*{KwK3JpV{2AK)o)0wTb10nI<9$BO4FK@rnRX}Ym!%=V3`o!hfJHsy3|$nM;n-n}!oduvYb_N=~Lg}qy|`*#=hZ!es< zJAcyNg30?!r|d17cCdKb!IJ3*D`y_8n0>Tq?!mT&hdUP@>REWOXVJm#rN<{MJ>0+I z#FUlCrmQ_Pd;RIzn=UTca(=iaqXVV+mGGa zb@J}slehPtx^v*n-9zW@9lP}K#FZzfu01_{?di$u&(B2A zoI?4BMCM#(ZeZdNx5?S*;=#(TTgt)U(ejX?g-3ph&!#D=Y`v;IOgUFKENEgEY}K2& zbK&FTQ{0&t&PXaHI(LYby<^~<)WRug%f?Vsn9S(HDV}gdq)=(8*E}P}f0hC+DlA;` z)Ad{zHa+cG#KBxFQ?<#-BSSmll8aH3zyUtzf;|p9o6`Ijt8uE?Ni?%hQnAZc^O50L PaG-&a!$_HjgTWdA|E#c| diff --git a/images/icon_info_sml.gif b/images/icon_info_sml.gif deleted file mode 100644 index b776326703c341ce559f98f028bb92fe4c332a83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 638 zcmZ?wbhEHb6krfwI99}9U|?WrY3AnUX5m?3;Z0M>*4P;bV`&8Ka zl-c-J*!q^)`BgduR5=D#I|r7#hSa%**1Lx{c!gJaL^OLwwt7Xic}F+L#o2`7dnmC(1Rt2?c3!lt^38_VY&t(beHXZDWXIXh-7+1tM2%&evRR;+4S zwr0k}b!V5aoiTgei6v_fuiiLg?#^pV_uW{w@5aglH&-3Jx&6@9oky;1J$7sB@!MNZ zJveyg`hg3N4_$b0@Y0i`mmVIv{N(WECzr2oIC}Nz@oP^{UVDDw>Vp&4U!1=A;>^t# zmu@{ecl+ht`>QY9eSP`<>nji5TzT;J+QYXu9=*N!_}$}YyB<7!`{3D|d(S`KfBxyw z^Y`~(e0uQm)1z0PU%x&0;{BHw@4vo%|K;_EudhFRd-L)8=Wi$9eg5(O^Y^bmPJRCV z>&y3FUw{1i{`2>*-+zDo`TOV3-~U7d#ecdQ$(jmA1_mYyUWwVINeaOwshN4HMO<9Y zMX8A;sVNHOnI#ztAsML(?w-B@42nNl7`Yhg8FUzc02GM~?5i5;o0>S;m|56)n!B60 zjgkxVVs!X>ns_~P6XU}IL#+gR_>6Khb5di2o!vBrx&@MxvJ29p102vbQyButm$y)r=@GSbQ7fuf zG&hu(RxhgI;Nx!Xk#a$OMKhbYL0W}^MFz8kslSGfx4@b6vWfA)m`-W&brNWq_@1%Hm^{yEe1`?BYsvn_wmHvhTm`R8WJ@7psnMoCG5mA-y?dAS}$C^BFZzMd3&ORu3u6b1u&a%gnW4I(EOT#*fRVX@ zj=Hjv*wR)(6J1pWB^l0kHf~;N6*);RcGfnA&uq+0JK1LSU+Ld<{2%8ZVGags09itc As{jB1 diff --git a/images/icon_warning_sml.gif b/images/icon_warning_sml.gif deleted file mode 100644 index ac6ad6ada39ea693ac0500810196fe551833b2d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 625 zcmZ?wbhEHb6krfwI99~a)zjYH+tJh8+1uaM2SgLPCr;{|FsXOac1bJ1)uHC+K>&~59ckkZ5d-v|2$A0(j-F^3{>(7(0`}gnuc^UfX z@x#ZDA3c8Z_|NN&Cy&7yo%%@b}sNzt0Z-eYxt-yV^f*C;fTf`1eES z-w!>1J}>_JdEuYWOa6Xd^!Lk}zhBn<{kq}rw|)P9oc;IX{NEo}|Ngl7@B5>FKhOXB zdEwvh=l_1c{P*YWzd!H({eA!M@Av;i1I2$*&PAz-C8;S2<(VZJ3hti10Sftf3W*B7 ziOCF#KUo;L80r~x7=Qp2V+`yY8tR*xTUy(i#HHHXrMkN7MWySl%=MJ(rA6DMjY2bX z(u0-cWZJ_D^HP)IBjwwzGV=?v5~Cw*Wm|eJbJMa@;-dULC8WeVqzp2WlM-S=yxk;w zTU5hiJ%ZG^dBjB8Rrm$j6kTluIQSS_WQ2shECQX()EphTT0}XuoqXM`9onu0Tx4Ka w$mp{`;N!m2?G#bv7+&QNR_PU4c>CU?Yd7!v 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 diff --git a/images/logos/build-by-maven-white.png b/images/logos/build-by-maven-white.png deleted file mode 100644 index 7d44c9c2e5742bdf8649ad282f83208f1da9b982..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2260 zcmV;_2rKuAP)4hTLUyOQ{PVbVY5&Y3g!&hN~bnR7}ZgkXUt ziC%zU0gf+&kEv>t|d$x|zXw1mS0D%1b{8z7DF%0wW-8(XBFc`A3vVI|O z^!N97baWg(eE86zLn4uA_wL=Zb@+UKU|=8sJb3V6XlSUctSl!dhm4xd=KJ^W|8h2q zR4NS%3yX+|NKQ`f?d=7Cf`Wo)&z=E5TU%REQIXYZefjbwRvsQ6zIyfQojZ3l8V#{v zv)R(q)39Vr2GBPsa+apV2%%fIZY3ln0Kl+1Y8c*(xe3X6sWFH9kH*UDDLl)ZN`}u~;f9D%P!A2LK5P2`MQl z(b3TuDUC++_U+qm01k;n!Z1u+TwGjS+}X2d^Yil+3Pn;B-~q z{Qdm_z{kf&EEb1^gw)j3R904!x}#RBj~+c578Vv16olc}xpQZGd;7k9`>@WHD_2M| z{%VB2fNVCK&1U^_rTW_bx`C@MK&%ZR^ybZ*=;&yb zN);0mV>X+~OA`|lRVtNAr7A8i#zL)DyJycHxm+$5izO0?QmM?$%p@6le0*H3R;yI1 z=;-LCrlu1oPI!8HIypHhmCA~Wig|;>WHON!GbSbmcN`jxhJ=GssnlpRR;zVzaF8J4 z>+3sJhW@0w{LH6-`(Afr<9kMWBXoSUM7Dox&JGJtojOI96z3EG z*uH)HWN?qO7x!`hzQnzLg5JL3Ui^ps%X$n4`+YK2S-yNZo>gC8kJmXUC#D?-i_a7IlwdR(Kkw#T>s)<( zJ!ZVTycREBO!{t;H9|r{F#q)FQ_`LjAsBnPnnKk2PZ;V3*7{M#@%jyBNObh|^_fg2 zd|f0I3eTTEPf=83VhUbHWgRft|{%MRRMp6H>seM7wV6&k5Vn7H0DDSDT_wn(;aaUDU zWi%QoiptK;CgqIWB$bwy78Mm?w@oI~&6_tPBO~$kExCLno}10)mX;RGM?^%-PjqOt zTFi(#=@4C7NJmxEVK7l6G0yhEp_Lq9)1fj}S-2%Mdrv$L~tStVt%xVSheDG9e5EX$6J zj8GIMm&=bIKaK;TqoYG05D0}r0!Kqb1E0?q2n1`_uAR{_f0E{OgnR$~y~Sd|+0n_# z2@6L?MsUQ^H0|QzLJoDKqobtlneyk|8`Sp{cp}PUC5RRQ^8?;2;Iss$eWk%*n3$Nr z(73v~e)3}s219#$yTM=(2n6o#?!LahxUO>?H!v`O%bZ*;$Ideh!!Qg0h{fVXix$lf i91DLtEx@rr0RIK2cl{g~?Z1Nn0000}s diff --git a/images/logos/maven-feather.png b/images/logos/maven-feather.png deleted file mode 100644 index b5ada836e9eb4af4db810f648b013933e72c8fbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3330 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 diff --git a/images/network-server.png b/images/network-server.png deleted file mode 100644 index 1d12e1938ac4d8817701a555a97b36a42413ff7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 536 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh0wlLOK8*rWOiAAEE({6J?VYlKJkA1-$YKTt zZXpn6ymYtj4+8_EfTxRNh{R>v^Lzb75+zt4q?_IE(UC6ToMFIeXrjjU_Pbcl8wEu* zmFNogJ4~&tCL!OBSWj@$7M9kE%GC+rI&-8+^}#zUfge$ z%95%FVq)d@YWpHh0*~9IeYCDS=DEjWT6&NB;?38!S{%Af^K0ULzq^XpMf{AfPW9%` z{By-F@#G`{r|bn{ZSl6`PhU_~!26>8WB9W7wxA3jxWq>uP}{$dFi` z{%E$YFs9ZZ#)XBd3yahj7HcdhP@0i0c5-Fei4|q1R+pb%U2$f0$(hxq%c@PLC-F^7 z;+vfzx~NcTNs0RMD#LrH*W5ZZ>(GMCN2iutSY3E&UD>s*_1Cu4-#;|z!_Cdtc6J?G zUUG6}>4z(;KU`e+;r#6P=Vrb?Gxgo+Deq2AczdGv?eU&>7nf}8_Wf{u{fF!8K3rS- z;o6$_*H*v3y88XKb$9o403A6wmUUi^)Rkq4C;QDWElr%4Ewvz5_U@*FYx8|>Z^)aU zBeO7H?&+SoN9z+G?W$goC%33j@%7nxua0&%tapcEij439aV6bJZW8_q7iNx>mKsHKHUXu_VbP0l+XkKAq+)H diff --git a/images/profiles/pre-release.png b/images/profiles/pre-release.png deleted file mode 100644 index d448e850cd3f885844d0c28da7dddf4457e25300..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32607 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 IO1}yIe}jHRegFUf diff --git a/images/profiles/retired.png b/images/profiles/retired.png deleted file mode 100644 index f89f6a29c6b61beafd8d2f729085fbf1d17b0e86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22003 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 diff --git a/images/profiles/sandbox.png b/images/profiles/sandbox.png deleted file mode 100644 index f88b3626761f591fefcb7408ff290b4f48ebe0d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33010 zcmeFYV|Qd-)GnMW3YKVhRGV(B%(Nk3lpLv9v_0*x9}+hfP}^Cd6M z@qvE+vy;v|7Bec=cQvJ<{@Gr8|Qo^Y7^2zXs9canPLPgB~+OYO(p7)9@x8bXMLl$NO=7mV~-#f`-BW|yF^-Z9JRRii#Yv7Cn-Vb)LqAyu2vZrW|`^Q zbQn~Gl%2-vAa+};BSfgE%%k~>f6B?Vc^o|)?Amwx7s_eSXRJf_4|0%-1#?k3f8d?$9;P)pH@ z%0*MqNqaqJCP9FkQAv^gE_d5u7J*$QB2eWc`mjz~-)vkdSY_Fb>nKqz{ml(=nl1H` z${j-sslDo2|LLnOf>Ibxe|pct=+ss<`kz222Eoc)waMXgsyX?&Gt<_d=zGy&+~-7A zF`b-lN`>rb-rF^0L>gF+;IpGWJ?3S&+>VJKyDx3PY9?oj_g&4e{562|jfE!GvJI|E5KvThis^SS zDOc#Bh`x~^#;Al!W6eY*dIX1GNc!nWGBwhxOtt(87f{V=OFxdR3|x5czB--|ybqi) zaes%^$LpPSVZzC0cRPTu_0?xM!(Jy5$ZZKs;$JtZ{$^*?9wVqxx$erOOAOh8TDh1v z{d;lq_#gn$v*-=Bf&yWwzrcVEtT6D7(%LQ%5Qv!nU62r&*|-o8q!2RVBI=%y=YDX8 zRGMxNDp!?Tf2=*a^gZ^2=|HWID9vP$u?jTM0BGr3I2KAWNO>7r_?5&NJKKE(rj^#m z;6L6mEfqE1SBIb7>@HG8Wi-|9nmXUCra9@mxLuBaUPaw?xm?mYVOknbqOm|DL5lUF zX_-Rr;duFHZT;UH%FwZi=cs-EXGuzp#v&RWmC*Oa2#5;^4qbZ#xRgSAzfDHWD7Zjq#pIt;GL%42Vm%y8VA13m29rH4MeVBne^c|6iiO zu@Bh)c^ejJV*n&YamEv_E&Bgbk(7Sm{*M}XiG~T@W@vE4Fy?=$u!z?8{C5cOGAKj1 z7f44f2&)_VKQ9*^h@Sk8{J+Epp#hT8tT(JHEfe#4pH74DOq!kw}+T3J|4Y-k!NzTrqzZn~gsbkA>i3f}LBs%SxIauWD zVtNM$c^Y#)7sH2NUQ2BDB~LteCGg5Cl4j#kqLgHk20I1D_$+gw3{H2U${g`gV^+@ zzNXMuaFl}IeqgY(6`zWcqy}^MXw!a7_~P&fAWBNt-D$7Lf>p`@%wIs1jZhfAeqY2`@WF0N5aX{~ICl*Al@xT^k4tor;!xeJS3}^(j6~cpS&&AjMFB39>2q8_Q04TsuHX zM{hGO>i+i7GKaJmJ@8BQ1rlzweflkjvbeP08%`{VmruUWnsp18j1l&fs|>9D=jZ?< zyHblkUn<@YYl#BNkfmBy0xx^NLwf|?$E*ygLm z)Iw41$1rATYn7xVRgRg5T~3N(KVY+h8CXzUqC?f4GiL@yBJyq5wCn10QV5 zmt6mLbv@St^B)i{e`}|-jX*B7d2%%BxA7j*B*s7g9w-OQPbRDUU_8ObmXz&)Iudx` zM7ARCYb^Lr7E#fGRuUZ3O#;uw92re=;vyyp^YuTwY&fHWgW;f8H(!e zutw>|z0J@ieKGJeI#o!*B9~0Uk;M@bl&jGQaW5`*BZG}&K-s1BXD6OWHQ@E4{%FmH zaXQDJ{Pi;8*ZBj{5?2aY?KTA(S4-T(gDeF=P4}`(N%9Q?9m$cg=UP-|Y+AEQV6PA{ z*hNeW7f2-1EbtL(`?-sHk7Tt-BM4gi)zQMjzFuwwEiZ;pWK@F;W{44*av6;I(nDjm zdp0`f+XvUl_FMQ=y4Q7|Dl9V9<0!>_7Y2_0MHJj-u5ItHON4FkKYVW_6#Ca7<~O6E zP*aP~ZCxB!FqI#7@F$F_9e z?&KK}`&0&W7B(za|KxIPKCce^Vd@n2P9&)bxHGrvyz;N`K0Y)Y4qKdgaK8U@j0x#c%U+g4$#O#z?0V}k!?hRDXXaXQ}YGs7F-1l87)$ZG!rdF(`7ybs17u1LqpCA8?HC$g-mKpX!)SgQUkRx^%~!(QeNgv;X3F{*$b>hXO4TF;H34e&Oq>-w88mDXR<} zbBd~|4z1^zE|nl1yfYp?I%LR+eH*8gY;5K4wp~f8g6PK{C0UierA=LXAN|<(jPOR> z^7ZU+;aG~DP==<$*<50)rvZ|Z!=P8Q#!6i|(SyFUj+l_76Mp}QnevR1| zpf}$j2T=tJXGDgt?~ePS);oWmh~SYBriM<)kMW;~8yQ+U+k-A?H-tKeet{xh85WoA z9TZRnX`47U3##8{;7Wi~gz>dMPq&PXHo@%eFEg}Zf&PLC>D! zqLd6J_#~o`Ca#(gK1xX2QPwp{`Mec&h_=8{QE+& zs2fbZb2u*@ZTCL}~|!8Aeg;jD~H@K{comA5 z9{GIaZy8hOZM1YLXm#^<6^bq&N7`t{*adMlzK0W-7FWt)B-KG;{_R0OXe~NnMq!ox zGaGw|)l=Uvm1>XXEhKAy-udZYtf0fqA9RH<^ZwM0KIi|oyT0^D0^NTw_q^s^(erG6 zA|?aVyb$e7C$g4DzVMaY=mZZQH2oX*<(i(F!ze*ol1ap042L(}vAq)fRNRzeK4sSW7`B#-J|{|MvyTs84GiQDq-ncG z>%Q4~EyjLc8HR)9IM(a?WzlQ3Yb!GqVjgnzGHrK~JDk>BKkno1JK+kx>JF?N zuIIJuKdbfiPflIAjpvii)C8#~U-|oWVaz#md}sPcV-eao16+Ul4~{@gO33u$WY|p$ zF(dQP?cvk@qDUm>2zsYJXfzVE(T97~52(G$y*LKGh z9NI%;k!m#1QT9^m>s{kyNn=IU28NyXek7{|AX%H5Nb_>QD%iGhM|ixPF3O4zT-dRp zkSi+7*S;Pe&(|4}RG`lVi`YOB0A6u}gz1enF43*R8$>8n*O4gbxqGTDi0-NBMzqoY zP}jD(lvwGY=aBT<;pnJg1RI=abF*?CwFTU13k=*utgj`G8=84G9zL$MNDb4_RN5s+ zS)?WY+*ZW#m6DW3M5$9S1TqK!AlnRo>qA>FZ8}%BJKF@(|88cZ_qgF#OnN%N0xBdp z7V#h^hy)%0g377c4zg{62l}TvE{C5L(g$}5X^x*-d07l-qw0I3f0wl|T}jDr>iQ>Z_{0WY8|jEP4~UEizZfXF4*BHqLRLHiNafW1HLCwFC# z>k^J;b&ZJq4!^tYje3Ej>#I=;w?B#@diJjdqwiqsNZHQSOvaK2Y;`#N?I$n2?lLU{ zbvuo0yZXC0vF=isuIsPpSOnKVX>riD;_GZok`Rme2z`w-(cH(s9S^`%7KWjFQ3zm+ z8uD1|tqar2i7(Gb|0~Ed9jj;oFqXJ~M{Gbt!IL@|ikLmyfpWKK>5%~Y=kyoCt4-dh z1Vhr}$4k_)r9oaTGz|NX+CZ{;^*;y;k-z<~49<9UgjeKDZR+afDT=k8DQ$_udl`VC zJ!y~2+|u91#aspNQxSY7u^gv(Rh?g~{59-v`RWr^7*~4EE{>?x#|8_wtV8%DZE&FkQR< zWE{R`%sA#a8h44i5+Bl5u!Kr=*CJsIxVZD7qv29fz{wQ=|VdrB^k<_Hz*rE+S0k6Tm&0U3KcE)ZXeKDENNpbcGpC;zra- z7rnpBN@xG%TTr!*U%`Wz(DS?Z*bI}$q1B0;4pyX?h}L&HDbX3uesz9NpCdN0ss?8= z{#mW)AO)d;LH%BdzWHJIJ=X~&`n9*SQxaB@x6O?V4V?@RTcmX^luCI%bPydCk4CTC zml=AVOP(CkdKVKL`540yOt3=y58(TUo3IHBYRFjW4|qE@ok zDH~{mLGm?MJb27K4OWyeMVy{X^Wl zvBA+`tp^DR`|tYyzyQN7bYQ?A;xIMgeZNPUKYovYXywfpB#f;=R{C#zP^h!Dop=zyssp!r}KNTtfZnrR9OBcl-X0nQ4e#o+oi5_ z$|6r~GANTEE4Qh!d5rAy#%)ZbNgFx)uxrNqZP)lz^C_lRSuSSb{lk5M-y2JiU_Ud7 z{4o?W@H1?lNWj<{N6v*+Qd;iLrQtiX8rUDsz|(|yo9g7##VxB<{w_YBlPkVvbok{; zPmO{O5EOuQP%C%0TP61!75%oNd{u%bE0flEYCRS<<}eflSD$4qW{nSR#VK?HJ>l6h zy0dhV9LSDg%`Ypv=5i~g2iVL_`UPR$=6QU3v3;avLaMHjQ{CUbScQ{m;hc)=B~cBO zQ(=Uw(RGwuhN!lTJW@$Szxf*C#q>EjavGf08tDi9!CIe1)rLe-O!Zv1T9{4%Fv2i$ z4+-zMN?M8_R`swo7abKk#G?E5m@QL)5`;G?aB%w@J#Wiyz2rG5qU7$Eg;}D^_g&Nc zUs$xlH*Zg*&g&wG<5H~MY1g@OQdZ%$uhlK)ZyX<|!h9sseE$V@Rg(o2w8mZMcYddmd&qCF3c>9n}m1q7T`>F%sE` zwVzsqb3nQ;LfE?Vx01c^K0t13l>ZWG3P1rOV-0(>(P(ZmdhW)^Doz`$h}F=h4ylwi z6iZel!|xW*mg264q*jUFsfRO&BmV)Mjb>~@4ZqLhv$@oK9MF^;G^%~4r7X>!x;z&N{bC1n|;SCSB378oaaGx-Z@C0c9V5ygM5x z*a_v?e-O8yn*(nFK*u4j4D2qz(a^;A%Eqh#&uN-Qn&ap|^f|qxdVg?iPm1=%o+E5= zcc$~WB;EDkV9%JYfc|leMqx6ONQBrP&z@m;#P+4;GkJ<8FPXCRfoyk|L?&Dj2B4-6 zm~h{h?jAqL`D$o=Dngj6ipik+G75<+8Q-_CS5ISu3)i!n2)v zG+i_OOx=6!2Z}qxix_SMC<4;1ywgodToc`A{hX%R&-n$WF1y_`ZrYf5Vix+GimvXF z`83&NYt!|F-`-uATFPLwMlL}<0VfWjjXl0|&C?PRq_!IKjqE^>ZTB&;TUO~SXM?jQ zDToSLMrE}>nEkY$j)9E!8989!etF;bSX+jHAM0{NsjAz&kGDQ~2@4;?is>KDOM!220nZ5QmZEFE9j znUq50-AK@m=TWgsThjq9D$kZ_R;GGsF{S>|qOgumm+ zWHrGl4bz9Zyt&)X199HKJS}JoXspA55I)e(MA_RoeewBu!#9_Vo}z*y^Tg4fKWI}` z>S~1#7}k`5Dyd04*NA!P!7bgKe5`!Q{a0~9PeF}+2Wfu={z)gh-iK@IP&=P3Zo8%+ zakuOVcFxb_iSxTTkd}H*m-to{sm*DiC&ZKhWn}SON~R6{6xk6O-QtDIQgu#x zo9$i%8VW1vzdig`B-WyU_dCTu=1Fr~w}EC*8_*ZCgu(^Pf)g?*)Ar#zV@uZ~Lcgzx zLn@+Ws_{C2Do1FXw>R(A9L8SNYet^RjQWaeZJ$&Q8ZBr{e?ZKT$EjZLE`!2br(PW6R~peLEexucp_v; zhIQ}fO1AP6clR^>)!!mcttJ@gvEm9$lhLi6n0NR=jG+()xE(jih>SpmpJToC^kaBVk9KjJLi&467s_Dc1I% zxHWh}%)hckS7k8H#pQp7{5*cD!ZUXhn^v1kXtw*^wJ!@W3$({_QzThVp-0FuVbr!C zzbW?B4E{qB$g2t#Y?W>>P^w8b2Ta;~PG>tz0Q)!us!8WqEp1#Ig%9X}eH7fug`kir z>=}H#RGrs%5?P_C&LzJic719WP|9m|LD&t6aCjJO>s*V_OGd5{Yw!0TCq~2a2%3GH z$Zr-IOH9+4V0F8LE=F$1qu4=o#emqX&PsZXwXz7`r6y9+yevwX3!Iq%YF?JFjS%J& z1~yADMrjiQ*!uAIlGQ?4IR}7|-;V=-HvCYSUAZR<1@g4}Hlu4@kijc^UF0dF4eyS{T2&GjbfhXY3ZB_iccZi%FL zy1lglp5t0C@{h_(A|FyZ!rSL*xq+@nSqee{4v|WOodi=sSd0SghTGqjl*={U_^cPH zEhquT3lUun8tTg~(>5&3m_1(%JcG*8ZYL&2+$7)1Vr?BBIKeD@#dpebSS8(oW(Xs& z`QQ-k^~i9?Jb=OGQeCkz)+SG$^Cj&)OIJ$|tWq;EGL5G*S=O za096MlEX3^H@8V>W2o`(7LmCTLQ}%e>WxKI2R|>Rn(ZfAAgMZA@Qlfs@3R>*m`(8h zP)fQ@2vOom*!Wb{tBuV5Qm-19k$sycvGUWU3UhER=d6QRRHBvRGMDeO%*+gIz^&i-wPwjQuc4BhdwLs!#OaS<6L;{(0p6l+6C_ zmhUS8BXCCEkl@mjG`Tx`hBQ|#7SyMo9pz*b6GNEjxahqV2u)v&@^36W|hEr zowp|%c|#wP5AR?JCvaO6F`OmV+2^Q#-W$j)LBjo&{>S$RcDIR)qV<^W7!!WDxQ&sO zhTs=Lu4Mg;RLQ}D2kkQt@(|-tlvgRjX>aE@T7}#|_5xDFpC&36t472F@cs2hc74J1R|3_5jM=aACfb5W=fz_UFI-u6isI%3s1M_*Pcf)_OrdgFliK z#)5ssO?nLDR9?cJOag77rcPhD?1oePt7$DIkdDmeovznMrFXU1gfO~en@u%r5ILd0 zKtj?0=>lKR2uxq61A^Ey*G-`#u8;^ByWX5D{HHspHfwf%1Mq_R>UoX+I9X;^4&knM ze?lo7ijfy$2GQi-Q2r>OJ4j31;mtv5z&*uLi5cTP!j1cs5xHzqu~d;K7_?||V4(xT zUvB8_j|%r-<)4d@zKQkc+U&Y)Y3Tb#^KL)f|Le=5J@T zb8VC>cH)Ny-n~p}AS=qJ%bF^|gh^A+bM^2trEtg0fKM{&XPrt?Mq%L&<5Y??UkLEB zs_ofadqmGgOA~Kg%~e%59K=rk^<(#}Ewaks>p?|~T zc21MJtghNYsFrS06-Y(Fd2#l|GhEc=8X~dDu?kol^B?2@n^D&Ho0YvUh(UpRwSimJ zx=q2B(=p7}wdU4dc=e(Nv=TIgHQH?!?5J%{q||0;+ka0mwgBALxgO9KLV{5<3fWd} zf7`2xZCqI#@u6h;P;sgH8vD$$6fvu^)V&VV>Q8Jw5#Whn7%|YYQKSRu9Z@)4zUDg> z#JFPXRdbUq6FqWNJ2CKRERdZ+vb%JoN{xldpGFIKf9PPNW^8Bpy2XMHd}gSfFpUCj zzD*RJMn!nxD(kvlwy8!h$T11Z9LE->UG^y?EaI5AktGUy80F`P%4+z$wh2za}S8_F3Ysfe4rP88*%O4%`*$8Fm z9h_Kl5_Qz!Z)&u1DHc&NfrmE zv}OEloBw)A^y1j76O~si6sB@=LJ!YT_EY}!n2S;kCv^4J2#)&J_ifWkWI42smeR`K zM%?@aHlwBd2bCy2`7cLbYl8{XUVpQzHUtaq(duwd;$=28g2sn^l9YRc_ce~-*|zt) zUt~Ozy=fvaT%64asaY$|?;e!?rRu_eb*1KsfaH$BK=iN6VygKeV$ayPXS&OBzTKLD z{%VD;M`7RuY#$GW`M9}?P(1fkmspGu64qnG%UzxrV0GYrRy%4S3DL2j%!r*Wq#>Be zsi?HXDqX8@k;XtuuP^g_s2=S7tX6$fo0B#rA%c}r*K?Fhg~MvgdiPsi&r=kIH7;ZB z&%;dkk&PvHW&5J*yd94Q2_4_uNtDW9fENCLEY#Qlv#g%(i;GuzNPv4zriWdDiA&|@ z%SvIEZH>6le>K4@42*#4UwG`;T_i|JaRh`dppHz7R->v3*U*}v zy^|~82%}&p;cfgd41BgU2hP`bZ&CV8SO(0V0Q?N8UfU|j?4~Wmj~Pd1 zCVZq9Qf$2$3$3cb4FpOJ1^FQH@JRc?zcXXP3Kk!0X&J&_1#ql`O(dA6^2(jWrzZU` zb!KH~DhPP$GUuf2=@SP~O8L2d=I^jCP-}Kyb*V<~d2emxYR@O_rLyu+AMIu0sc!_T z;!Hkn#z1JA`Ud_?3t{~#ENNBl`sZkg!wku%;T)}&r`YT4HyC<}#I{r87aO;e|vz&(fDnjQNn&{S-A* z$5(eerO0JMr^_}&Up-|=q&}o5M!Qk4C-&0I${aKt9~T+6)d(@8P`M>(BE2u%$D2-3 zvQDg?H}0%^_ANB$#63Mv2DApN-OUJYk$2v7ihM`3_BoY7+bM1#Iko_GgR7K8gLhmt zLLdc0X8M9zR+bD(Of+dry_RrCm`xN*TV01%5jj_Rq=fP#EtttVKs-ez9ig~|PEy3i z$Mrl1xYJIp`P)~3qO@x7eg9e2mt+2k@yP~q^G+tgXUb`liKH(tyjKlYXoaX*^F*m2 zX#`5-H!x4GE^+h|RVazfCgzHN?xIVPPwBgpm(tD$aGbpL}6?yu2zP zz>N!T#ibv*Z+oS*o^FFWBQr7#IQ;Pbr|lYRuHlkquPu`PtM@Dk*o4e>39 zc0uBMMt}u%VMo4vZTaa|-&pCuSa8*>U)B8f$lFzcv`fWv@{r<~Fy^5SW^h2zH^HKe zb7TL9)TJHpz%FoqwD*CC&mI4$MdHZ;m`FlMXrH_+9PfVoF_hTvx&Gj zIiJM!L z2v)XNX=)LM6=jtCKpbUI%;owE8kAQvzFucFuU}Om7p;VC4Bh9SzcI!gi{Op6CnBmI-Th$hqWu=&rG2+L zL{rqrI|dvaxy5kR=efQTD$5Nr^4;_=eM8wjD*54!HD>AXSRZUcLT~uHc)q`}QBDoE zj{BA1Kdie>)4lOXfDyX!wdZ2~pZKkz30}lp4ATMwobT0yn32)+nQgrKQ+rRhex|S` z(P$ah!VEBtRzIwhzeS}QMl|ch<7=YjV$RL=>e{+LGbc~0lIU=-WhTPDyK^GRCE5bh zsaWk9iX~@`(zj|e5@~@xKF0@u#$LbcCLzCNYpI`;5nvS^MEm%v#8&^7_iqi zt1fCRB>Xb z9fgGthdLQEB}8)XJ2msWIMkTB55HTnfv_pfyp;-7jDK$x5%s=F#Ky>gYcZd6Lx#uX zZ_BL-Nt*M-$goT0{pX8A=3-XAKR#=QhRsxx+&1gxwG+`G^4mkT);mdp;W0| zE*Wbcp+canu+iig4Q}S0s>;IEOu!3`+nnbp%E5^^E>==3Oo5KFVTqp3n#Qr(Y~uMWGlu=K#T^U z@E*eI%8=c3?Tw#}eYYpaaiFli4*#Qz3OSmnq!odLR>chV zUunAZt>8%+Gpgj-T#{%dQ3Di~Fx;|u%c}<^@JPqQ^t9jVIiEa}Kuv|%2m9nWvhkei z63aAeuUZqn6toJokrw@2)y62(W^^npAQ;{_DiS}GOHM=?2RKR^TdE|B^f1w@Jx4}c zeoP44{Qh=4_tc>q%CtQjZ1z2W--`-S`kb{@@6Pr&l9fwzVt1qyFK8C)8J3W^RS+X; z9sf$LQdRHzC6PHmX3~}cx)tx;s=fF@Vh(}(q3rb@dUK&5=rHdEW${|;YYt=VUFvbG z0m-ycq828`Z1aW>Ga+-h-&#nZ1K!e)n3p6Tt-NpV?ntO)1h^ z{|TJZ*mL6A=Om)?oPbLb>R*r5Zs5I?kJESIWpVo6N3@m% z(3X04oM{ElJM+_gq>^nCbvlU0TM%fTBpXTGZ?tYQwzoSDpvM~YNb&GHx zN+KVb?RXeKy9R4yeNSjfm~g1_rFgdDw`|xKE?Z?at<&+e(Q!XIy|#pTzY2)sO4?wS zx9YrK4cdK8$nYxKU1_H(Rk`;lt~z9Odq&-9c(Y|h=}XG;K>Ld8P%JzC(v;v1U0rF$ ze;XVv&KT5~ovLyIdj{QHCmM0+C;79879nJ&_{U#U?ry0#g_P#d`6W_vZH(qTmY?`z z*GVHgK0qDCM0m`WOeJbkWYMrcb6nh6j^+15M;e#IA<%1kwO;wP*nm8Jl16fO%23co z1i^Yz1!Ok_{(UE9GIVn%EKr>5Aib0{ThfIrVsGiwB$%vKC=9X;PI~UqNIN7&Nzz*0yL__ePC^~w&52GyP%L?v@&#kdXkXrQ?C>oXp-)xg zz(5uDAda>}q{-JL;o3Xi=GyCJ#5WN(z%N#=a*VS*ZRF#JDKGF0hj}?wUkD1Z2gB zUYMLUqLvhK-21j))!jwY{|^5P@EHtra}oq?(;$?P>dig29u=Hx9K5?9^m}yiL|Av; zDKht_fi`A-%Q|Xk`i|3ie{h7gmZF$kAq8oJjcg`1aYx$?Eze`v>3kWcCp) zLO(fhALGE@B_4`c#dAx4x2Y2Cfm!*wnPPfF61qy(I@9{A?-Vb-@(Mc_jh|T>;lC3l ztFdz{(JzRqw}DnQ2u&gSpW|-C+F>+@HlBHH9N$)f*@s?eYWKBUGtJ=M#!%{dG_o7? zDWP~y>s6=hLue-v!Jt~yENhYcg#P`6bm|Po0Ut`6uVm(CvIv9}{gdbk9Y;AAtsdw- z?@e^nEL3b4b5s0R*HfqY1&6tj7(_UFv?q@27A|?3gR~DzXc?G*`OiH5vXLrqJAN-v z8EuaQhHO$rA>bv&_U-XA@gd@)DwvA^v|%IkidUT~%T`Fb@P(|AH#~FNadRFhU>90~ zGlwb&L_yo~V9R_ISRBFp{SS>`uuTo_p{IG zWLK&|n-Sp3dB=T;o#)tTI^Y%fi`Y_Up9hpAjZs^spPewP9b$J2I^*%=oyIIRn&o?qe~Ia!js(5XKN0QMT~vBJI>C=)Y&(Vy zbKnHbe?u?9$@i;e;HD+B`LrxW#LY??BKE-bbo*t#$|oKL74GQ6BHJKpugeebVh?r&RRL$COhM=!X=- zJE{G7Ox9DLv zE=4&-BsVwNY5E#*G(v9^hA&41lCWV;z_(8BE}4i?;V&VV3Ryc9OMiKx6CHU-KX33n zQBg?Q#f)XZ(;I608*j^q#yahK;bi*o>IN`IvTeimobcBGvz-7Lf-!Ty+ z%?d5>#QlfQSv61DQxnpnPhSy?MK)8V;5DSW%Qxk)#xtP?(%AV8Cjp<;mv<8BPXdSX zN4z1{Nd>=}9ww{E@8b~YCj~+rMdHOU)?&i8zL|1g`PvjXH~Z8_V^?9M1II)2DWfay zUQ5}|gBFd`cK(V)>@19hV?RO9!}XUmiy+6DkEp-di?vgD@1RFG&U?(n;##D=9&yw6 zExcWN)DvYQPPb|aBpiKPguU6pWnl<@cARWlR-|T*!(|r`TrOUt9L@1;>@_mw$LM?L zd`bp!V;=QeTb2yb%!3mBm^)AO(H$&mPHpv_^f%m$0j=g~Xo(y*{do-Y!YF;1e-mh+tfx3LymF zjmcTu_&fIOuWUn%hT@^~a7~v`aMB6F5PRY>=f&*e9bBJmLP2|bZf{42c0Nn790qCh>t@{P|!^V2H z6X7o~xqn!?EoCX_dR>0HCr7K>wiH|E6f<=A z53>>cJ73)tg9x5sMkZ*dY;g)8e(xVmDB)wYwT0B7)dB99fT zVVe?^kmeIP&zjQr)MqDF9+(;K#=0a;*Uy+_L*><)i;nqr_06+!XxICdBBA18H!0&0 zH$YXnA@kHwuAyx8uNNjv2dMunayfnn*I_}@0zxQ6lm+7@Ki&Mk^w|+cI>||t1BRNc zwuvaCwsSD`d9z(jnQRFi`eE=M$WbY({^Q#Y1qsR==FRF!h8Ml#*+BpOx%GM+H+j_g zdu9mHmifF3JY;yqw-AN6SsA}t! zI5;wR7>S_HQ&~;}UL!(qLtrD-W87xa&#b6rueefnYu$-DNr1D-UYND;LMUv((80id z9I>R zh^mo%zCrl^+WQKHxRzjBWN;hY-66QUySqEVgF|q4cL?qlEWzD1xCVmT;7%au9nO1y zaqkcG?yfHBs#>-7{)$E;&69v(Nc#(}+4|9h5!!+wli?biX$%$q&%-%88>v+|(whC# zCl&JbF|qS*a@LuT@nVibZbJYR))259D-Ekpsd7)_cA=n(kq3bm7r$1=$hTJ8xh%%)DB0~}!3faVvB05{SS}5jry45A;x>E)6e)&fQyc@Lei?=@Joon=nMIImzDIeH& zh}!Gm>MIjMS;cG9=Jt7Q7J2B(K(^K=uUFd(9)y;wA#A@F75p4!rtdbzl>!Ne!aWS( zrR*g5eb2S4n-%}u(~HDY@TpQ!v{T-sQQxTjS27g+*w;ug!}sI8Rcr~<9k5F4^Ex~{ zCquhJVi=9xx1ekqC^A%ID;33S?&elvc<-hZD)FjES7Tr2h=ehPTZ)7U7!BB)o}BiR zi)v+i^nMQ6f5mCN_{jP#Jq9VeM7t(X@--Br};U~?m}T}t%GvC236o7YyIAzn@ zVKgwfW(buW1PO}|XWzz3*cbnV>XvzED0(qmT?>Y)_->y}wdK*5bEF_anc#mWHAyLT673{rerOzW^?m64%s5q0%-Sni;jkO%z zEl?w5CugIIsaJhAc9^Hj9~asI=!G^?ER9)l*qe7b2QfB}6Zbxrac%^3#x*tD->=U9 zVjkAZyPSxB?c_Q_dNzaq#15_*#=by)$~;at^lKzAYPVN4sYHj&rHpz4K?>c@)cS1s zRup(kV(tRduoeZ~s=HrNSKmrV$yHl6!5DiF#4i}>uwmk&saarXmlVGlPU$npo{yKw zFw;o!Hzs&tm~FF#Zz)K!bzdo`!xMzpI7kQ9M+%q7hwfQLHI=@$mAlN~DFNYh;DTiy_nWa)W4we_rGYhgzO zXqZO`p0RTiUwj?mpc2adz2>Y-nwWy5_g&i?Y6bT#PKkh+IN1@fJz^aes`Bba4g?(m z=MmWmp+<*$$xfjreNs_j*FRlYtb3JX58!LUa*AZ6Ir}1ADhzk`PJ3pZMwEJU| zOAp6b8LGnJnpYzFD9EQIza$Kt@w*lngHl)*TCt2x)PzB;V=q{hAadTOQooTgE z`e`GK5X7l@;&|3p>Ps`Cc*(&dMK)3#K_h%}@@K8Dks{)AT`Q#oY+O}w95OpxFLW+*Plp!CV|PsasKmq*$+f1xTI(JZ{oi;uF)D|HRSS)lHr*RX zAZ(Rr{$3+Qy<$+TgLALP3iYa06fD5a3#&w1{m82#}OAzDLbN}yijhoN9g%-~M{75!6; z)8i+V2I#sWXkLvX3(<>fr%bKc7`)?pY_+e0g8Kk=C94uI<%Q$NO{+$6NsKE{k@Qle zTLo&a8FgrqVY_2K>9s>te?=TRA`g$#R?9g-4i+!o_KPh9iCs4##R8(4@OB^Du`si< zyR+8k^dx5$1ZYc6s0x4`)8OoY&52vNw4F>9UV$FHSGlw~TI#pD#AihG+*Yf&sXkL6 zx&bXz>~a5C7UPJ{TzV%WDiC|jtEjoS0Vm=7=~Mz-I*StfAhfxXh~A(MhavyzI%p_` zd)5L+s=lCsXqdZ{{+yz)*!d;Xnq&b`+v`T%#fzeOK14)G=g2c`iGu)ysbk6Q$B@Tb z2&gLn!+9ZG}6TUT*3Jj8fuMG2ntlHJrJ*e+*JA}?Ys zuSdO~;jIl)EyK1=sC>&9zjDpLV&%D~pzhcHK_NKcIaG5iSLv#)ERsZ%)@ftio0R|$ z05@Ax41!p%JS9Mh`KQpg*0KcXYfjlySRT6nG55*xxWfnS*Jk5YfwosW#eo%TP2 z^7lGL27Qrya~5@JcuqJ`jf>i2v^3YUV1bqbqAY*ST7o%& zN{4IEs>P7wV&rk(=0r!ez919{dnK?boI8uCm|DS>j>?75Ecjf$%3~RuI6)fn+@7I` zYD~y*J7#J}Q7uC+tq<(^I$?16zvJJNoBdS}dsmMm3{DzE} z06kv&F;;MQx6s9A)z{ZKzVi)bU?HZhjvx(W%C2v9pe*TMslK1T=Z%j!WH;y))BFCd z-Q}#69C!*(X1ehz!nmAiclu`qJ`BMU7=DoT9>*qv3H*%}24h`7{V{EPhcv{;#Ne8@ zb6Rag9!bn$RxeGVg*bO5xMRI>4>|d|1|BHG506%uDW!O~{E@%J>VN%~@c!?|GPXJJ zY=~}suvttrv~(m=#*zr`EnGHL17)W1ys~92q`GM`f2zH!ZqWL`uG76B8KnrLSMG(xX?) za&>ROZOmgo*Ft!|9=;|D`_pp4Hu#X{^{>h;QCRtc9Str*aLn7ZL=ADe-j=8$I@(qw z@cUwDuJbDIR~PDG$^xCDL=ZkJK_mzHp^4kE`#Mqeoai3{hs`RFpr1QdoAI~VJ5SO= zl*KKu#L(H;;E^B=K=aY`yT{L~l@No3@u$825pWsl61`&~%MHfea0a(!KfN5NZKX+I}! z01aNETOmvHPn4~Hb?za^S&?7NbJx&7;ii$819XUI>0+l<0S}$cfQJN=S478kUSDxV zbt1z;ErXktDmnR`t0aJqQ}&v!MHIas4dIBS>k`{t5soWxxnk4hsLym`&f> z;2J<5{_NA?lphc58_YTn>?lP!z5|ab%jP8(`@TDTok;ixfXf2T;#F3EWK>aEd61Iq>)CE zzeo8(m5TtFIQc_wi4|9A)uYyCrxSQqqVBn@7kpfY3DP61d#<+o(y_XYo`PWbLyUXT za@VZ7WW``O9M>xW{Ro#Pcbl!J&-gB1MRRh(D6x&%2jud8e3i}E`NB@kRWES3i&W6{ zI1hgFFM=!N`X>e3f;C$ReyGDYTlZuB%dhLV3{)CGG)<`B2}LA#an+*n1T`3Pgn?(z zt;E5HwXF?`b7zFaLGJ{C-w$|wrxN5frGWbGv=no_ht-*BMftN>zAD@6TsnmQ{A4|} zqt%RPb&N>Aom=B}gqnzhiB@vyYEW6PEYzey?ziXoo`7{^uIW+Nz3ACu)b0z$P4CQ0 z(*~G}3xUAEPS6l*#2FHvUNh-k1$Qcph6y%j3mDD1fR1fpjsw%mD)&QMZLj;mt{f)6 zbxxpuyGf%tO~7bk72IYuZXk{5WB&kOee+B5{TbgtW;v-m=>OnNZ%qboTRb6jElCfD z50m^ROh3tuYvGYCDvmN~0oR`^n`s;HTo4TyC$dM9hy(#< z7=OW)edDYpXaiOl(n9XTb0?3p!{*V^*kXso^qf80r3&Tq+v zvIKQie8Ai5ha!`1Wz2S;;L6Q^s)W-6y6kyYvf8QPjJdlFj6cbgE$Gx-`nCdv*CgK%{$`Re9j7!k_EdPIT<=EVt&I}*#oKzZcTw)=$T#!KVRI7$a}|&=wvrwv z78!wOwZAY!Td+GBp}7vv#U|+0&>{>{Qu5O}JK8b(pw)Xg*r=YELNJwJ{!rGt3Rqn zaXVoLNfAC_g+Ti(~?e)g8Gf>5!yo=fz0C@ z>n6)Ok`2CnakS$?Yn_ak=%T{FH-gl;I&cb!Zu-nUJX34Lmd&2j%?8LI1*c=bE;-_R zC~4vSca*=F5l)-y@;aJZYO;$$ERntxrjhN5tA2;~C&rf~<#fmPrx%nH9~9aEHaN$Z zk0ajtpgg$r44f_8{kE9qno8+=HpG0t_O=l!;YB*}+kr_;dl6lrKNa1YJW0oE$TPs2>#6%+r!Vm@JYUdX?m?kUBB;BDJRuP9*DR;4s#t=<}lf>H0l- zag>RnN-ECY2_^X8qoL^fkIH&AGT_$;j~}AA^wR=$Hi#bU5E+rFeV;<|>0N7EUQw)_ zHbhm5^{_DMvo^p^LfP4^>-r6HT(?nQzA)UQe_RwK7gi3qE&5xMq^&N$yeL3S)*ROi zR~dwAkLWkWm$F?t`**fLs}T`1rVe_Ko!pL@lOW!$SPtEO)@55O69p7GDSAFpP=uVbv$uW~zE z4bDlSvLn4V2b~_UMiv0BHj}HyPcv*u&Gvh+_>#l(qR(XG)U@NkNn>ms<7mm!NL%&g zHmdysXf?W`wsvBA^1>!)7nyIB0EOEAZ)n}NrXitl+YswNeOD-5=x6kEk5S!*Eevts zh~QQa$WPlYknC5s+ElukP%I92H=P3u?jSKo{>`2ymhwhJF2^Hqc_L&JYG8x$fCnqY zUtDUwIlJkjkDiJrbP+pCI6d7vv3h4?03Vdjgy!#*{N0ILt>DihKO*1)n$dW82uVm1 zWZj?lhrlv?dS5)!)Q}Y9vP=_Z#`-St-YU4Q?Nt%^J%4KC_f|ynMC|hWH z>9@h~Dsj%2!gu5;wey+Y?aw=Zp;h=$J%U_p2ow$FnJC+vBu_D2m>QGSpD|VB*G{ym zvH8qY&ME0R6gYTn^vQuq7}0fb9Bh$9Epxs8o%=iMbaNY^r&o`TA6__V{`)zly*T_CSzt!pqlj$Q6`8!`gFXcMVC^J2ANt;)>F_Ug*@@-#zzTD-3y|N-JGGI&L<-k}P|u z1_qdm^-CVg3|UqZ_&XttZX3=yYb((W=g^;Uq}6{2(F-akWaIKOV%yDuQ_RC@gW^^8 z$DsPw8k+wS9|VclH(6%+oqR}?NU1x15?>;;DRKG5wnC+{+Ta#wjl9-?$?$*d+vm$j zw`3sog*=XSGsfIRYe{!>5PrP1_3iSQ$BEAm=C{m{Th0tt(!pnvwt>XGE?N-N=y-Nw z;N-238{pzHc_uOk+*zAX_l4`i_0}GpKUs{CXKvT67IUZ>xBQ@=EvGbf0nf_nx$3O9 z`Z4O{RLy2&M*&YXQ~yn%F%^>+?dqR?g zAB;w(GHC&)O=f4!AJki5oMYNM6dk;O@Z^^!O6CfZtuZ)L*Wzu(NVyuK5LR5~aR(B$ ztEJKiR_~3@5oAF8!zS&Ntce7RAPsRDVe>Nc4ZpABAJ)zv<+FB4@^3#z8Q6Hu&Zk0S z%AFa!?n&R!9jA=R1$jg;^VC!Mko&(^6}c7Vp^1Dl=zSKVlAIb)&Ch8e)QBFXE#n35 z5$yMrJadl@?H}Q=czoTY=Mrg0KlZy>6dXA?5mHK9L#poxJxB_CEcQ8a=`wYwFL~gY z@MtY?=6L`Ezq$=t&ts!mdzCc;JCzkC=mGSq)4R8!k6skCf zgNuUev}*eyzkH z-fnk&CMdX|UDHLE_+ubp8u)=7tMb1|N(*Kkwy)K?OD&K^3lXGmXiVT0*A@rj6!_g> z={U+@?40{hVb}A4THY?-<%kVaY+cQ*9L`m$a)SoF;WhIK)l}iaMuOCHXPo04y?!1H zgy*8dGK`bEYq@PZ*>Dh#i34qPiGo+yW&i;oiC^U7yaST}vEy$kK3h^E8WiLy$g=YE z2iRmA@_C7;a-pe`e=HKsrZl>@SWC21KmT>8br~x5)Ai*vY?Cow@qH9(hJ1HkqfR<+ zA#~P$0EyUdl-zNFLDk)t3&>la3@hE7XZmKdKlm^|hNI6OhZc>jNs0^4z@sJSy^qxF z%J0Ufh-~kA2oso^CC&x}>{vD>eR*O)ezWz+#?1H?lSF#n}{5alZ&(bNwQeT*9YW!_lx}KBvI%n&h)u8h1%H>$z`EK7S5GeeERaV;(h2 zkMP}mgR77%mlJMrGB;&lcphS`V^#R1Mnt0o0`9ha$~j^D*H=ob7So)2no&T?4#Q*0 z)6&*Ru#4=NtqP%~Jfg}qQ(~4g@Fe*2558#$dUtfZ>I$UpS9D!mz4(G5`l`}9E^%EhdcSlc0{?=2oJG*iP)|{Y6G|X zASY}FId!2h;3r)Y;$Fr#){ZrQV9FWVo*)uqqZc^S$-B}_;2XH z3*L{8W)r=t9Bu5{XW7%7Su;82?kQU;(GuV%q3RyWRSNeSM1B=7e94VAkOOj#d*r%w zG!?#lrC8t4`^SavTkEyuyL1{4Qd-Zn`<%SzL-^1{5jREQKjr*r6B6xcV~sS%Wc)MP zx9+7lw%oSNab_-}$^PSB1;D3l+-s!!ItZ2jZ-yYrvmA7wqZw3A2H%8rSXA8FYZP9U zz4apTXvDOftW7)O@O(RH*F%9&rAl+X^QjW~-cMHA5V}4R#(}%*81=O^Q0qJd#MYtw zx4%)1@WMqo``=GA0isRM`u?8bVh`iJ-`VEy){0bAJftg&ce4_7vDbwACH9$NM2pPg z3(d}obyHmL-F1+F*7IkPKJ*1}wL^<+st%MNx?&WHmFu68LZ_hG!1rmLb!Q7T&`#=8 zj&a~<-h4O*HwNYcGq#B{WUjO_VlMx0Cu!sX=s))0d(6THcZBqIR$F=Ul1iN|-Wp;3 zI-SG>fiw0;BZfgvFP~YRs0V|Cr%pwn@g?;-I8>SkDV>O@(T*~v8u5sc#B=eRIFh{A znuFrV?pAI7PKY~T=1dD=qT41`iQH`Z)o^b3Fpg0<^?7D1hp#ESR{f+lyp9>yI6D6vw5XSo{ZJaTH(F{u(5|qn7uM7&xUO+)<0U5}B7qis|O$ zTkrT!J@nSoha*#VixS72Om;~sZxEwA;QUv^Npt1f;f9;pVkn?xgX(0v+ z72L9%{1|h%g+0he*%#cT+dk&f8C73S6g=U>6%D1AJjqt~Td;oPYrzjcA*!&>owGrk zF3Lq}^+gTIqgq0)E$sU`>^ZQR9CIp9eoow=Xnc)F{<0Yu@9#1tm@^?J=N_LauKHzG zmSR@e4h$ex>X85HZ0G2HPBRxLu3x+pppHj22MoxIqQ8q$#V+S`|Og z$b33RSq8N_`AsQ@i3}JAZsX<;1!mc1UUVqvzuy&>8&SC6h%+(`TeDWBvp;^l(6`<9 z16LJU0anuBJF{}Y`HR|{ZUKwPlRcI7P>Wu-K1dfm<@Bs5tPfdhGu#h%%&&PQ{y440 z@y+%+4n`d%+=>;^rY1Cgk3$OBT)`yr7R}n|foL9V<*@MCcUCJJ`7#%Fr{j>srHyl- zpNzNFRmGH;Uj)97D}TktRb$bvx?|TU_!i<@1C}yUjbi7y$h!hyMwO8O+J&uAatW?Z z8)}Yy@6A+=4e9DZdnLv^XebcEMQ@1uc2=U4NPiCe_88t88}pa``v;ii1WtSp3Fr9Y zaFdXp*!!AMtr?AG3I`Zu$#vO=_`0tn1%l$-x!qP%$uHuRG;sUKkg4 z3Y2V&9sz%{-i{Xh;lP4Qssq-jLTI~EGfo1!U2x$;{i!eF`K*4P=fLPuRc16tB{S8R z1AZ?So7{rS>zsXYP_S#7EuHi^xkn)xY#oO&D<;gJWiT4j#X>J$p4U<_cGz_$EFkil z)W#uXVcC!+fxtMbHWz2bGgvIkmx^Xz~V_m$&y4h>`DtRi~bnFz=^BBOstil6SqdxP- zj{-08W_%BAc%~r#QMEyOQp>^J;K{^MobBx=h6MP0DG@sZizoyJ3B5a37b$9BU~ktb zh_mmpu9Is4ifh!t@_?E4ZL$fNk9+#_gWn%1G3fKNu~(c&M1yJ>tsb%9xUO4dY2Ra( zxn(%&&CE`AOdkwJ7}iKVhY^soNYblDDekdu3l(WvB|a#G5Ku*sxcV_b|Pa@ z8qpMSKTv^B=slyz*!S7#&r%yE?CK=x#$H8Od0rtPtewA@9-Fg;f9JtQaESc@<;9*p z4y_tT42g%zy!QZi=EdsV&B{fMA!lk4bG0U^g{_{BIs>IvLcMj2UBd5b1Bu02p$Rmr zOZOrMebW6z#T^9e(cfa11rKw(_IfLBCBZPLD*CvKlkYnLN=%HzE}D9g#0=+XC0*W* z%1QE3>*6W*{C!?WLr%3+u;78b(VT?#qBUmOhv+z~1NjqbFTJOi@D* zOoA!@%%P%idC0@5FvJUG<4q#@Q;mtnlu#XuF3ei~CGy$D*|TsZmtPPFjgdzA>28_! z(ZX34wdaCSpUi0iEs&~qtYb>hjVLlcn?j+CqFzq?)sz3UKr6E zyfc{fCOQ$@q6+(ZxA6Ir^)G^n46Y+z!pW+ z>Ty*UT@ifKc6fcYA>(#!>nD(Qf`k`=~=gl=dUbGE}QJpSAzC=(l1 zbXE)YXrC~^9?ci2D}b?LHtZLB7$=M)LA)>~nq*RLPm$D%~T=F$T1X>}u(<;Pn_8K)h|PjoORVTKtAJ zJ0cZA`m_?JA|H(x7U3gN#sR#VF8$aSHzAguQfoF&Gwghi^0fY!A@$`oGQkq>kn>@T zLy#I!Of*STZkFaArz_i!!(Uh!=|(R6)CUGio`YfH^KEOL4vHKX>pQ|Q;%kI~L0XbJ zdPSPs8QVNSi3W1UZda2^Y$|Y+ULB^<3QTWVN1?lN_pO^x_M&a2@w3AAgiJxBh<)zI#A;PzAK ze8=bToXx~7XL0Mw?k4_1W$WqH-T3U=^WmFrTs^$(>wkpLCsM0r;^dUj#51zvreNgGaEs~REE>Lg?? zd{l6fEGWAr`2wG+fcw*BrC;)QB=W994YpPUJ5IQ8)iEgS^cPg%M$s#n)c+%Lc0T_T z2Y#nVTt#hpf5FYh1a~Uik@x*9*cZWYl%puK{`O9dA^rC&V}A5eiLbUO`zWaxxaXU< zJVNIKC{^LQq4Y>3jy1kRJ<+mqO@9{(Qrxpvj;u(4vS|)$7YY#L;UHyX=Py#VbQud* z;Mcr#ZSgHNHCglUR{{j5En~v}(r&QdnQTeV6FiXix zN-VT1QWPU%)j!HL7O>9hLV^1S;6LIF@#Y{5bzRL0W3vgYiHm!pMa1RFy!g*rIPdZF zQVT^9%7++m=U8d>`O}0Ghi3dd@O`KEfH$W8ha6m3RYY}oP+VZmZ4q%fm&cTX#Id38 zHOt17ybxuz)85Ml#-9>`=LGl44OM7a`GEfo$y+jKlRLl}&(3D{e6;^N zYyN|*w7Y5$4&U+yWjH9m_TOm}8R^VdD+;s%c<(@>x;ys+NAZ?eHNb>x*E(jR44Aot zs-#*SgoL^Bb6|_x0{(3D0B`VqcV${$B~{kCR)?51t0 zdUKa;5ev=CjBm>-a}E||JWo+8Fiz(KLRjy6gU7o`rD9Ds!2?UYON?Q zJ|72fmwLw%gl8v_rDgh2?x-TkD<^B|^qO#sA`wUiv`Hp41PSI=efmu+8+E9F^E-C* z6v}HSogCMQW-ROrjWx7&Pi$=Bt(_G4svXi>{D4p{ecX*{Hlx6$pqVxtu{Ae}g70s% z4+WTj*KN7nc)821s`TBHUVXWI4{nS%)BBf|@jJ}$-IF6p@n7Kl{E1FT=EP>G?*9iXId9oqs&HzcC*C3oMBmY#0s`oC%Y(qBO6+ z?@pKN0pB|kcm+)fMAR{DWuwl>UCMTQ1gHfykzX%#nVfU3;M0f~h`GV){l z?`fsy8adhr>aqktP5@T0B({y19X2wRsf8aT;U7H0hJJUeyv8Zm$thvbW6hG20+GqI zu{%<$YTVNikjGd_us^5? zGfZ{h_#BZ7tZG2^9P<8sSI~@cxyXR~+CgJ^e=6V1@O3qXx>d8IO=1?dleIS#0uVwG zM251IH!eF?4V$~(rnc6Mre4II@9VHJV^rJfrOCEvV0jKIwi!is=Og+mw;wgVU^8C6 zpZ(xR0di0MVq%c-RAnJu}!QGyw83;^CFURuffKZD5MYdkz-TCe=~ ze-z42(seL2wB_aqMwq%@ZH7i*O%cdY3|c0r^LCq#JN(W)IA0^bH`i?lX7>26*a|zz zB<=u%`c&b`WF?Alo)z!5zpS>ZoNPVk`GOc*-mP{943>?}NfDm@cv=3gu-%T&9@!{Q zPX6LdoF}49c*QiQd4bK&UHw*AEOf+aI-7<^1R!I@3(omI7ux;n@;rCj~0qLd~N_SeljNh|Aw?3K?1v zk`s7#LASF%h@pV8DB$C^5qbCzowv@xxrBStp9{N)|8Z}X3#H-LtT)Q3q$@<*O2R#+ zoa1t7FV^awIr;tPfz(;6-Hlc`&GuJK`tuj9cBh#E!aCANK>*pd5M=q8`u@OC(fZx> z=zL+0tWpq(-m|{>V2uSsNAxzbX^|od) zZw_t9U{#?M4Z{j$%XKOdWyqY&*mR; zoi!Ip-|UyeFv+PaNNXiin$etAJ5}_XT#TLUzki1iw(ZeASg!gNG9fR+jZvp*cE}G5 z5^V!y{ZwdnN<}++nldQ$KGnu0*Q_G9@VvMSy4adBz)I?Lib!eg=R zrBW~-D`1nD(2AUjMyK|vzf$r?@{L;idm|;#gexYOU?BA%UU8ydLse$y$wx~ zlyG>WmO}e-LC($H!ZaeT*zskk;eTWv&^Of76#QDJutql@-|IOPek$hF?+pxs0Kig$?OK{T zy|)pr>&@+yMPGh&*=Qs^vr{t2!Qd(}Hnz-_=k1l!b|pZCrwKQOYn##gx>LQy>&Jc^ zVP?Y?uXhVchWv^v6TB!{Ggu^xH(j@O<2IG2zgP|yJ1^U*g0fcv$@ySlRw?DDr8)f5 z?jG)K86J#n-~MnP+dF;jPM{IIRV-$BC`oL)9u7a9hP)+&7lnY5pcGXfoNW`jsxYL6 z7JBZGmhN7&UE;6T=Zch9f*p&XWM1_l7-z2`G>2bEs5u=BJ(xPV3NA4T0=76HHaBE6hgoC|v>v zFOEtF7bmX16*MfyR0}#aNiQiF*2}W1-{ff4k)VKhdQkA{G>^0u=RO{2D(41H3NyGS zW0tk3#;>WQw9BR`m(~MVTE)R!Or0j38NB?RUpoJ=e7=m&;nQGf(wVbVGHw_|NUp{F zp}p^Q1qBITnh3r%;g(iIzO_$l)wP`}uTMM|-HNy-@iKfmpVFU8h+V~=c~{-d>m1ke z%5B#V)=XJvxUWvoSI+{rVW7ZDn2pd7k!IC5cTmzTqfy|m&3{PhqI8-q@+eAkL{j!+ zp}g#2$4M=jz}#L$JH1mYwvhW+f9|tV6JD9Ugp^6({8B*jx7%Xvb*Iwp+UdUI7#rIihBq|I?wQeHSNSXZN*}gFDH;TC3n-Ln zjgtiZ)Sj=~xXQRY*(?)Fk1M9F_!A!4U>;l`ZaSy(R3pi`fM z&}iNHXLu(5Vn*jZo?8h_uh*wfXX)M-ww{YOxcor{z^vMz^LS~?U2T$MK29s>HhGC}S8um# zjw|?ADG*vohY-U83<|;p=t@k$@=#M|;b(izx}7w+f1lNThBJ7eH)=X6hu6ah$^TPg zFU7Rh-E5Qty0=X%TQ9y=@9}9)V=`hW@kmrlYXaidJK)i9gO3Vq!-b?M^_?5v_EqCt zFfw6jc5+NQ&16w&jbHQgf0deY~?|bV82@9re9oEASDmt!tOF)WHLNGat}$>Fr>0*7E!z2 zOZ-(zo9~=XJozF!_S2CL4*)ipZF2By2o2JnO1asV-+=ZfWqpIHD-%Hss)6rMu*CX< z!57+R4>tCU4i{UQQ{i}+JwOF zK^UskzasIAU0uzBODTOREVWKB1UT;ZO&MjZexY3!0}C!lbQ`?mKH|x%kF_4b=f4@& z_>BPG6PYvkd)ug1ULS(-BM&0`w@ZH(2KG8YUa$o@!*K|HC|M6sG|BH8%TpY@7JM#5 z2v%DtJ_!K4mI?SoJzj_cA8G?oh7dzs??*=akPr(1NM#}zp7*gV6m1Y0%!O$L9Qb>E zxKQvZEcpY zEX(9tna#B!Q+#zU_ogDAO=a9Ca*b!TGVH11pVPsxu!Hent-zdahPgcq^Ll}Zaegnu zd?4A!Fu#v+K_8I8vY?-Fen0Die%6H(I2KLdTslQ?^=zqi^Q1Q}klnphbKg3n0~_>@ zZZSHx)!^t>vt!$guWw8`v)B3TUdOZhTyGs>zI~YG{6Wt6LJI6%t zpHjPV!vFDU!D}bNo}LwXenH~S*@(O6ND*o@QI|Gv)o@v7tZtCqiSvj4ux{r$H4@4MQ+?_2)9@A^*}Q2Zz5T$Gwv zlA5AWo>`Ki;O^-gppc)Zkf`9Bn9QK~lZBCsp`Jm90SG`b#=t(Wp`L}gzO}8rjhTnP zrK68oK%BQlqOYA(M4Ur->a~W1s;*b z3=G^tAk28_ZrvZCAbW|YuPggiW^Qg~6A7WOaq$lGMz+)FO4`_Yn*X zjIy3Cjv*GOmrma6ci2Fr)!uoYVse?4dzY37;HcOU(q{XAXF$#5gbOns*B;*@cLiACah?`$rO zl8=|enc}X$K7ae-(T+tLeSbJ-U46y;z?b2S*yZvEpRSy@*jYcThS^`dQcLUYbTwd* OGkCiCxvXLW=UkO8ip# z1JfsDB(vT|`02rY@K zT9Qz;IJS0~f5W!y>iLQFE5cg0hqdj>Y+e@Gu_vZ$Z&~-+r2d1s6SkL5+)_SiTlTbL zIn$0-PT5v9b$jdNjdjy^7S29dI{$RbvQrJqFE%ef*S-As+-2*gEH`vp1cYv+4BQ&1WZXyEA{wxdmI!F4=l=@wRj8w(eQF{p8{u7uN4My>{ohIeQ;0 z+Iwr|o{OvYUEZ?i?ACoJcI-d4YyXkW2QO?qbZz^gvwM!5*>e2Ofn(?P9lx;s#GN&# zUhX+@Wyi_8`%YckeCEZz)3=VCy0-D$n>}amA3u9(-}#4IFTOi*?#i+AH%^?tdhWu- z!TUdHdY$S7+|Nzj^2WoxAsM-+OTN z{>zgOe_p-+`r7@MXCD8$`S9g~2M_K%e0u-k<2#REK6>=%($k+;o_@RYp#z4e|Yx#%e}Y1@4fqf|NZ|5@Bcq~|L^U)_YXh(fAsPH`}gl3 zfBgUP)8{W=z5>CwZ{L3W1cBebfB*ga_us#N|3?8v2q^y3)kxMCR@Sj140SG{uh=JoB!+%i; zj|~oO-2a8Nd^`+Tlssxzow%^UAd!V5;Drz8<7eCo%F<#%4GPPAmwL4CO1b#C!=t^0 zn@b~5g?;iex6D@sTw9;JIWFU8GbZ8({Xk{QrNlj4iWF>9@00FB>L_t(I%axHmYZOrw zhMzMtyOVX@O-K|ZVxt&TL<0VUfQ6!V7J?#(mH0<21raPIq_wcH5CoCLu*M?gHjxBG z1i#1{m38KvW3hL3XOju&feVMreV_B5_X_`5{-b^t((@2agMEX3M_PZn0`TJH^Bch8 ze&S|hiz71~W+pdCYd!i|8#R44-FkN~32zoJEL_}we6|Gn7m#^~PBCF!wzt=>Lb{X; zExL33^8HHv?MrXDbLBk;+Y7X&?&8@a(%Nevni>MkltV|4RRXm3fv-ECXdLLW(|bU( zzCk~0Gf}th2;k1j!)v3^@S;Kd9FaXG@-;-(aXZZC?`N27cHWEtYM2=ghyxPT0Dc1X z>%`1~_wZ + + + + + diff --git a/img/icon-dropdown-faq.svg b/img/icon-dropdown-faq.svg new file mode 100644 index 000000000000..786bcdc7d131 --- /dev/null +++ b/img/icon-dropdown-faq.svg @@ -0,0 +1,7 @@ + + + + + + diff --git a/img/icon-dropdown.svg b/img/icon-dropdown.svg new file mode 100644 index 000000000000..3642565ff6b5 --- /dev/null +++ b/img/icon-dropdown.svg @@ -0,0 +1,7 @@ + + + + + + diff --git a/img/icon-lang-java-duke-white.svg b/img/icon-lang-java-duke-white.svg new file mode 100644 index 000000000000..e91633e9cc08 --- /dev/null +++ b/img/icon-lang-java-duke-white.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + diff --git a/img/icon-lang-java-duke.svg b/img/icon-lang-java-duke.svg new file mode 100644 index 000000000000..1c937e274a9b --- /dev/null +++ b/img/icon-lang-java-duke.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + diff --git a/img/icon-lang-nodejs.svg b/img/icon-lang-nodejs.svg new file mode 100644 index 000000000000..24a4addc3c57 --- /dev/null +++ b/img/icon-lang-nodejs.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/img/icon-lang-python.svg b/img/icon-lang-python.svg new file mode 100644 index 000000000000..bc4737703c35 --- /dev/null +++ b/img/icon-lang-python.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/img/icon-lang-ruby.svg b/img/icon-lang-ruby.svg new file mode 100644 index 000000000000..acfaab8d6ea5 --- /dev/null +++ b/img/icon-lang-ruby.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/img/icon-link-github.svg b/img/icon-link-github.svg new file mode 100644 index 000000000000..2404f8b0be06 --- /dev/null +++ b/img/icon-link-github.svg @@ -0,0 +1,19 @@ + + + + + + diff --git a/img/icon-link-package-manager.svg b/img/icon-link-package-manager.svg new file mode 100644 index 000000000000..3a12655fe6f9 --- /dev/null +++ b/img/icon-link-package-manager.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + diff --git a/img/icon-link-stackoverflow.svg b/img/icon-link-stackoverflow.svg new file mode 100644 index 000000000000..e1a1f789a897 --- /dev/null +++ b/img/icon-link-stackoverflow.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/img/icon-menu.svg b/img/icon-menu.svg new file mode 100644 index 000000000000..98d3e7073cde --- /dev/null +++ b/img/icon-menu.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/img/icon-table-check.svg b/img/icon-table-check.svg new file mode 100644 index 000000000000..7934bef97f06 --- /dev/null +++ b/img/icon-table-check.svg @@ -0,0 +1,7 @@ + + + + + + diff --git a/img/lang-bg.png b/img/lang-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..654e12af3418935fe10e84aac1b3134fdc4c4b4b GIT binary patch literal 966 zcmaJ=J#W)M7`Dn+s0ggk>EyyhVxR3KPOO+Hu@f2zM^PHoY}BzYiIv)C>`UWhg8_-( zfY_Ls7%DNqfRNY_5(_&UDwR-o&S{)7kXkz5d#C4l-p_m4ZaqwIZf!CQlWy+l9lD>; zbt|<&|BwHCzfQM1q~0UDctECRfS9U{`v^2$bBH>~v}aGhpfbZ;0#3I_dd4Hg!Y*gV z7%p;s%4V2yCGt&cj0otXq2sCS@An^A;Mgj=mp7o{YiQ)`%mcJLZ*{Ht*ecm<F+t=Wc%c%h>_S(ec6`mVU;!axl|2ipXS9Ka0|fFM%v!JjK|$aIDJRQv28d9A zJQR6B%nGt1i3)^Z`LWbnU=Ngz-dOsgCzTx$;wwBqold!_#NlAb3#C#i))2)kMP$R7 zN6aYeh1-dOjzTMNeBxja#ENDgPl(FWNY7Gm{gtd2F3Us<#z&^l3mlA7N`QuOG1PTe z=#X^KdA$D>4!biS@f{T6Nnp{&4Yp%fzM=)lBsl0|e2`SJJ;DTsBkTihHxKq4&&Jbm zfi?`K>4n7fEY#Fhmhw5rv6Ywmp;QG|FjsoWp*^L0ZV3DxmtdB)ltGDFZ>thkua(NmIAGh_NHYZnfc4Bii zwDhnVd*sns59m-IonHGHKZvGY?M6R-eXFJ!CiMx{PVi|4JgYeOGOzAldGhY^?X4T> n7gsfF1ak}X^Vj`_dGr29=J55#@$u1{RQ$4<^_Kp&w*UMu#(pT3 literal 0 HcmV?d00001 diff --git a/img/logo-full.svg b/img/logo-full.svg new file mode 100644 index 000000000000..3b84037fccc6 --- /dev/null +++ b/img/logo-full.svg @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/logo.svg b/img/logo.svg new file mode 100644 index 000000000000..6c515095c5ad --- /dev/null +++ b/img/logo.svg @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/index.html b/index.html index 431023269963..92c3a1eb4261 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ - + diff --git a/integration.html b/integration.html deleted file mode 100644 index 7759105df346..000000000000 --- a/integration.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - - GCloud Java – Continuous Integration - - - - - - - - - - - - - -
- - - - - -
-
- -
- - -
- -
-

Overview

-

This project uses Travis CI.

-
-

Access

-

The following is a link to the continuous integration system used by the project:

-
-
-

Notifiers

-

No notifiers are defined. Please check back at a later date.

-
-
-
- -
- -
-
-
-

Copyright © 2015 - Google. - All rights reserved. - -

-
- - - -
-
- - diff --git a/issue-tracking.html b/issue-tracking.html deleted file mode 100644 index 4bea2e6ef24e..000000000000 --- a/issue-tracking.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - - GCloud Java – Issue Tracking - - - - - - - - - - - - - -
- - - - - -
-
- -
- - -
- -
-

Overview

-

This project uses GitHub Issues to manage its issues.

-
-

Issue Tracking

-

Issues, bugs, and feature requests should be submitted to the following issue tracking system for this project.

-
-
-
-
- -
- -
-
-
-

Copyright © 2015 - Google. - All rights reserved. - -

-
- - - -
-
- - diff --git a/js/apache-maven-fluido-1.3.1.min.js b/js/apache-maven-fluido-1.3.1.min.js deleted file mode 100644 index d16bb77898e4..000000000000 --- a/js/apache-maven-fluido-1.3.1.min.js +++ /dev/null @@ -1,21 +0,0 @@ -/*! - * jQuery JavaScript Library v1.9.1 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2013-2-4 - */ -(function(a3,aH){var aj,x,aD=typeof aH,l=a3.document,aM=a3.location,bj=a3.jQuery,I=a3.$,ab={},a7=[],t="1.9.1",aJ=a7.concat,ap=a7.push,a5=a7.slice,aN=a7.indexOf,A=ab.toString,W=ab.hasOwnProperty,aR=t.trim,bK=function(e,b4){return new bK.fn.init(e,b4,x)},bB=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ad=/\S+/g,D=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,bs=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,a=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,bi=/^[\],:{}\s]*$/,bl=/(?:^|:|,)(?:\s*\[)+/g,bH=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,a0=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,bT=/^-ms-/,aW=/-([\da-z])/gi,N=function(e,b4){return b4.toUpperCase()},bX=function(e){if(l.addEventListener||e.type==="load"||l.readyState==="complete"){bm();bK.ready()}},bm=function(){if(l.addEventListener){l.removeEventListener("DOMContentLoaded",bX,false);a3.removeEventListener("load",bX,false)}else{l.detachEvent("onreadystatechange",bX);a3.detachEvent("onload",bX)}};bK.fn=bK.prototype={jquery:t,constructor:bK,init:function(e,b6,b5){var b4,b7;if(!e){return this}if(typeof e==="string"){if(e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3){b4=[null,e,null]}else{b4=bs.exec(e)}if(b4&&(b4[1]||!b6)){if(b4[1]){b6=b6 instanceof bK?b6[0]:b6;bK.merge(this,bK.parseHTML(b4[1],b6&&b6.nodeType?b6.ownerDocument||b6:l,true));if(a.test(b4[1])&&bK.isPlainObject(b6)){for(b4 in b6){if(bK.isFunction(this[b4])){this[b4](b6[b4])}else{this.attr(b4,b6[b4])}}}return this}else{b7=l.getElementById(b4[2]);if(b7&&b7.parentNode){if(b7.id!==b4[2]){return b5.find(e)}this.length=1;this[0]=b7}this.context=l;this.selector=e;return this}}else{if(!b6||b6.jquery){return(b6||b5).find(e)}else{return this.constructor(b6).find(e)}}}else{if(e.nodeType){this.context=this[0]=e;this.length=1;return this}else{if(bK.isFunction(e)){return b5.ready(e)}}}if(e.selector!==aH){this.selector=e.selector;this.context=e.context}return bK.makeArray(e,this)},selector:"",length:0,size:function(){return this.length},toArray:function(){return a5.call(this)},get:function(e){return e==null?this.toArray():(e<0?this[this.length+e]:this[e])},pushStack:function(e){var b4=bK.merge(this.constructor(),e);b4.prevObject=this;b4.context=this.context;return b4},each:function(b4,e){return bK.each(this,b4,e)},ready:function(e){bK.ready.promise().done(e);return this},slice:function(){return this.pushStack(a5.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(b5){var e=this.length,b4=+b5+(b5<0?e:0);return this.pushStack(b4>=0&&b40){return}aj.resolveWith(l,[bK]);if(bK.fn.trigger){bK(l).trigger("ready").off("ready")}},isFunction:function(e){return bK.type(e)==="function"},isArray:Array.isArray||function(e){return bK.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return !isNaN(parseFloat(e))&&isFinite(e)},type:function(e){if(e==null){return String(e)}return typeof e==="object"||typeof e==="function"?ab[A.call(e)]||"object":typeof e},isPlainObject:function(b6){if(!b6||bK.type(b6)!=="object"||b6.nodeType||bK.isWindow(b6)){return false}try{if(b6.constructor&&!W.call(b6,"constructor")&&!W.call(b6.constructor.prototype,"isPrototypeOf")){return false}}catch(b5){return false}var b4;for(b4 in b6){}return b4===aH||W.call(b6,b4)},isEmptyObject:function(b4){var e;for(e in b4){return false}return true},error:function(e){throw new Error(e)},parseHTML:function(b7,b5,b6){if(!b7||typeof b7!=="string"){return null}if(typeof b5==="boolean"){b6=b5;b5=false}b5=b5||l;var b4=a.exec(b7),e=!b6&&[];if(b4){return[b5.createElement(b4[1])]}b4=bK.buildFragment([b7],b5,e);if(e){bK(e).remove()}return bK.merge([],b4.childNodes)},parseJSON:function(e){if(a3.JSON&&a3.JSON.parse){return a3.JSON.parse(e)}if(e===null){return e}if(typeof e==="string"){e=bK.trim(e);if(e){if(bi.test(e.replace(bH,"@").replace(a0,"]").replace(bl,""))){return(new Function("return "+e))()}}}bK.error("Invalid JSON: "+e)},parseXML:function(b6){var b4,b5;if(!b6||typeof b6!=="string"){return null}try{if(a3.DOMParser){b5=new DOMParser();b4=b5.parseFromString(b6,"text/xml")}else{b4=new ActiveXObject("Microsoft.XMLDOM");b4.async="false";b4.loadXML(b6)}}catch(b7){b4=aH}if(!b4||!b4.documentElement||b4.getElementsByTagName("parsererror").length){bK.error("Invalid XML: "+b6)}return b4},noop:function(){},globalEval:function(e){if(e&&bK.trim(e)){(a3.execScript||function(b4){a3["eval"].call(a3,b4)})(e)}},camelCase:function(e){return e.replace(bT,"ms-").replace(aW,N)},nodeName:function(b4,e){return b4.nodeName&&b4.nodeName.toLowerCase()===e.toLowerCase()},each:function(b8,b9,b4){var b7,b5=0,b6=b8.length,e=ac(b8);if(b4){if(e){for(;b50&&(b4-1) in b5)}x=bK(l);var bZ={};function af(b4){var e=bZ[b4]={};bK.each(b4.match(ad)||[],function(b6,b5){e[b5]=true});return e}bK.Callbacks=function(cd){cd=typeof cd==="string"?(bZ[cd]||af(cd)):bK.extend({},cd);var b7,b6,e,b8,b9,b5,ca=[],cb=!cd.once&&[],b4=function(ce){b6=cd.memory&&ce;e=true;b9=b5||0;b5=0;b8=ca.length;b7=true;for(;ca&&b9-1){ca.splice(cf,1);if(b7){if(cf<=b8){b8--}if(cf<=b9){b9--}}}})}return this},has:function(ce){return ce?bK.inArray(ce,ca)>-1:!!(ca&&ca.length)},empty:function(){ca=[];return this},disable:function(){ca=cb=b6=aH;return this},disabled:function(){return !ca},lock:function(){cb=aH;if(!b6){cc.disable()}return this},locked:function(){return !cb},fireWith:function(cf,ce){ce=ce||[];ce=[cf,ce.slice?ce.slice():ce];if(ca&&(!e||cb)){if(b7){cb.push(ce)}else{b4(ce)}}return this},fire:function(){cc.fireWith(this,arguments);return this},fired:function(){return !!e}};return cc};bK.extend({Deferred:function(b5){var b4=[["resolve","done",bK.Callbacks("once memory"),"resolved"],["reject","fail",bK.Callbacks("once memory"),"rejected"],["notify","progress",bK.Callbacks("memory")]],b6="pending",b7={state:function(){return b6},always:function(){e.done(arguments).fail(arguments);return this},then:function(){var b8=arguments;return bK.Deferred(function(b9){bK.each(b4,function(cb,ca){var cd=ca[0],cc=bK.isFunction(b8[cb])&&b8[cb];e[ca[1]](function(){var ce=cc&&cc.apply(this,arguments);if(ce&&bK.isFunction(ce.promise)){ce.promise().done(b9.resolve).fail(b9.reject).progress(b9.notify)}else{b9[cd+"With"](this===b7?b9.promise():this,cc?[ce]:arguments)}})});b8=null}).promise()},promise:function(b8){return b8!=null?bK.extend(b8,b7):b7}},e={};b7.pipe=b7.then;bK.each(b4,function(b9,b8){var cb=b8[2],ca=b8[3];b7[b8[1]]=cb.add;if(ca){cb.add(function(){b6=ca},b4[b9^1][2].disable,b4[2][2].lock)}e[b8[0]]=function(){e[b8[0]+"With"](this===e?b7:this,arguments);return this};e[b8[0]+"With"]=cb.fireWith});b7.promise(e);if(b5){b5.call(e,e)}return e},when:function(b7){var b5=0,b9=a5.call(arguments),e=b9.length,b4=e!==1||(b7&&bK.isFunction(b7.promise))?e:0,cc=b4===1?b7:bK.Deferred(),b6=function(ce,cf,cd){return function(cg){cf[ce]=this;cd[ce]=arguments.length>1?a5.call(arguments):cg;if(cd===cb){cc.notifyWith(cf,cd)}else{if(!(--b4)){cc.resolveWith(cf,cd)}}}},cb,b8,ca;if(e>1){cb=new Array(e);b8=new Array(e);ca=new Array(e);for(;b5
a";ce=b4.getElementsByTagName("*");cc=b4.getElementsByTagName("a")[0];if(!ce||!cc||!ce.length){return{}}cd=l.createElement("select");b6=cd.appendChild(l.createElement("option"));cb=b4.getElementsByTagName("input")[0];cc.style.cssText="top:1px;float:left;opacity:.5";cf={getSetAttribute:b4.className!=="t",leadingWhitespace:b4.firstChild.nodeType===3,tbody:!b4.getElementsByTagName("tbody").length,htmlSerialize:!!b4.getElementsByTagName("link").length,style:/top/.test(cc.getAttribute("style")),hrefNormalized:cc.getAttribute("href")==="/a",opacity:/^0.5/.test(cc.style.opacity),cssFloat:!!cc.style.cssFloat,checkOn:!!cb.value,optSelected:b6.selected,enctype:!!l.createElement("form").enctype,html5Clone:l.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",boxModel:l.compatMode==="CSS1Compat",deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true,boxSizingReliable:true,pixelPosition:false};cb.checked=true;cf.noCloneChecked=cb.cloneNode(true).checked;cd.disabled=true;cf.optDisabled=!b6.disabled;try{delete b4.test}catch(b9){cf.deleteExpando=false}cb=l.createElement("input");cb.setAttribute("value","");cf.input=cb.getAttribute("value")==="";cb.value="t";cb.setAttribute("type","radio");cf.radioValue=cb.value==="t";cb.setAttribute("checked","t");cb.setAttribute("name","t");ca=l.createDocumentFragment();ca.appendChild(cb);cf.appendChecked=cb.checked;cf.checkClone=ca.cloneNode(true).cloneNode(true).lastChild.checked;if(b4.attachEvent){b4.attachEvent("onclick",function(){cf.noCloneEvent=false});b4.cloneNode(true).click()}for(b7 in {submit:true,change:true,focusin:true}){b4.setAttribute(b8="on"+b7,"t");cf[b7+"Bubbles"]=b8 in a3||b4.attributes[b8].expando===false}b4.style.backgroundClip="content-box";b4.cloneNode(true).style.backgroundClip="";cf.clearCloneStyle=b4.style.backgroundClip==="content-box";bK(function(){var cg,cj,ci,ch="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",e=l.getElementsByTagName("body")[0];if(!e){return}cg=l.createElement("div");cg.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";e.appendChild(cg).appendChild(b4);b4.innerHTML="
t
";ci=b4.getElementsByTagName("td");ci[0].style.cssText="padding:0;margin:0;border:0;display:none";b5=(ci[0].offsetHeight===0);ci[0].style.display="";ci[1].style.display="none";cf.reliableHiddenOffsets=b5&&(ci[0].offsetHeight===0);b4.innerHTML="";b4.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";cf.boxSizing=(b4.offsetWidth===4);cf.doesNotIncludeMarginInBodyOffset=(e.offsetTop!==1);if(a3.getComputedStyle){cf.pixelPosition=(a3.getComputedStyle(b4,null)||{}).top!=="1%";cf.boxSizingReliable=(a3.getComputedStyle(b4,null)||{width:"4px"}).width==="4px";cj=b4.appendChild(l.createElement("div"));cj.style.cssText=b4.style.cssText=ch;cj.style.marginRight=cj.style.width="0";b4.style.width="1px";cf.reliableMarginRight=!parseFloat((a3.getComputedStyle(cj,null)||{}).marginRight)}if(typeof b4.style.zoom!==aD){b4.innerHTML="";b4.style.cssText=ch+"width:1px;padding:1px;display:inline;zoom:1";cf.inlineBlockNeedsLayout=(b4.offsetWidth===3);b4.style.display="block";b4.innerHTML="
";b4.firstChild.style.width="5px";cf.shrinkWrapBlocks=(b4.offsetWidth!==3);if(cf.inlineBlockNeedsLayout){e.style.zoom=1}}e.removeChild(cg);cg=b4=ci=cj=null});ce=cd=ca=b6=cc=cb=null;return cf})();var bx=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,aO=/([A-Z])/g;function bb(b6,b4,b8,b7){if(!bK.acceptData(b6)){return}var b9,cb,cc=bK.expando,ca=typeof b4==="string",cd=b6.nodeType,e=cd?bK.cache:b6,b5=cd?b6[cc]:b6[cc]&&cc;if((!b5||!e[b5]||(!b7&&!e[b5].data))&&ca&&b8===aH){return}if(!b5){if(cd){b6[cc]=b5=a7.pop()||bK.guid++}else{b5=cc}}if(!e[b5]){e[b5]={};if(!cd){e[b5].toJSON=bK.noop}}if(typeof b4==="object"||typeof b4==="function"){if(b7){e[b5]=bK.extend(e[b5],b4)}else{e[b5].data=bK.extend(e[b5].data,b4)}}b9=e[b5];if(!b7){if(!b9.data){b9.data={}}b9=b9.data}if(b8!==aH){b9[bK.camelCase(b4)]=b8}if(ca){cb=b9[b4];if(cb==null){cb=b9[bK.camelCase(b4)]}}else{cb=b9}return cb}function aa(b6,b4,b7){if(!bK.acceptData(b6)){return}var b9,b8,ca,cb=b6.nodeType,e=cb?bK.cache:b6,b5=cb?b6[bK.expando]:bK.expando;if(!e[b5]){return}if(b4){ca=b7?e[b5]:e[b5].data;if(ca){if(!bK.isArray(b4)){if(b4 in ca){b4=[b4]}else{b4=bK.camelCase(b4);if(b4 in ca){b4=[b4]}else{b4=b4.split(" ")}}}else{b4=b4.concat(bK.map(b4,bK.camelCase))}for(b9=0,b8=b4.length;b91,null,true)},removeData:function(e){return this.each(function(){bK.removeData(this,e)})}});function bz(b6,b5,b7){if(b7===aH&&b6.nodeType===1){var b4="data-"+b5.replace(aO,"-$1").toLowerCase();b7=b6.getAttribute(b4);if(typeof b7==="string"){try{b7=b7==="true"?true:b7==="false"?false:b7==="null"?null:+b7+""===b7?+b7:bx.test(b7)?bK.parseJSON(b7):b7}catch(b8){}bK.data(b6,b5,b7)}else{b7=aH}}return b7}function O(b4){var e;for(e in b4){if(e==="data"&&bK.isEmptyObject(b4[e])){continue}if(e!=="toJSON"){return false}}return true}bK.extend({queue:function(b5,b4,b6){var e;if(b5){b4=(b4||"fx")+"queue";e=bK._data(b5,b4);if(b6){if(!e||bK.isArray(b6)){e=bK._data(b5,b4,bK.makeArray(b6))}else{e.push(b6)}}return e||[]}},dequeue:function(b8,b7){b7=b7||"fx";var b4=bK.queue(b8,b7),b9=b4.length,b6=b4.shift(),e=bK._queueHooks(b8,b7),b5=function(){bK.dequeue(b8,b7)};if(b6==="inprogress"){b6=b4.shift();b9--}e.cur=b6;if(b6){if(b7==="fx"){b4.unshift("inprogress")}delete e.stop;b6.call(b8,b5,e)}if(!b9&&e){e.empty.fire()}},_queueHooks:function(b5,b4){var e=b4+"queueHooks";return bK._data(b5,e)||bK._data(b5,e,{empty:bK.Callbacks("once memory").add(function(){bK._removeData(b5,b4+"queue");bK._removeData(b5,e)})})}});bK.fn.extend({queue:function(e,b4){var b5=2;if(typeof e!=="string"){b4=e;e="fx";b5--}if(arguments.length1)},removeAttr:function(e){return this.each(function(){bK.removeAttr(this,e)})},prop:function(e,b4){return bK.access(this,bK.prop,e,b4,arguments.length>1)},removeProp:function(e){e=bK.propFix[e]||e;return this.each(function(){try{this[e]=aH;delete this[e]}catch(b4){}})},addClass:function(ca){var b4,e,cb,b7,b5,b6=0,b8=this.length,b9=typeof ca==="string"&&ca;if(bK.isFunction(ca)){return this.each(function(cc){bK(this).addClass(ca.call(this,cc,this.className))})}if(b9){b4=(ca||"").match(ad)||[];for(;b6=0){cb=cb.replace(" "+b7+" "," ")}}e.className=ca?bK.trim(cb):""}}}return this},toggleClass:function(b6,b4){var b5=typeof b6,e=typeof b4==="boolean";if(bK.isFunction(b6)){return this.each(function(b7){bK(this).toggleClass(b6.call(this,b7,this.className,b4),b4)})}return this.each(function(){if(b5==="string"){var b9,b8=0,b7=bK(this),ca=b4,cb=b6.match(ad)||[];while((b9=cb[b8++])){ca=e?ca:!b7.hasClass(b9);b7[ca?"addClass":"removeClass"](b9)}}else{if(b5===aD||b5==="boolean"){if(this.className){bK._data(this,"__className__",this.className)}this.className=this.className||b6===false?"":bK._data(this,"__className__")||""}}})},hasClass:function(e){var b6=" "+e+" ",b5=0,b4=this.length;for(;b5=0){return true}}return false},val:function(b6){var b4,e,b7,b5=this[0];if(!arguments.length){if(b5){e=bK.valHooks[b5.type]||bK.valHooks[b5.nodeName.toLowerCase()];if(e&&"get" in e&&(b4=e.get(b5,"value"))!==aH){return b4}b4=b5.value;return typeof b4==="string"?b4.replace(al,""):b4==null?"":b4}return}b7=bK.isFunction(b6);return this.each(function(b9){var ca,b8=bK(this);if(this.nodeType!==1){return}if(b7){ca=b6.call(this,b9,b8.val())}else{ca=b6}if(ca==null){ca=""}else{if(typeof ca==="number"){ca+=""}else{if(bK.isArray(ca)){ca=bK.map(ca,function(cb){return cb==null?"":cb+""})}}}e=bK.valHooks[this.type]||bK.valHooks[this.nodeName.toLowerCase()];if(!e||!("set" in e)||e.set(this,ca,"value")===aH){this.value=ca}})}});bK.extend({valHooks:{option:{get:function(e){var b4=e.attributes.value;return !b4||b4.specified?e.value:e.text}},select:{get:function(e){var b9,b5,cb=e.options,b7=e.selectedIndex,b6=e.type==="select-one"||b7<0,ca=b6?null:[],b8=b6?b7+1:cb.length,b4=b7<0?b8:b6?b7:0;for(;b4=0});if(!e.length){b4.selectedIndex=-1}return e}}},attr:function(b8,b6,b9){var e,b7,b5,b4=b8.nodeType;if(!b8||b4===3||b4===8||b4===2){return}if(typeof b8.getAttribute===aD){return bK.prop(b8,b6,b9)}b7=b4!==1||!bK.isXMLDoc(b8);if(b7){b6=b6.toLowerCase();e=bK.attrHooks[b6]||(M.test(b6)?b0:a9)}if(b9!==aH){if(b9===null){bK.removeAttr(b8,b6)}else{if(e&&b7&&"set" in e&&(b5=e.set(b8,b9,b6))!==aH){return b5}else{b8.setAttribute(b6,b9+"");return b9}}}else{if(e&&b7&&"get" in e&&(b5=e.get(b8,b6))!==null){return b5}else{if(typeof b8.getAttribute!==aD){b5=b8.getAttribute(b6)}return b5==null?aH:b5}}},removeAttr:function(b5,b7){var e,b6,b4=0,b8=b7&&b7.match(ad);if(b8&&b5.nodeType===1){while((e=b8[b4++])){b6=bK.propFix[e]||e;if(M.test(e)){if(!bQ&&ar.test(e)){b5[bK.camelCase("default-"+e)]=b5[b6]=false}else{b5[b6]=false}}else{bK.attr(b5,e,"")}b5.removeAttribute(bQ?e:b6)}}},attrHooks:{type:{set:function(e,b4){if(!bK.support.radioValue&&b4==="radio"&&bK.nodeName(e,"input")){var b5=e.value;e.setAttribute("type",b4);if(b5){e.value=b5}return b4}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(b8,b6,b9){var b5,e,b7,b4=b8.nodeType;if(!b8||b4===3||b4===8||b4===2){return}b7=b4!==1||!bK.isXMLDoc(b8);if(b7){b6=bK.propFix[b6]||b6;e=bK.propHooks[b6]}if(b9!==aH){if(e&&"set" in e&&(b5=e.set(b8,b9,b6))!==aH){return b5}else{return(b8[b6]=b9)}}else{if(e&&"get" in e&&(b5=e.get(b8,b6))!==null){return b5}else{return b8[b6]}}},propHooks:{tabIndex:{get:function(b4){var e=b4.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):aG.test(b4.nodeName)||E.test(b4.nodeName)&&b4.href?0:aH}}}});b0={get:function(b6,b4){var b7=bK.prop(b6,b4),e=typeof b7==="boolean"&&b6.getAttribute(b4),b5=typeof b7==="boolean"?bG&&bQ?e!=null:ar.test(b4)?b6[bK.camelCase("default-"+b4)]:!!e:b6.getAttributeNode(b4);return b5&&b5.value!==false?b4.toLowerCase():aH},set:function(b4,b5,e){if(b5===false){bK.removeAttr(b4,e)}else{if(bG&&bQ||!ar.test(e)){b4.setAttribute(!bQ&&bK.propFix[e]||e,e)}else{b4[bK.camelCase("default-"+e)]=b4[e]=true}}return e}};if(!bG||!bQ){bK.attrHooks.value={get:function(b5,b4){var e=b5.getAttributeNode(b4);return bK.nodeName(b5,"input")?b5.defaultValue:e&&e.specified?e.value:aH},set:function(b4,b5,e){if(bK.nodeName(b4,"input")){b4.defaultValue=b5}else{return a9&&a9.set(b4,b5,e)}}}}if(!bQ){a9=bK.valHooks.button={get:function(b5,b4){var e=b5.getAttributeNode(b4);return e&&(b4==="id"||b4==="name"||b4==="coords"?e.value!=="":e.specified)?e.value:aH},set:function(b5,b6,b4){var e=b5.getAttributeNode(b4);if(!e){b5.setAttributeNode((e=b5.ownerDocument.createAttribute(b4)))}e.value=b6+="";return b4==="value"||b6===b5.getAttribute(b4)?b6:aH}};bK.attrHooks.contenteditable={get:a9.get,set:function(b4,b5,e){a9.set(b4,b5===""?false:b5,e)}};bK.each(["width","height"],function(b4,e){bK.attrHooks[e]=bK.extend(bK.attrHooks[e],{set:function(b5,b6){if(b6===""){b5.setAttribute(e,"auto");return b6}}})})}if(!bK.support.hrefNormalized){bK.each(["href","src","width","height"],function(b4,e){bK.attrHooks[e]=bK.extend(bK.attrHooks[e],{get:function(b6){var b5=b6.getAttribute(e,2);return b5==null?aH:b5}})});bK.each(["href","src"],function(b4,e){bK.propHooks[e]={get:function(b5){return b5.getAttribute(e,4)}}})}if(!bK.support.style){bK.attrHooks.style={get:function(e){return e.style.cssText||aH},set:function(e,b4){return(e.style.cssText=b4+"")}}}if(!bK.support.optSelected){bK.propHooks.selected=bK.extend(bK.propHooks.selected,{get:function(b4){var e=b4.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!bK.support.enctype){bK.propFix.enctype="encoding"}if(!bK.support.checkOn){bK.each(["radio","checkbox"],function(){bK.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}bK.each(["radio","checkbox"],function(){bK.valHooks[this]=bK.extend(bK.valHooks[this],{set:function(e,b4){if(bK.isArray(b4)){return(e.checked=bK.inArray(bK(e).val(),b4)>=0)}}})});var bI=/^(?:input|select|textarea)$/i,a4=/^key/,bO=/^(?:mouse|contextmenu)|click/,bC=/^(?:focusinfocus|focusoutblur)$/,bv=/^([^.]*)(?:\.(.+)|)$/;function S(){return true}function Y(){return false}bK.event={global:{},add:function(b7,cc,ch,b9,b8){var ca,ci,cj,b5,ce,cb,cg,b6,cf,e,b4,cd=bK._data(b7);if(!cd){return}if(ch.handler){b5=ch;ch=b5.handler;b8=b5.selector}if(!ch.guid){ch.guid=bK.guid++}if(!(ci=cd.events)){ci=cd.events={}}if(!(cb=cd.handle)){cb=cd.handle=function(ck){return typeof bK!==aD&&(!ck||bK.event.triggered!==ck.type)?bK.event.dispatch.apply(cb.elem,arguments):aH};cb.elem=b7}cc=(cc||"").match(ad)||[""];cj=cc.length;while(cj--){ca=bv.exec(cc[cj])||[];cf=b4=ca[1];e=(ca[2]||"").split(".").sort();ce=bK.event.special[cf]||{};cf=(b8?ce.delegateType:ce.bindType)||cf;ce=bK.event.special[cf]||{};cg=bK.extend({type:cf,origType:b4,data:b9,handler:ch,guid:ch.guid,selector:b8,needsContext:b8&&bK.expr.match.needsContext.test(b8),namespace:e.join(".")},b5);if(!(b6=ci[cf])){b6=ci[cf]=[];b6.delegateCount=0;if(!ce.setup||ce.setup.call(b7,b9,e,cb)===false){if(b7.addEventListener){b7.addEventListener(cf,cb,false)}else{if(b7.attachEvent){b7.attachEvent("on"+cf,cb)}}}}if(ce.add){ce.add.call(b7,cg);if(!cg.handler.guid){cg.handler.guid=ch.guid}}if(b8){b6.splice(b6.delegateCount++,0,cg)}else{b6.push(cg)}bK.event.global[cf]=true}b7=null},remove:function(b6,cc,cj,b7,cb){var b9,cg,ca,b8,ci,ch,ce,b5,cf,e,b4,cd=bK.hasData(b6)&&bK._data(b6);if(!cd||!(ch=cd.events)){return}cc=(cc||"").match(ad)||[""];ci=cc.length;while(ci--){ca=bv.exec(cc[ci])||[];cf=b4=ca[1];e=(ca[2]||"").split(".").sort();if(!cf){for(cf in ch){bK.event.remove(b6,cf+cc[ci],cj,b7,true)}continue}ce=bK.event.special[cf]||{};cf=(b7?ce.delegateType:ce.bindType)||cf;b5=ch[cf]||[];ca=ca[2]&&new RegExp("(^|\\.)"+e.join("\\.(?:.*\\.|)")+"(\\.|$)");b8=b9=b5.length;while(b9--){cg=b5[b9];if((cb||b4===cg.origType)&&(!cj||cj.guid===cg.guid)&&(!ca||ca.test(cg.namespace))&&(!b7||b7===cg.selector||b7==="**"&&cg.selector)){b5.splice(b9,1);if(cg.selector){b5.delegateCount--}if(ce.remove){ce.remove.call(b6,cg)}}}if(b8&&!b5.length){if(!ce.teardown||ce.teardown.call(b6,e,cd.handle)===false){bK.removeEvent(b6,cf,cd.handle)}delete ch[cf]}}if(bK.isEmptyObject(ch)){delete cd.handle;bK._removeData(b6,"events")}},trigger:function(b4,cb,b7,ci){var cc,b6,cg,ch,ce,ca,b9,b8=[b7||l],cf=W.call(b4,"type")?b4.type:b4,b5=W.call(b4,"namespace")?b4.namespace.split("."):[];cg=ca=b7=b7||l;if(b7.nodeType===3||b7.nodeType===8){return}if(bC.test(cf+bK.event.triggered)){return}if(cf.indexOf(".")>=0){b5=cf.split(".");cf=b5.shift();b5.sort()}b6=cf.indexOf(":")<0&&"on"+cf;b4=b4[bK.expando]?b4:new bK.Event(cf,typeof b4==="object"&&b4);b4.isTrigger=true;b4.namespace=b5.join(".");b4.namespace_re=b4.namespace?new RegExp("(^|\\.)"+b5.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;b4.result=aH;if(!b4.target){b4.target=b7}cb=cb==null?[b4]:bK.makeArray(cb,[b4]);ce=bK.event.special[cf]||{};if(!ci&&ce.trigger&&ce.trigger.apply(b7,cb)===false){return}if(!ci&&!ce.noBubble&&!bK.isWindow(b7)){ch=ce.delegateType||cf;if(!bC.test(ch+cf)){cg=cg.parentNode}for(;cg;cg=cg.parentNode){b8.push(cg);ca=cg}if(ca===(b7.ownerDocument||l)){b8.push(ca.defaultView||ca.parentWindow||a3)}}b9=0;while((cg=b8[b9++])&&!b4.isPropagationStopped()){b4.type=b9>1?ch:ce.bindType||cf;cc=(bK._data(cg,"events")||{})[b4.type]&&bK._data(cg,"handle");if(cc){cc.apply(cg,cb)}cc=b6&&cg[b6];if(cc&&bK.acceptData(cg)&&cc.apply&&cc.apply(cg,cb)===false){b4.preventDefault()}}b4.type=cf;if(!ci&&!b4.isDefaultPrevented()){if((!ce._default||ce._default.apply(b7.ownerDocument,cb)===false)&&!(cf==="click"&&bK.nodeName(b7,"a"))&&bK.acceptData(b7)){if(b6&&b7[cf]&&!bK.isWindow(b7)){ca=b7[b6];if(ca){b7[b6]=null}bK.event.triggered=cf;try{b7[cf]()}catch(cd){}bK.event.triggered=aH;if(ca){b7[b6]=ca}}}}return b4.result},dispatch:function(e){e=bK.event.fix(e);var b7,b8,cc,b4,b6,cb=[],ca=a5.call(arguments),b5=(bK._data(this,"events")||{})[e.type]||[],b9=bK.event.special[e.type]||{};ca[0]=e;e.delegateTarget=this;if(b9.preDispatch&&b9.preDispatch.call(this,e)===false){return}cb=bK.event.handlers.call(this,e,b5);b7=0;while((b4=cb[b7++])&&!e.isPropagationStopped()){e.currentTarget=b4.elem;b6=0;while((cc=b4.handlers[b6++])&&!e.isImmediatePropagationStopped()){if(!e.namespace_re||e.namespace_re.test(cc.namespace)){e.handleObj=cc;e.data=cc.data;b8=((bK.event.special[cc.origType]||{}).handle||cc.handler).apply(b4.elem,ca);if(b8!==aH){if((e.result=b8)===false){e.preventDefault();e.stopPropagation()}}}}}if(b9.postDispatch){b9.postDispatch.call(this,e)}return e.result},handlers:function(e,b5){var b4,ca,b8,b7,b9=[],b6=b5.delegateCount,cb=e.target;if(b6&&cb.nodeType&&(!e.button||e.type!=="click")){for(;cb!=this;cb=cb.parentNode||this){if(cb.nodeType===1&&(cb.disabled!==true||e.type!=="click")){b8=[];for(b7=0;b7=0:bK.find(b4,this,null,[cb]).length}if(b8[b4]){b8.push(ca)}}if(b8.length){b9.push({elem:cb,handlers:b8})}}}}if(b6+~])"+cq+"*"),cQ=new RegExp(cl),cR=new RegExp("^"+cL+"$"),cZ={ID:new RegExp("^#("+b4+")"),CLASS:new RegExp("^\\.("+b4+")"),NAME:new RegExp("^\\[name=['\"]?("+b4+")['\"]?\\]"),TAG:new RegExp("^("+b4.replace("w","w*")+")"),ATTR:new RegExp("^"+c3),PSEUDO:new RegExp("^"+cl),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+cq+"*(even|odd|(([+-]|)(\\d*)n|)"+cq+"*(?:([+-]|)"+cq+"*(\\d+)|))"+cq+"*\\)|)","i"),needsContext:new RegExp("^"+cq+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+cq+"*((?:-\\d)?\\d*)"+cq+"*\\)|)(?=[^-]|$)","i")},cX=/[\x20\t\r\n\f]*[+~]/,cN=/^[^{]+\{\s*\[native code/,cP=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,b9=/^(?:input|select|textarea|button)$/i,cm=/^h\d$/i,cM=/'|\\/g,cu=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,ct=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,c2=function(e,dj){var di="0x"+dj-65536;return di!==di?dj:di<0?String.fromCharCode(di+65536):String.fromCharCode(di>>10|55296,di&1023|56320)};try{cn.call(cJ.documentElement.childNodes,0)[0].nodeType}catch(cD){cn=function(di){var dj,e=[];while((dj=this[di++])){e.push(dj)}return e}}function cF(e){return cN.test(e+"")}function cA(){var e,di=[];return(e=function(dj,dk){if(di.push(dj+=" ")>co.cacheLength){delete e[di.shift()]}return(e[dj]=dk)})}function ck(e){e[c6]=true;return e}function cd(di){var dk=cC.createElement("div");try{return di(dk)}catch(dj){return false}finally{dk=null}}function cw(dq,di,du,dw){var dv,dm,dn,ds,dt,dl,dk,e,dj,dr;if((di?di.ownerDocument||di:cJ)!==cC){cW(di)}di=di||cC;du=du||[];if(!dq||typeof dq!=="string"){return du}if((ds=di.nodeType)!==1&&ds!==9){return[]}if(!ce&&!dw){if((dv=cP.exec(dq))){if((dn=dv[1])){if(ds===9){dm=di.getElementById(dn);if(dm&&dm.parentNode){if(dm.id===dn){du.push(dm);return du}}else{return du}}else{if(di.ownerDocument&&(dm=di.ownerDocument.getElementById(dn))&&cG(di,dm)&&dm.id===dn){du.push(dm);return du}}}else{if(dv[2]){b5.apply(du,cn.call(di.getElementsByTagName(dq),0));return du}else{if((dn=dv[3])&&de.getByClassName&&di.getElementsByClassName){b5.apply(du,cn.call(di.getElementsByClassName(dn),0));return du}}}}if(de.qsa&&!c0.test(dq)){dk=true;e=c6;dj=di;dr=ds===9&&dq;if(ds===1&&di.nodeName.toLowerCase()!=="object"){dl=cg(dq);if((dk=di.getAttribute("id"))){e=dk.replace(cM,"\\$&")}else{di.setAttribute("id",e)}e="[id='"+e+"'] ";dt=dl.length;while(dt--){dl[dt]=e+ch(dl[dt])}dj=cX.test(dq)&&di.parentNode||di;dr=dl.join(",")}if(dr){try{b5.apply(du,cn.call(dj.querySelectorAll(dr),0));return du}catch(dp){}finally{if(!dk){di.removeAttribute("id")}}}}}return dd(dq.replace(cs,"$1"),di,du,dw)}cK=cw.isXML=function(e){var di=e&&(e.ownerDocument||e).documentElement;return di?di.nodeName!=="HTML":false};cW=cw.setDocument=function(e){var di=e?e.ownerDocument||e:cJ;if(di===cC||di.nodeType!==9||!di.documentElement){return cC}cC=di;cp=di.documentElement;ce=cK(di);de.tagNameNoComments=cd(function(dj){dj.appendChild(di.createComment(""));return !dj.getElementsByTagName("*").length});de.attributes=cd(function(dk){dk.innerHTML="";var dj=typeof dk.lastChild.getAttribute("multiple");return dj!=="boolean"&&dj!=="string"});de.getByClassName=cd(function(dj){dj.innerHTML="";if(!dj.getElementsByClassName||!dj.getElementsByClassName("e").length){return false}dj.lastChild.className="e";return dj.getElementsByClassName("e").length===2});de.getByName=cd(function(dk){dk.id=c6+0;dk.innerHTML="
";cp.insertBefore(dk,cp.firstChild);var dj=di.getElementsByName&&di.getElementsByName(c6).length===2+di.getElementsByName(c6+0).length;de.getIdNotName=!di.getElementById(c6);cp.removeChild(dk);return dj});co.attrHandle=cd(function(dj){dj.innerHTML="";return dj.firstChild&&typeof dj.firstChild.getAttribute!==da&&dj.firstChild.getAttribute("href")==="#"})?{}:{href:function(dj){return dj.getAttribute("href",2)},type:function(dj){return dj.getAttribute("type")}};if(de.getIdNotName){co.find.ID=function(dl,dk){if(typeof dk.getElementById!==da&&!ce){var dj=dk.getElementById(dl);return dj&&dj.parentNode?[dj]:[]}};co.filter.ID=function(dk){var dj=dk.replace(ct,c2);return function(dl){return dl.getAttribute("id")===dj}}}else{co.find.ID=function(dl,dk){if(typeof dk.getElementById!==da&&!ce){var dj=dk.getElementById(dl);return dj?dj.id===dl||typeof dj.getAttributeNode!==da&&dj.getAttributeNode("id").value===dl?[dj]:ci:[]}};co.filter.ID=function(dk){var dj=dk.replace(ct,c2);return function(dm){var dl=typeof dm.getAttributeNode!==da&&dm.getAttributeNode("id");return dl&&dl.value===dj}}}co.find.TAG=de.tagNameNoComments?function(dj,dk){if(typeof dk.getElementsByTagName!==da){return dk.getElementsByTagName(dj)}}:function(dj,dn){var dp,dm=[],dl=0,dk=dn.getElementsByTagName(dj);if(dj==="*"){while((dp=dk[dl++])){if(dp.nodeType===1){dm.push(dp)}}return dm}return dk};co.find.NAME=de.getByName&&function(dj,dk){if(typeof dk.getElementsByName!==da){return dk.getElementsByName(name)}};co.find.CLASS=de.getByClassName&&function(dk,dj){if(typeof dj.getElementsByClassName!==da&&!ce){return dj.getElementsByClassName(dk)}};dc=[];c0=[":focus"];if((de.qsa=cF(di.querySelectorAll))){cd(function(dj){dj.innerHTML="";if(!dj.querySelectorAll("[selected]").length){c0.push("\\["+cq+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)")}if(!dj.querySelectorAll(":checked").length){c0.push(":checked")}});cd(function(dj){dj.innerHTML="";if(dj.querySelectorAll("[i^='']").length){c0.push("[*^$]="+cq+"*(?:\"\"|'')")}if(!dj.querySelectorAll(":enabled").length){c0.push(":enabled",":disabled")}dj.querySelectorAll("*,:x");c0.push(",.*:")})}if((de.matchesSelector=cF((cb=cp.matchesSelector||cp.mozMatchesSelector||cp.webkitMatchesSelector||cp.oMatchesSelector||cp.msMatchesSelector)))){cd(function(dj){de.disconnectedMatch=cb.call(dj,"div");cb.call(dj,"[s!='']:x");dc.push("!=",cl)})}c0=new RegExp(c0.join("|"));dc=new RegExp(dc.join("|"));cG=cF(cp.contains)||cp.compareDocumentPosition?function(dk,dj){var dm=dk.nodeType===9?dk.documentElement:dk,dl=dj&&dj.parentNode;return dk===dl||!!(dl&&dl.nodeType===1&&(dm.contains?dm.contains(dl):dk.compareDocumentPosition&&dk.compareDocumentPosition(dl)&16))}:function(dk,dj){if(dj){while((dj=dj.parentNode)){if(dj===dk){return true}}}return false};cE=cp.compareDocumentPosition?function(dk,dj){var dl;if(dk===dj){cU=true;return 0}if((dl=dj.compareDocumentPosition&&dk.compareDocumentPosition&&dk.compareDocumentPosition(dj))){if(dl&1||dk.parentNode&&dk.parentNode.nodeType===11){if(dk===di||cG(cJ,dk)){return -1}if(dj===di||cG(cJ,dj)){return 1}return 0}return dl&4?-1:1}return dk.compareDocumentPosition?-1:1}:function(dk,dj){var dr,dn=0,dq=dk.parentNode,dm=dj.parentNode,dl=[dk],dp=[dj];if(dk===dj){cU=true;return 0}else{if(!dq||!dm){return dk===di?-1:dj===di?1:dq?-1:dm?1:0}else{if(dq===dm){return b7(dk,dj)}}}dr=dk;while((dr=dr.parentNode)){dl.unshift(dr)}dr=dj;while((dr=dr.parentNode)){dp.unshift(dr)}while(dl[dn]===dp[dn]){dn++}return dn?b7(dl[dn],dp[dn]):dl[dn]===cJ?-1:dp[dn]===cJ?1:0};cU=false;[0,0].sort(cE);de.detectDuplicates=cU;return cC};cw.matches=function(di,e){return cw(di,null,null,e)};cw.matchesSelector=function(dj,dl){if((dj.ownerDocument||dj)!==cC){cW(dj)}dl=dl.replace(cu,"='$1']");if(de.matchesSelector&&!ce&&(!dc||!dc.test(dl))&&!c0.test(dl)){try{var di=cb.call(dj,dl);if(di||de.disconnectedMatch||dj.document&&dj.document.nodeType!==11){return di}}catch(dk){}}return cw(dl,cC,null,[dj]).length>0};cw.contains=function(e,di){if((e.ownerDocument||e)!==cC){cW(e)}return cG(e,di)};cw.attr=function(di,e){var dj;if((di.ownerDocument||di)!==cC){cW(di)}if(!ce){e=e.toLowerCase()}if((dj=co.attrHandle[e])){return dj(di)}if(ce||de.attributes){return di.getAttribute(e)}return((dj=di.getAttributeNode(e))||di.getAttribute(e))&&di[e]===true?e:dj&&dj.specified?dj.value:null};cw.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};cw.uniqueSort=function(dj){var dk,dl=[],di=1,e=0;cU=!de.detectDuplicates;dj.sort(cE);if(cU){for(;(dk=dj[di]);di++){if(dk===dj[di-1]){e=dl.push(di)}}while(e--){dj.splice(dl[e],1)}}return dj};function b7(di,e){var dk=e&&di,dj=dk&&(~e.sourceIndex||cO)-(~di.sourceIndex||cO);if(dj){return dj}if(dk){while((dk=dk.nextSibling)){if(dk===e){return -1}}}return di?1:-1}function cx(e){return function(dj){var di=dj.nodeName.toLowerCase();return di==="input"&&dj.type===e}}function b8(e){return function(dj){var di=dj.nodeName.toLowerCase();return(di==="input"||di==="button")&&dj.type===e}}function c4(e){return ck(function(di){di=+di;return ck(function(dj,dn){var dl,dk=e([],dj.length,di),dm=dk.length;while(dm--){if(dj[(dl=dk[dm])]){dj[dl]=!(dn[dl]=dj[dl])}}})})}cI=cw.getText=function(dl){var dk,di="",dj=0,e=dl.nodeType;if(!e){for(;(dk=dl[dj]);dj++){di+=cI(dk)}}else{if(e===1||e===9||e===11){if(typeof dl.textContent==="string"){return dl.textContent}else{for(dl=dl.firstChild;dl;dl=dl.nextSibling){di+=cI(dl)}}}else{if(e===3||e===4){return dl.nodeValue}}}return di};co=cw.selectors={cacheLength:50,createPseudo:ck,match:cZ,find:{},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){e[1]=e[1].replace(ct,c2);e[3]=(e[4]||e[5]||"").replace(ct,c2);if(e[2]==="~="){e[3]=" "+e[3]+" "}return e.slice(0,4)},CHILD:function(e){e[1]=e[1].toLowerCase();if(e[1].slice(0,3)==="nth"){if(!e[3]){cw.error(e[0])}e[4]=+(e[4]?e[5]+(e[6]||1):2*(e[3]==="even"||e[3]==="odd"));e[5]=+((e[7]+e[8])||e[3]==="odd")}else{if(e[3]){cw.error(e[0])}}return e},PSEUDO:function(di){var e,dj=!di[5]&&di[2];if(cZ.CHILD.test(di[0])){return null}if(di[4]){di[2]=di[4]}else{if(dj&&cQ.test(dj)&&(e=cg(dj,true))&&(e=dj.indexOf(")",dj.length-e)-dj.length)){di[0]=di[0].slice(0,e);di[2]=dj.slice(0,e)}}return di.slice(0,3)}},filter:{TAG:function(e){if(e==="*"){return function(){return true}}e=e.replace(ct,c2).toLowerCase();return function(di){return di.nodeName&&di.nodeName.toLowerCase()===e}},CLASS:function(e){var di=b6[e+" "];return di||(di=new RegExp("(^|"+cq+")"+e+"("+cq+"|$)"))&&b6(e,function(dj){return di.test(dj.className||(typeof dj.getAttribute!==da&&dj.getAttribute("class"))||"")})},ATTR:function(dj,di,e){return function(dl){var dk=cw.attr(dl,dj);if(dk==null){return di==="!="}if(!di){return true}dk+="";return di==="="?dk===e:di==="!="?dk!==e:di==="^="?e&&dk.indexOf(e)===0:di==="*="?e&&dk.indexOf(e)>-1:di==="$="?e&&dk.slice(-e.length)===e:di==="~="?(" "+dk+" ").indexOf(e)>-1:di==="|="?dk===e||dk.slice(0,e.length+1)===e+"-":false}},CHILD:function(di,dl,dk,dm,dj){var dp=di.slice(0,3)!=="nth",e=di.slice(-4)!=="last",dn=dl==="of-type";return dm===1&&dj===0?function(dq){return !!dq.parentNode}:function(dw,du,dz){var dq,dC,dx,dB,dy,dt,dv=dp!==e?"nextSibling":"previousSibling",dA=dw.parentNode,ds=dn&&dw.nodeName.toLowerCase(),dr=!dz&&!dn;if(dA){if(dp){while(dv){dx=dw;while((dx=dx[dv])){if(dn?dx.nodeName.toLowerCase()===ds:dx.nodeType===1){return false}}dt=dv=di==="only"&&!dt&&"nextSibling"}return true}dt=[e?dA.firstChild:dA.lastChild];if(e&&dr){dC=dA[c6]||(dA[c6]={});dq=dC[di]||[];dy=dq[0]===df&&dq[1];dB=dq[0]===df&&dq[2];dx=dy&&dA.childNodes[dy];while((dx=++dy&&dx&&dx[dv]||(dB=dy=0)||dt.pop())){if(dx.nodeType===1&&++dB&&dx===dw){dC[di]=[df,dy,dB];break}}}else{if(dr&&(dq=(dw[c6]||(dw[c6]={}))[di])&&dq[0]===df){dB=dq[1]}else{while((dx=++dy&&dx&&dx[dv]||(dB=dy=0)||dt.pop())){if((dn?dx.nodeName.toLowerCase()===ds:dx.nodeType===1)&&++dB){if(dr){(dx[c6]||(dx[c6]={}))[di]=[df,dB]}if(dx===dw){break}}}}}dB-=dj;return dB===dm||(dB%dm===0&&dB/dm>=0)}}},PSEUDO:function(dk,dj){var e,di=co.pseudos[dk]||co.setFilters[dk.toLowerCase()]||cw.error("unsupported pseudo: "+dk);if(di[c6]){return di(dj)}if(di.length>1){e=[dk,dk,"",dj];return co.setFilters.hasOwnProperty(dk.toLowerCase())?ck(function(dn,dq){var dm,dl=di(dn,dj),dp=dl.length;while(dp--){dm=ca.call(dn,dl[dp]);dn[dm]=!(dq[dm]=dl[dp])}}):function(dl){return di(dl,0,e)}}return di}},pseudos:{not:ck(function(e){var di=[],dj=[],dk=cT(e.replace(cs,"$1"));return dk[c6]?ck(function(dm,ds,dq,dn){var dr,dl=dk(dm,null,dn,[]),dp=dm.length;while(dp--){if((dr=dl[dp])){dm[dp]=!(ds[dp]=dr)}}}):function(dn,dm,dl){di[0]=dn;dk(di,null,dl,dj);return !dj.pop()}}),has:ck(function(e){return function(di){return cw(e,di).length>0}}),contains:ck(function(e){return function(di){return(di.textContent||di.innerText||cI(di)).indexOf(e)>-1}}),lang:ck(function(e){if(!cR.test(e||"")){cw.error("unsupported lang: "+e)}e=e.replace(ct,c2).toLowerCase();return function(dj){var di;do{if((di=ce?dj.getAttribute("xml:lang")||dj.getAttribute("lang"):dj.lang)){di=di.toLowerCase();return di===e||di.indexOf(e+"-")===0}}while((dj=dj.parentNode)&&dj.nodeType===1);return false}}),target:function(e){var di=db.location&&db.location.hash;return di&&di.slice(1)===e.id},root:function(e){return e===cp},focus:function(e){return e===cC.activeElement&&(!cC.hasFocus||cC.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===false},disabled:function(e){return e.disabled===true},checked:function(e){var di=e.nodeName.toLowerCase();return(di==="input"&&!!e.checked)||(di==="option"&&!!e.selected)},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling){if(e.nodeName>"@"||e.nodeType===3||e.nodeType===4){return false}}return true},parent:function(e){return !co.pseudos.empty(e)},header:function(e){return cm.test(e.nodeName)},input:function(e){return b9.test(e.nodeName)},button:function(di){var e=di.nodeName.toLowerCase();return e==="input"&&di.type==="button"||e==="button"},text:function(di){var e;return di.nodeName.toLowerCase()==="input"&&di.type==="text"&&((e=di.getAttribute("type"))==null||e.toLowerCase()===di.type)},first:c4(function(){return[0]}),last:c4(function(e,di){return[di-1]}),eq:c4(function(e,dj,di){return[di<0?di+dj:di]}),even:c4(function(e,dj){var di=0;for(;di=0;){e.push(di)}return e}),gt:c4(function(e,dk,dj){var di=dj<0?dj+dk:dj;for(;++di1?function(dl,dk,di){var dj=e.length;while(dj--){if(!e[dj](dl,dk,di)){return false}}return true}:e[0]}function cY(e,di,dj,dk,dn){var dl,dr=[],dm=0,dp=e.length,dq=di!=null;for(;dm-1){dy[dA]=!(dv[dA]=ds)}}}}else{du=cY(du===dv?du.splice(dp,du.length):du);if(dm){dm(null,dv,du,dx)}else{b5.apply(dv,du)}}})}function c7(dn){var di,dl,dj,dm=dn.length,dr=co.relative[dn[0].type],ds=dr||co.relative[" "],dk=dr?1:0,dp=cr(function(dt){return dt===di},ds,true),dq=cr(function(dt){return ca.call(di,dt)>-1},ds,true),e=[function(dv,du,dt){return(!dr&&(dt||du!==dh))||((di=du).nodeType?dp(dv,du,dt):dq(dv,du,dt))}];for(;dk1&&dg(e),dk>1&&ch(dn.slice(0,dk-1)).replace(cs,"$1"),dl,dk0,dl=dk.length>0,di=function(dx,dr,dw,dv,dD){var ds,dt,dy,dC=[],dB=0,du="0",dn=dx&&[],dz=dD!=null,dA=dh,dq=dx||dl&&co.find.TAG("*",dD&&dr.parentNode||dr),dp=(df+=dA==null?1:Math.random()||0.1);if(dz){dh=dr!==cC&&dr;cc=dm}for(;(ds=dq[du])!=null;du++){if(dl&&ds){dt=0;while((dy=dk[dt++])){if(dy(ds,dr,dw)){dv.push(ds);break}}if(dz){df=dp;cc=++dm}}if(e){if((ds=!dy&&ds)){dB--}if(dx){dn.push(ds)}}}dB+=du;if(e&&du!==dB){dt=0;while((dy=dj[dt++])){dy(dn,dC,dr,dw)}if(dx){if(dB>0){while(du--){if(!(dn[du]||dC[du])){dC[du]=c9.call(dv)}}}dC=cY(dC)}b5.apply(dv,dC);if(dz&&!dx&&dC.length>0&&(dB+dj.length)>1){cw.uniqueSort(dv)}}if(dz){df=dp;dh=dA}return dn};return e?ck(di):di}cT=cw.compile=function(e,dm){var dj,di=[],dl=[],dk=cH[e+" "];if(!dk){if(!dm){dm=cg(e)}dj=dm.length;while(dj--){dk=c7(dm[dj]);if(dk[c6]){di.push(dk)}else{dl.push(dk)}}dk=cH(e,cV(dl,di))}return dk};function cz(di,dl,dk){var dj=0,e=dl.length;for(;dj2&&(di=dq[0]).type==="ID"&&e.nodeType===9&&!ce&&co.relative[dq[1].type]){e=co.find.ID(di.matches[0].replace(ct,c2),e)[0];if(!e){return dk}dj=dj.slice(dq.shift().value.length)}dl=cZ.needsContext.test(dj)?0:dq.length;while(dl--){di=dq[dl];if(co.relative[(dr=di.type)]){break}if((dp=co.find[dr])){if((dn=dp(di.matches[0].replace(ct,c2),cX.test(dq[0].type)&&e.parentNode||e))){dq.splice(dl,1);dj=dn.length&&ch(dq);if(!dj){b5.apply(dk,cn.call(dn,0));return dk}break}}}}}cT(dj,dm)(dn,e,ce,dk,cX.test(dj));return dk}co.pseudos.nth=co.pseudos.eq;function cS(){}co.filters=cS.prototype=co.pseudos;co.setFilters=new cS();cW();cw.attr=bK.attr;bK.find=cw;bK.expr=cw.selectors;bK.expr[":"]=bK.expr.pseudos;bK.unique=cw.uniqueSort;bK.text=cw.getText;bK.isXMLDoc=cw.isXML;bK.contains=cw.contains})(a3);var ak=/Until$/,bu=/^(?:parents|prev(?:Until|All))/,ao=/^.[^:#\[\.,]*$/,z=bK.expr.match.needsContext,by={children:true,contents:true,next:true,prev:true};bK.fn.extend({find:function(b4){var b7,b6,b5,e=this.length;if(typeof b4!=="string"){b5=this;return this.pushStack(bK(b4).filter(function(){for(b7=0;b71?bK.unique(b6):b6);b6.selector=(this.selector?this.selector+" ":"")+b4;return b6},has:function(b6){var b5,b4=bK(b6,this),e=b4.length;return this.filter(function(){for(b5=0;b5=0:bK.filter(e,this).length>0:this.filter(e).length>0)},closest:function(b7,b6){var b8,b5=0,e=this.length,b4=[],b9=z.test(b7)||typeof b7!=="string"?bK(b7,b6||this.context):0;for(;b5-1:bK.find.matchesSelector(b8,b7)){b4.push(b8);break}b8=b8.parentNode}}return this.pushStack(b4.length>1?bK.unique(b4):b4)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.first().prevAll().length:-1}if(typeof e==="string"){return bK.inArray(this[0],bK(e))}return bK.inArray(e.jquery?e[0]:e,this)},add:function(e,b4){var b6=typeof e==="string"?bK(e,b4):bK.makeArray(e&&e.nodeType?[e]:e),b5=bK.merge(this.get(),b6);return this.pushStack(bK.unique(b5))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}});bK.fn.andSelf=bK.fn.addBack;function aY(b4,e){do{b4=b4[e]}while(b4&&b4.nodeType!==1);return b4}bK.each({parent:function(b4){var e=b4.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return bK.dir(e,"parentNode")},parentsUntil:function(b4,e,b5){return bK.dir(b4,"parentNode",b5)},next:function(e){return aY(e,"nextSibling")},prev:function(e){return aY(e,"previousSibling")},nextAll:function(e){return bK.dir(e,"nextSibling")},prevAll:function(e){return bK.dir(e,"previousSibling")},nextUntil:function(b4,e,b5){return bK.dir(b4,"nextSibling",b5)},prevUntil:function(b4,e,b5){return bK.dir(b4,"previousSibling",b5)},siblings:function(e){return bK.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return bK.sibling(e.firstChild)},contents:function(e){return bK.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:bK.merge([],e.childNodes)}},function(e,b4){bK.fn[e]=function(b7,b5){var b6=bK.map(this,b4,b7);if(!ak.test(e)){b5=b7}if(b5&&typeof b5==="string"){b6=bK.filter(b5,b6)}b6=this.length>1&&!by[e]?bK.unique(b6):b6;if(this.length>1&&bu.test(e)){b6=b6.reverse()}return this.pushStack(b6)}});bK.extend({filter:function(b5,e,b4){if(b4){b5=":not("+b5+")"}return e.length===1?bK.find.matchesSelector(e[0],b5)?[e[0]]:[]:bK.find.matches(b5,e)},dir:function(b5,b4,b7){var e=[],b6=b5[b4];while(b6&&b6.nodeType!==9&&(b7===aH||b6.nodeType!==1||!bK(b6).is(b7))){if(b6.nodeType===1){e.push(b6)}b6=b6[b4]}return e},sibling:function(b5,b4){var e=[];for(;b5;b5=b5.nextSibling){if(b5.nodeType===1&&b5!==b4){e.push(b5)}}return e}});function aP(b6,b5,e){b5=b5||0;if(bK.isFunction(b5)){return bK.grep(b6,function(b8,b7){var b9=!!b5.call(b8,b7,b8);return b9===e})}else{if(b5.nodeType){return bK.grep(b6,function(b7){return(b7===b5)===e})}else{if(typeof b5==="string"){var b4=bK.grep(b6,function(b7){return b7.nodeType===1});if(ao.test(b5)){return bK.filter(b5,b4,!e)}else{b5=bK.filter(b5,b4)}}}}return bK.grep(b6,function(b7){return(bK.inArray(b7,b5)>=0)===e})}function B(e){var b5=d.split("|"),b4=e.createDocumentFragment();if(b4.createElement){while(b5.length){b4.createElement(b5.pop())}}return b4}var d="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",aB=/ jQuery\d+="(?:null|\d+)"/g,K=new RegExp("<(?:"+d+")[\\s/>]","i"),b3=/^\s+/,aE=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,m=/<([\w:]+)/,bY=/\s*$/g,U={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:bK.support.htmlSerialize?[0,"",""]:[1,"X
","
"]},aT=B(l),j=aT.appendChild(l.createElement("div"));U.optgroup=U.option;U.tbody=U.tfoot=U.colgroup=U.caption=U.thead;U.th=U.td;bK.fn.extend({text:function(e){return bK.access(this,function(b4){return b4===aH?bK.text(this):this.empty().append((this[0]&&this[0].ownerDocument||l).createTextNode(b4))},null,e,arguments.length)},wrapAll:function(e){if(bK.isFunction(e)){return this.each(function(b5){bK(this).wrapAll(e.call(this,b5))})}if(this[0]){var b4=bK(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){b4.insertBefore(this[0])}b4.map(function(){var b5=this;while(b5.firstChild&&b5.firstChild.nodeType===1){b5=b5.firstChild}return b5}).append(this)}return this},wrapInner:function(e){if(bK.isFunction(e)){return this.each(function(b4){bK(this).wrapInner(e.call(this,b4))})}return this.each(function(){var b4=bK(this),b5=b4.contents();if(b5.length){b5.wrapAll(e)}else{b4.append(e)}})},wrap:function(e){var b4=bK.isFunction(e);return this.each(function(b5){bK(this).wrapAll(b4?e.call(this,b5):e)})},unwrap:function(){return this.parent().each(function(){if(!bK.nodeName(this,"body")){bK(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){this.insertBefore(e,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(e){if(this.parentNode){this.parentNode.insertBefore(e,this)}})},after:function(){return this.domManip(arguments,false,function(e){if(this.parentNode){this.parentNode.insertBefore(e,this.nextSibling)}})},remove:function(e,b6){var b5,b4=0;for(;(b5=this[b4])!=null;b4++){if(!e||bK.filter(e,[b5]).length>0){if(!b6&&b5.nodeType===1){bK.cleanData(k(b5))}if(b5.parentNode){if(b6&&bK.contains(b5.ownerDocument,b5)){bt(k(b5,"script"))}b5.parentNode.removeChild(b5)}}}return this},empty:function(){var b4,e=0;for(;(b4=this[e])!=null;e++){if(b4.nodeType===1){bK.cleanData(k(b4,false))}while(b4.firstChild){b4.removeChild(b4.firstChild)}if(b4.options&&bK.nodeName(b4,"select")){b4.options.length=0}}return this},clone:function(b4,e){b4=b4==null?false:b4;e=e==null?b4:e;return this.map(function(){return bK.clone(this,b4,e)})},html:function(e){return bK.access(this,function(b7){var b6=this[0]||{},b5=0,b4=this.length;if(b7===aH){return b6.nodeType===1?b6.innerHTML.replace(aB,""):aH}if(typeof b7==="string"&&!am.test(b7)&&(bK.support.htmlSerialize||!K.test(b7))&&(bK.support.leadingWhitespace||!b3.test(b7))&&!U[(m.exec(b7)||["",""])[1].toLowerCase()]){b7=b7.replace(aE,"<$1>");try{for(;b5")){cb=b4.cloneNode(true)}else{j.innerHTML=b4.outerHTML;j.removeChild(cb=j.firstChild)}if((!bK.support.noCloneEvent||!bK.support.noCloneChecked)&&(b4.nodeType===1||b4.nodeType===11)&&!bK.isXMLDoc(b4)){b8=k(cb);b9=k(b4);for(b7=0;(b5=b9[b7])!=null;++b7){if(b8[b7]){R(b5,b8[b7])}}}if(b6){if(e){b9=b9||k(b4);b8=b8||k(cb);for(b7=0;(b5=b9[b7])!=null;b7++){au(b5,b8[b7])}}else{au(b4,cb)}}b8=k(cb,"script");if(b8.length>0){bt(b8,!ca&&k(b4,"script"))}b8=b9=b5=null;return cb},buildFragment:function(b4,b6,cb,cg){var cc,b8,ca,cf,ch,ce,b5,b9=b4.length,b7=B(b6),e=[],cd=0;for(;cd")+b5[2];cc=b5[0];while(cc--){cf=cf.lastChild}if(!bK.support.leadingWhitespace&&b3.test(b8)){e.push(b6.createTextNode(b3.exec(b8)[0]))}if(!bK.support.tbody){b8=ch==="table"&&!bY.test(b8)?cf.firstChild:b5[1]===""&&!bY.test(b8)?cf:0;cc=b8&&b8.childNodes.length;while(cc--){if(bK.nodeName((ce=b8.childNodes[cc]),"tbody")&&!ce.childNodes.length){b8.removeChild(ce)}}}bK.merge(e,cf.childNodes);cf.textContent="";while(cf.firstChild){cf.removeChild(cf.firstChild)}cf=b7.lastChild}}}}if(cf){b7.removeChild(cf)}if(!bK.support.appendChecked){bK.grep(k(e,"input"),bW)}cd=0;while((b8=e[cd++])){if(cg&&bK.inArray(b8,cg)!==-1){continue}ca=bK.contains(b8.ownerDocument,b8);cf=k(b7.appendChild(b8),"script");if(ca){bt(cf)}if(cb){cc=0;while((b8=cf[cc++])){if(bA.test(b8.type||"")){cb.push(b8)}}}}cf=null;return b7},cleanData:function(b4,cc){var b6,cb,b5,b7,b8=0,cd=bK.expando,e=bK.cache,b9=bK.support.deleteExpando,ca=bK.event.special;for(;(b6=b4[b8])!=null;b8++){if(cc||bK.acceptData(b6)){b5=b6[cd];b7=b5&&e[b5];if(b7){if(b7.events){for(cb in b7.events){if(ca[cb]){bK.event.remove(b6,cb)}else{bK.removeEvent(b6,cb,b7.handle)}}}if(e[b5]){delete e[b5];if(b9){delete b6[cd]}else{if(typeof b6.removeAttribute!==aD){b6.removeAttribute(cd)}else{b6[cd]=null}}a7.push(b5)}}}}}});var aF,bp,F,bh=/alpha\([^)]*\)/i,aU=/opacity\s*=\s*([^)]*)/,bo=/^(top|right|bottom|left)$/,G=/^(none|table(?!-c[ea]).+)/,aZ=/^margin/,ba=new RegExp("^("+bB+")(.*)$","i"),X=new RegExp("^("+bB+")(?!px)[a-z%]+$","i"),T=new RegExp("^([+-])=("+bB+")","i"),bk={BODY:"block"},bc={position:"absolute",visibility:"hidden",display:"block"},bD={letterSpacing:0,fontWeight:400},bU=["Top","Right","Bottom","Left"],aw=["Webkit","O","Moz","ms"];function b(b6,b4){if(b4 in b6){return b4}var b7=b4.charAt(0).toUpperCase()+b4.slice(1),e=b4,b5=aw.length;while(b5--){b4=aw[b5]+b7;if(b4 in b6){return b4}}return e}function Q(b4,e){b4=e||b4;return bK.css(b4,"display")==="none"||!bK.contains(b4.ownerDocument,b4)}function p(b9,e){var ca,b7,b8,b4=[],b5=0,b6=b9.length;for(;b51)},show:function(){return p(this,true)},hide:function(){return p(this)},toggle:function(b4){var e=typeof b4==="boolean";return this.each(function(){if(e?b4:Q(this)){bK(this).show()}else{bK(this).hide()}})}});bK.extend({cssHooks:{opacity:{get:function(b5,b4){if(b4){var e=F(b5,"opacity");return e===""?"1":e}}}},cssNumber:{columnCount:true,fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":bK.support.cssFloat?"cssFloat":"styleFloat"},style:function(b6,b5,cc,b7){if(!b6||b6.nodeType===3||b6.nodeType===8||!b6.style){return}var ca,cb,cd,b8=bK.camelCase(b5),b4=b6.style;b5=bK.cssProps[b8]||(bK.cssProps[b8]=b(b4,b8));cd=bK.cssHooks[b5]||bK.cssHooks[b8];if(cc!==aH){cb=typeof cc;if(cb==="string"&&(ca=T.exec(cc))){cc=(ca[1]+1)*ca[2]+parseFloat(bK.css(b6,b5));cb="number"}if(cc==null||cb==="number"&&isNaN(cc)){return}if(cb==="number"&&!bK.cssNumber[b8]){cc+="px"}if(!bK.support.clearCloneStyle&&cc===""&&b5.indexOf("background")===0){b4[b5]="inherit"}if(!cd||!("set" in cd)||(cc=cd.set(b6,cc,b7))!==aH){try{b4[b5]=cc}catch(b9){}}}else{if(cd&&"get" in cd&&(ca=cd.get(b6,false,b7))!==aH){return ca}return b4[b5]}},css:function(b9,b7,b4,b8){var b6,ca,e,b5=bK.camelCase(b7);b7=bK.cssProps[b5]||(bK.cssProps[b5]=b(b9.style,b5));e=bK.cssHooks[b7]||bK.cssHooks[b5];if(e&&"get" in e){ca=e.get(b9,true,b4)}if(ca===aH){ca=F(b9,b7,b8)}if(ca==="normal"&&b7 in bD){ca=bD[b7]}if(b4===""||b4){b6=parseFloat(ca);return b4===true||bK.isNumeric(b6)?b6||0:ca}return ca},swap:function(b8,b7,b9,b6){var b5,b4,e={};for(b4 in b7){e[b4]=b8.style[b4];b8.style[b4]=b7[b4]}b5=b9.apply(b8,b6||[]);for(b4 in b7){b8.style[b4]=e[b4]}return b5}});if(a3.getComputedStyle){bp=function(e){return a3.getComputedStyle(e,null)};F=function(b7,b5,b9){var b6,b4,cb,b8=b9||bp(b7),ca=b8?b8.getPropertyValue(b5)||b8[b5]:aH,e=b7.style;if(b8){if(ca===""&&!bK.contains(b7.ownerDocument,b7)){ca=bK.style(b7,b5)}if(X.test(ca)&&aZ.test(b5)){b6=e.width;b4=e.minWidth;cb=e.maxWidth;e.minWidth=e.maxWidth=e.width=ca;ca=b8.width;e.width=b6;e.minWidth=b4;e.maxWidth=cb}}return ca}}else{if(l.documentElement.currentStyle){bp=function(e){return e.currentStyle};F=function(b6,b4,b9){var b5,b8,ca,b7=b9||bp(b6),cb=b7?b7[b4]:aH,e=b6.style;if(cb==null&&e&&e[b4]){cb=e[b4]}if(X.test(cb)&&!bo.test(b4)){b5=e.left;b8=b6.runtimeStyle;ca=b8&&b8.left;if(ca){b8.left=b6.currentStyle.left}e.left=b4==="fontSize"?"1em":cb;cb=e.pixelLeft+"px";e.left=b5;if(ca){b8.left=ca}}return cb===""?"auto":cb}}}function aK(e,b5,b6){var b4=ba.exec(b5);return b4?Math.max(0,b4[1]-(b6||0))+(b4[2]||"px"):b5}function ax(b7,b4,e,b9,b6){var b5=e===(b9?"border":"content")?4:b4==="width"?1:0,b8=0;for(;b5<4;b5+=2){if(e==="margin"){b8+=bK.css(b7,e+bU[b5],true,b6)}if(b9){if(e==="content"){b8-=bK.css(b7,"padding"+bU[b5],true,b6)}if(e!=="margin"){b8-=bK.css(b7,"border"+bU[b5]+"Width",true,b6)}}else{b8+=bK.css(b7,"padding"+bU[b5],true,b6);if(e!=="padding"){b8+=bK.css(b7,"border"+bU[b5]+"Width",true,b6)}}}return b8}function v(b7,b4,e){var b6=true,b8=b4==="width"?b7.offsetWidth:b7.offsetHeight,b5=bp(b7),b9=bK.support.boxSizing&&bK.css(b7,"boxSizing",false,b5)==="border-box";if(b8<=0||b8==null){b8=F(b7,b4,b5);if(b8<0||b8==null){b8=b7.style[b4]}if(X.test(b8)){return b8}b6=b9&&(bK.support.boxSizingReliable||b8===b7.style[b4]);b8=parseFloat(b8)||0}return(b8+ax(b7,b4,e||(b9?"border":"content"),b6,b5))+"px"}function bF(b5){var b4=l,e=bk[b5];if(!e){e=a2(b5,b4);if(e==="none"||!e){aF=(aF||bK("