Commit Graph

748 Commits

Author SHA1 Message Date
Timur Alperovich 4dc33ab564 JCLOUDS-929: Implement delimiter support in Local.
Adds the delimiter support in the local blob store. The existing
directory implementation is preserved and is not compatible with the
delimiter option, as the existing implementation assumes the usage of
filesystem directories.
2015-07-13 14:34:59 -07:00
Timur Alperovich a29d75a5d1 JCLOUDS-929: Implement generic delimiter support.
The patch adds delimiter option support in the generic blob store
interface. A live integration test is added to verify that jclouds
correctly lists objects separated by a delimiter.
2015-07-13 14:34:58 -07:00
Andrew Gaul 7d7deefb75 JCLOUDS-894: Handle part size when > maximum
Azure has a small part size that was not handled by the existing
logic.  This code is twisty and confusing and should be rewritten!
2015-07-09 18:00:37 -07:00
Zack Shoylev 65b7bdf282 Removes CopyObjectException in favor of jclouds-standard blobstore exceptions 2015-07-09 18:28:14 -05:00
Timur Alperovich 669feb4d0c LocalBlobStore: list marker blobs with delimiters.
When the delimiter option is specified, local blob store should behave
similarly to swift and return the directory marker blobs (directory
blobs) and the common prefix. This undoes the filtering we were
previously doing.
2015-07-07 18:00:31 -07:00
Timur Alperovich 6d27fbb18a JCLOUDS-930: Handle subdir entries correctly.
When listing blobs, Swift returns an array of "subdir" entries for
every common prefix. The openstack-swift provider needs to process
such entries and add them to the result set. The subdir array is an
array of strings, so additional metadata needs to be added to the
objects (bogus ETag, bogus LastModifiedDate, and so on).

When directory marker blobs are used, this means that potential _two_
entries are generated for every directory if:
1. the delimiter is set and matches the directory blob (e.g. dir/ and
   delimiter /)
2. there are objects under the directory name (e.g. dir/blob), which
   will result in results that include common prefixes (subdir)

In the above example, we should expect two results: "dir" and "dir/"
representing the directory marker blob and the common prefix,
respectively.

This is caught in the testDirectory integration test.

The patch changes the behavior of the Swift provider to correctly
handle the results in the subdir stanza and changes the test to expect
the directory marker to be returned in the list.
2015-07-07 17:55:50 -07:00
Timur Alperovich 03248b4c94 JCLOUDS-930: LocalStore -- fixup for prefixes.
When filtering results, we have to consider that a result was added to
the common prefixes list in its entirety (i.e. a directory). Such
results should be filtered out from the delimiter test.

An example that demonstrates this problem is if one creates a
directory "foo" and an object within it called "file". When listing
the results, they will include the directory object "foo" and the
object under "foo/file". During a non-recursive listing, we create a
list of common prefixes ("foo"). Subsequently, jclouds should remove
all objects that include the delimiter ("/"), however, that would not
apply to "foo". With the change to include the delimiter in the
listing, we need to be careful not to return two values "foo" and
"foo/".

A unit test for the local blob store to highlight this problem is
included. An integration test "testDirectory" also catches this issue.
2015-07-07 16:31:04 +02:00
Timur Alperovich 3009da3761 JCLOUDS-930: Expect a trailing "/" in tests.
We should expect a trailing prefix in delimiter tests, as the object
stores will return common prefixes up to and including the delimiter
character.
2015-07-07 16:30:59 +02:00
Timur Alperovich 14087e56bd Relax membership assertion for the prefix test.
Relaxes the membership check in prefix testing. The check is no longer
sensitive to ordering of the results, as different providers may
append, prepend, or insert in sorted order the relative prefixes.
2015-07-06 15:10:29 -07:00
Andrew Gaul bf93cadec6 Use correct default in testPublicAccess
Regression from d57b6e7b8f.
2015-07-02 16:25:49 -07:00
Andrew Gaul bc9cda2e37 JCLOUDS-930: Remove bogus dependsOnMethods 2015-07-02 16:21:03 -07:00
Andrew Gaul d109dd6326 Use prefix instead of marker to list MPU parts 2015-06-30 13:43:01 -07:00
Timur Alperovich aade18b76d JCLOUDS-930: LocalBlobStore -- marker regression.
We should not append a "/" to the marker when returning list results
in the case of directories (RELATIVE_PATH), as the names will already
include the delimiter.

Added a jclouds test to catch such regressions in the local store in
the future.
2015-06-30 08:46:46 -07:00
Timur Alperovich 8677ffcb21 JCLOUDS-930: Implement prefix for LocalBlobStore.
Implements prefix support for the local blob store. The patch allows
for correctly parsing prefixes that may not terminate with a delimiter
(i.e. foo with delimiter "/" and a key foobar/key, should return
foobar/ as the common path) and ones that do (i.e. foo/).

NOTE: there is a small change in behavior in this patch.
LocalBlobStore used to return the common prefixes without the
delimiter character ("/"). However, other providers do include the
delimiter (I checked S3 and Google Cloud Storage) and LocalBlobStore
should include it as well.
2015-06-29 17:31:55 -07:00
Timur Alperovich db4e4e5ba7 Factor out the common prefixes method.
Refactoring the code in the list() method to create a common
extractCommonPrefixes method.
2015-06-29 17:31:55 -07:00
Timur Alperovich 7c7d2e2df6 JCLOUDS-930: Add the prefix option.
Add a prefix option to the ListContainerOptions class.
2015-06-29 17:31:55 -07:00
Timur Alperovich e63474a824 JCLOUDS-931: Sleep only after creating containers.
jclouds should issue the requests to create all of the containers in
the container pool before sleeping. The patch modifies the
createContainerAndEnsureEmpty() method to take an additional
parameter, which specifies whether awaitConsistency() should be called
or not.
2015-06-26 14:04:43 -07:00
Ka-Hing Cheung 8b325d585e object stores typically sort the list of containers 2015-06-24 15:08:23 -07:00
Andrew Gaul d57b6e7b8f Use correct port in testPublicAccess
Also reduce timeout from 20 minutes to 1.
2015-06-24 14:51:16 -07:00
Iván López f155242838 Add missing value in Content-Range header
This is related with #776. It's necessary to add
the 'bytes' string before the bytes.
2015-06-19 08:24:18 +02:00
Andrew Gaul 3a410a25a8 Test for Content-Range header in single range get
Also emit this header in LocalBlobStore.
2015-06-17 11:43:17 -07:00
Andrew Gaul 1f7f8c8c86 Refine HTTP 416 into IllegalArgumentException
Providers yield different messages so remove parsing from test.  Also
narrow exception handling scope.TTP 416 into IllegalArgumentException

Providers yield different messages so remove parsing from test.  Also
narrow exception handling scope.
2015-06-16 21:47:30 -07:00
Andrew Gaul b0dfae1092 Use a configurable timeout for awaitConsistency
This allows setting to zero for strongly-consistency implementations
of s3 and swift stores.
2015-06-15 15:45:17 -07:00
Ka-Hing Cheung 6ed95d8968 fix range get for manifest object
swift doesn't return the etag if the client is doing a range
get of a manifest (SLO or DLO), this fixes SwiftObject so
etag is optional
2015-06-10 13:38:55 -07:00
Ka-Hing Cheung 23ef39416d use awaitConsistency in more places so provider can override it 2015-06-09 23:05:37 -07:00
Ka-Hing Cheung 140fb7ea7b fix multipart put of a blob with content md5
previously the parts will carry the content md5 of the entire
object, because unsetting the md5 of a ContentMetadata actually
didn't do anything
2015-06-09 22:59:30 -07:00
Ka-Hing Cheung 573ceb51c3 metadata and content metadata should have the same length
for range get in a LocalBlobStore, metadata.getSize() has the
original blob size and contentMetadata.getContentLength() has
the actual payload size. Other blobstores have the same size
in both
2015-06-08 14:28:16 -07:00
Andrew Gaul f14514c068 JCLOUDS-894: Add portable multipart upload
This unifies the provider multipart upload code paths and removes code
duplication.
2015-06-06 16:32:16 -07:00
Andrew Gaul 00734ee755 JCLOUDS-894: Move MultipartUploadSlicingAlgorithm to core 2015-06-06 16:32:16 -07:00
Ka-Hing Cheung 1ccdae46fa remove blob uri from transient blobstore
container may not be valid hostnames and the current blob uri
code can fail. there isn't really a way to use uri for transient
blobstore anyway, and removing it is the easier option. for
reference, filesystem blobstore also doesn't do this
2015-05-30 22:24:48 -07:00
Andrew Gaul f19853c278 Revert "metadata and content metadata should have the same length"
This reverts commit bbafc34d46.
2015-05-27 22:19:15 -07:00
Ka-Hing Cheung 1103a778d2 implemented some basic range validations in local blob store
also fixed a range get bug in local blob store
2015-05-27 16:30:05 -07:00
Ka-Hing Cheung bbafc34d46 metadata and content metadata should have the same length
for range get in a LocalBlobStore, metadata.getSize() has the
original blob size and contentMetadata.getContentLength() has
the actual payload size. Other blobstores have the same size
in both
2015-05-26 16:45:34 -07:00
Zack Shoylev f397bebeb2 JCLOUDS-894 Multipart upload code fixes for swift 2015-05-12 19:13:15 -05:00
Andrew Gaul b9c5b5b4e9 JCLOUDS-894: Expose local blobstore multipart operations 2015-05-01 13:07:23 -07:00
Andrew Gaul 71cdba1571 JCLOUDS-894: Expose multipart component operations 2015-05-01 13:07:23 -07:00
Andrew Gaul 40ba156937 JCLOUDS-651: portable copy object content metadata 2015-04-08 17:58:41 -07:00
Andrew Gaul b35295c238 JCLOUDS-651: Add @Beta annotations to copy methods 2015-04-08 17:12:51 -07:00
Ignasi Barrera b6fcac9667 JCLOUDS-651: Fix filesystem integration tests in OSX 2015-04-07 10:53:48 +02:00
Andrew Gaul d8f48c48b4 JCLOUDS-651: Copy Swift system metadata 2015-04-06 15:35:59 -07:00
Andrew Gaul a6a232a7a1 JCLOUDS-651: Ensure copy replaces user metadata
Some object stores have additive semantics for metadata.  As currently
implemented Azure, S3, and Swift consistently replace user metadata
but have different behavior for system metadata, e.g., Content-Type.
2015-04-03 17:50:33 -07:00
Andrew Gaul 3cf8abc22e JCLOUDS-651: Add copyBlob to portable abstraction
Some providers optimize this operation with a server-side copy.  Add a
fallback implementation which does a client-side copy.
2015-04-02 15:36:52 -07:00
Zack Shoylev 914ad04ae9 Fixes missing consistency waits in testDirectory 2015-04-02 17:14:40 -05:00
Andrew Gaul 279a984fee JCLOUDS-732: Transient portable object ACLs 2015-03-31 15:33:34 -07:00
Andrew Gaul a062bf841a JCLOUDS-660: Transient portable container ACLs 2015-03-31 15:33:33 -07:00
Andrew Gaul e7940d52f9 Add ReadOnlyBlobStore
This prohibits mutating operations.
2015-03-31 13:13:19 -07:00
Andrew Gaul 9d9acd1559 Add ForwardingBlobStore
Useful for implementing various facades: encryption, read-only, etc.
2015-03-31 13:13:19 -07:00
Ignasi Barrera f469cf8b51 Next development version 2.0.0-SNAPSHOT 2015-03-24 10:52:01 +01:00
Ignasi Barrera bb41ed4341 Apache jclouds 1.9.0 release 2015-03-24 10:35:42 +01:00
Andrew Gaul 9f93941525 Add content length to exception message 2015-03-02 16:51:59 -08:00
Ka-Hing Cheung a2ee7341e3 fix non-recursive list of dir with empty prefix 2015-02-23 17:52:42 -08:00
Andrew Gaul d8aea21f72 JCLOUDS-732: Local blobstore portable object ACLs
Intentionally unimplemented.
2015-02-21 10:28:02 -08:00
Andrew Gaul 49cd0aeba2 JCLOUDS-732: portable object ACLs 2015-02-21 10:28:01 -08:00
Andrew Gaul bc81919c58 Add @Beta annotations to BlobStore ACL methods
Also add missing @Override annotations.
2015-02-21 10:18:57 -08:00
Ka-Hing Cheung be7b9f4cc4 fix non-recursive list with empty prefix 2015-02-20 23:29:48 -08:00
Zack Shoylev 290a458e5e Fixes more timing issues in the BaseBlobIntegrationTest 2015-02-18 04:53:40 -06:00
Zack Shoylev 07f1fb69a7 Fixes more tests with timing problems 2015-02-18 03:46:37 -06:00
Zack Shoylev 14d4ce635f Refactors BaseBlobIntegrationTest and eventual consistency fix 2015-02-17 04:49:35 -06:00
Zack Shoylev dce4cd29ec Refactors consitency pause in blob tests and more fixes 2015-02-16 13:21:06 -06:00
Zack Shoylev a8dde0550b Adds a few more pauses for eventual consistency 2015-02-16 11:54:26 -06:00
Andrew Gaul 9898e99b50 JCLOUDS-144: Portable multi-blob delete 2015-02-15 01:06:03 -08:00
Zack Shoylev f6d43f6962 Fixes blob-related tests that fail occasionally 2015-02-13 17:25:15 -06:00
Andrew Gaul 994f84e4f5 JCLOUDS-660: Local blobstore portable container ACLs
Intentionally unimplemented.
2015-02-12 17:26:47 -08:00
Andrew Gaul a19795800a JCLOUDS-660: portable container ACLs 2015-02-12 17:26:47 -08:00
Zack Shoylev 0423ba802a Makes testSignPutUrlWithTime much slower but passes live testing 2015-02-06 21:29:44 -06:00
Zack Shoylev 1f35e959aa Makes the test testSignGetUrlWithTime more robust 2015-02-06 15:37:27 -06:00
Zack Shoylev 041b047a2d Make testGetIfUnmodifiedSince a lot more robust (but slower) 2015-02-05 23:26:23 -06:00
Zack Shoylev a8c5e28129 Windows fixes, mostly separator related. 2015-01-28 19:47:19 -06:00
Zack Shoylev ca58f627d9 Fixes a problem on windows where the separator is different 2015-01-26 13:52:30 -06:00
Andrew Gaul 2ed971d216 Correct test expectation
Fixed by 49d7d9d3b7.
2015-01-23 21:07:45 -08:00
Andrew Gaul af1a01a0af JCLOUDS-96: Handle us-standard in testAllLocations 2015-01-23 19:24:44 -08:00
Andrew Gaul 49d7d9d3b7 Reorder list option handling for local blobstores
We should apply the prefix first, recursive second, marker third, and
max keys last.  Also add some fixes to pass delimiter tests.
2015-01-22 11:37:46 -08:00
Andrew Gaul da3e7463fd Add more tests for delimiter, prefixes, and marker
s3-tests uncovered interactions between these options which existing
tests do not exercise.
2015-01-22 11:37:46 -08:00
Ka-Hing Cheung 3cabb196ce fix usermetadata check on OS X
Java on OS X does not support extended attributes, which the
filesystem blobstore uses to implement user metadata. This disable
the relevant test on OS X
2015-01-20 17:33:22 -08:00
Andrew Gaul 0512fc6e35 Add @Nullable attribute to BlobStore methods
blobMetadata and getBlob return null when a blob does not exist and
callers should check for this.
2015-01-16 15:06:16 -08:00
Andrew Gaul 9542fa5d31 Do not check object counts in multi-part tests
Some providers, e.g., GCS and Swift, create multi-part blobs with a
manifest pointing to other blobs.  Thus a container will have
additional objects in its listing.
2015-01-16 05:45:27 -08:00
Andrew Gaul 8c5391505d JCLOUDS-805: Allow overriding addContentMetadata
For symmetry with checkContentMetadata.
2015-01-16 05:12:00 -08:00
Andrew Gaul 58612bc473 Expand pagination test and enable for Atmos
Tested against atmos, aws-s3, azureblob, filesystem,
google-cloud-storage, rackspace-cloudfiles-us, and transient.
2015-01-12 17:43:42 -08:00
Andrew Gaul fae097e144 JCLOUDS-654: Add object size to StorageMetadata
This allows callers to read the content length during container
listing.  Tested against: atmosonline, aws-s3, azureblob, filesystem,
and transient.  Intentionally not implemented for legacy swift
provider.
2015-01-09 22:34:56 -08:00
Andrew Gaul 91c47bfd92 JCLOUDS-801: Add portable multipart upload tests
Exercise both repeatable and non-repeatable payloads.  Tested against
AWS-S3, Azure, and legacy Swift.  Skipped on all other providers.
2015-01-09 21:59:25 -08:00
Ka-Hing Cheung b7ab8b18a0 support directory blobs
make the filesystem blob store distinguish between a/ and a. a/
must be a directory blob with no content and only metadata

on listing, only directories with md5 attribute is considered a
blob and returned
2015-01-09 16:28:16 -08:00
Andrew Gaul 77eaa2c1f9 Add container creation date to local blobstores 2015-01-09 14:10:33 -08:00
Jeremy Daggett d3c1e2eab4 Use AutoService to generate service loader metadata 2015-01-09 11:22:12 -08:00
Andrew Gaul d6d06b71f4 Handle listing with marker after the last key
Also handle zero maxResults.  Found with Ceph s3-tests and s3proxy.
2015-01-08 16:28:02 -08:00
Adrian Cole 8d0c7f9a6c JCLOUDS-534 Folded overly explicit use of HostAndPort, which is also incompatible with guava 16. 2014-10-29 17:01:26 -07:00
Adrian Cole 177fd6d37f Do not require Guava ByteSource in order to create a payload. 2014-10-29 10:20:39 -07:00
Adrian Cole 1702bddffa Revert "Replace uses of ByteArrayPayload"
This reverts commit bd5b6853ee.
2014-10-29 10:20:38 -07:00
Adrian Cole 2933a78a6b Revert "Prefer ByteSource payload"
This reverts commit 0e3d1475ab.
2014-10-25 10:29:22 -07:00
Adrian Cole 0a801d2ad2 Revert "JCLOUDS-652: Require JDK 7"
This reverts commit 5e8bd02c93.
2014-10-25 10:28:34 -07:00
Adrian Cole b9525a0877 JCLOUDS-40 unasync Fallback 2014-10-06 13:14:59 -07:00
Andrew Phillips ffc0df11c9 Restoring BlobStoreUtils.parseDirectoryFromPath
Removed in 56a2a8b but used in downstream repos, e.g. jclouds-karaf
2014-10-06 09:50:24 -04:00
Adrian Cole 99e217b720 Move off confusing test names. 2014-10-05 17:22:18 -07:00
Adrian Cole a4e3c1a2f8 JCLOUDS-40 Remove AsyncBlobStore 2014-10-05 13:17:54 -07:00
Adrian Cole 56a2a8bf4a JCLOUDS-40 Remove internal usage of AsyncBlobStore. 2014-10-05 08:49:54 -07:00
Adrian Cole dfb583b67a JCLOUDS-40 remove all implementations of AsyncBlobStore except Submission in preparation for complete removal. 2014-10-05 08:49:38 -07:00
Adrian Cole b6497556f6 JCLOUDS-150 add SubmissionAsyncBlobStore; unasync s3 and aws-s3 2014-10-03 13:18:29 -07:00
Andrew Gaul 0e3d1475ab Prefer ByteSource payload
Also use randomByteSource for test input.
2014-09-09 15:32:39 -07:00
Andrew Gaul bd5b6853ee Replace uses of ByteArrayPayload
Prefer ByteSourcePayload which offers a superset of its functionality.
Note that ByteArrayPayload implicitly set the contentLength while
users of ByteSourcePayload must do so explicitly.
2014-09-07 07:43:14 -07:00
Andrew Gaul 0b89b1fd10 Ensure that Content-MD5 has 128 bits
Update many tests Content-MD5 headers and ETag responses.
2014-09-04 16:57:48 -07:00
Andrew Gaul 34cfdbe266 Enforce Override annotation via Checkstyle
Also remove bogus inheritDoc on base and static methods.
2014-08-31 19:37:50 -07:00
Andrew Gaul 550018a68d Use randomByteSource to generate test data
This avoids buffering the entire bolus of data in-memory.
2014-08-27 15:59:36 -07:00
Andrew Gaul 60e3763999 Throw ContainerNotFoundException from removeBlob
This makes removeBlob consistent with all other user-facing methods.
2014-08-21 16:18:12 -07:00
Jeremy Daggett e711275fb1 Prefer isEmpty() for collections rather than size() 2014-08-20 11:07:48 -07:00
John Walker e5283df995 JCLOUDS-676: Fix reflection warnings / Clojure
JCLOUDS-676: Fix reflection warnings / Clojure

Also fixed a typo in a doc string
2014-08-17 12:03:30 -07:00
Andrew Gaul 20bc145284 JCLOUDS-650: ContainerNotFoundException on putBlob
Found with Ceph s3-tests and s3proxy.
2014-08-09 00:25:10 -07:00
Andrew Phillips e3d9851216 Up to 2.0.0-SNAPSHOT after the 1.8.0 release 2014-08-05 09:10:24 +02:00
Andrew Gaul 9c82ded343 Correct comment 2014-07-27 21:25:35 -07:00
Andrew Gaul 7f31cd6051 Handle possibly null message from IOException 2014-07-27 19:41:45 -07:00
Andrew Gaul 1e1eb5a092 Add deleteContainerIfEmpty to BlobStore
This matches how most blobstores operate: delete container is a single
operation, not a compound operation which recursively deletes blobs.
Azure is the only provider which allows deleting a non-empty
container.
2014-07-25 23:02:39 -07:00
Andrew Phillips 5732bdcd94 Escaping regex special chars (esp. '\') in delimiter matching
Uncovered by 370194b
2014-07-22 13:35:52 -04:00
Andrew Gaul f17c876d8d Replace const.txt file input with synthetic inputs
This commit replaces file resource-based test inputs with in-memory
equivalents.  This is more consistent and efficient than the previous
approach.  Also resized some test inputs to be partSize + 1 instead of
2 * partSize.  Tested against aws-s3, blobstore, core, cloudfiles-us,
and filesystem.
2014-07-19 18:35:25 -07:00
Andrew Gaul dd3dc9790e Close streams in integration tests
Also remove bogus delete workaround.  Previously unclosed
FileInputStream caused test failures on Windows which cannot delete
open files.  Found with Kohsuke's file-leak-detector.
2014-07-19 05:25:20 -07:00
Andrew Gaul fb60d76704 JCLOUDS-622: Remove most vestiges of InputSupplier
Guava 16 deprecated InputSupplier and a future release will remove it.
2014-07-16 16:07:59 -07:00
Andrew Gaul a8b106c2bb JCLOUDS-622: remove calls to InputSupplier methods
Guava 16 deprecated these methods and Guava 18 will remove them.
2014-07-15 03:09:58 -07:00
Andrew Gaul 75928795f3 Address Checkstyle violations 2014-07-15 03:07:29 -07:00
Andrew Gaul bdb5cbcbe7 Improve use of ByteSource with test resources
This commit ensures proper resource cleanup, simplifies
initialization, and paves the way for purely synthetic inputs in a
subsequent commit.
2014-07-11 09:10:51 -07:00
Andrew Gaul cf830af4d2 Remove unneeded InputSupplier helper
Also convert byte[] to HashCode.
2014-07-10 22:36:32 -07:00
Andrew Gaul f4eca0422d Enforce correct MD5 for local blobstores
Matches behavior of real blobstores.
2014-07-10 22:19:42 -07:00
Andrew Gaul 66dab8d96e JCLOUDS-410: Remove InputStreamSupplierPayload
ByteSourcePayload replaces this.  jclouds 1.7 deprecated
InputStreamSupplierPayload and Guava 16 deprecated InputSupplier
itself.
2014-07-10 20:43:08 -07:00
Andrew Gaul 8fa209b15e Use more specific testng asserts where possible
These asserts yield more informative error messages.  Found with:

grep -rI 'assertTrue(.* =='
grep -rI 'assertTrue(.* !='
grep -rI 'assertTrue(.*\.equals('
2014-06-24 13:54:01 -07:00
Chris Custine 309c053c77 JCLOUDS-584: HP Cloud Object Storage Fixes for 13.5 2014-06-24 12:01:51 -07:00
Andrew Gaul e799a7409c JCLOUDS-597: HashCode methods for Content-MD5
This works more naturally with Guava Hashing methods and immutability
provides better safety guarantees.  Also deprecate existing byte[]
methods.
2014-06-12 15:29:17 -07:00
Andrew Gaul 9cdd53b0b7 JCLOUDS-546: Remove Javadoc @author annotations
Annotations removed with:

find -name \*.java | xargs sed -i /@author/d

Empty Javadoc removed with multiple iterations of:

find -name \*.java | xargs sed -i -z 's/ \*\n \*\// \*\//'
find -name \*.java | xargs sed -i -z 's/ \* \n \*\// \*\//'
find -name \*.java | xargs sed -i -z 's/\/\*\*\n \*\/\n//'
2014-06-07 21:44:54 -07:00
Andrew Gaul da8517f295 Increase timeouts for signed URL tests
Clock skew between the client and blobstore can cause these tests to
spuriously fail.  This commit allows 5 seconds skew in either
direction.
2014-05-30 14:58:40 -07:00
Andrew Gaul 2342abd3c5 Address Checkstyle violations 2014-05-30 11:10:14 -07:00
Andrew Gaul 186f052022 Remove BlobBuilder and Payloads.calculateMD5
Callers should instead explicitly set contentMD5, usually with the
results from Guava Hashing.md5(). This narrows the API and removes a
strange IOException from callers.  Further it removes a dangerous
rebuffering of arbitrarily-large non-repeatable Payloads.
2014-05-28 12:54:18 -07:00
Andrew Gaul c6d4e6645c JCLOUDS-402: Allow Guava MediaType Content-Type
This promotes type-safety.  Keep the String interface for unknown
content types.
2014-05-28 11:45:00 -07:00
Andrew Gaul 70cf3e1f7c Make constants final classes instead of interfaces
This commit prohibits implementation of the empty interface and
instantiation of the class.  Refer to _Effective Java_ item 19 for
more background.
2014-05-16 09:45:52 -07:00
Andrew Gaul 8d51ad6f87 Prefer Guava HttpHeaders over JAX-RS
jclouds code contains more instances of the former and Guava has
additional constants like CONTENT_MD5.
2014-05-15 01:55:51 -07:00
Andrew Gaul 7f28dcef07 Remove deprecation from getConsistencyModel
This method informs callers of the expected blobstore behavior,
avoiding unnecessary work for providers which support strict
consistency (Azure, mock blobstores).
2014-05-09 13:20:42 -07:00
Andrew Gaul 2d88f5164e Enforce that all commas have trailing whitespace 2014-05-08 18:28:08 -07:00
Andrew Gaul a45124c51a JCLOUDS-505: Remove unused ObjectMD5
The only users of this seem to be
org.jclouds.atmos.blobstore.strategy.FindMD5InUserMetadata and
org.jclouds.azureblob.blobstore.strategy.FindMD5InBlobProperties which
are themselves unused.
2014-05-07 10:16:18 +02:00
Shri Javadekar c6cb169dee Creating a separate function to delete directories
Small refactoring to reuse some code.
2014-04-22 11:22:13 +02:00
Andrew Gaul d0bd30cc15 Address several Guava InputSupplier deprecations
Many remain due to Payload implementing InputSupplier<InputStream>.  Guava 18
will remove InputSupplier.
2014-04-12 12:02:26 -07:00
Shri Javadekar 655aa444d7 JCLOUDS-510 Delete objects in a container efficiently.
The existing approach for deleting objects in a container suffers
from a head-of-line blocking problem. This commit implements a better
scheme which does not have that problem. This scheme uses a counting
semaphore for making sure that a certain number of futures are
issued in parallel. As each of these futures is completed, one
permit of the semaphore is released.

Added unit tests for testing this new scheme.
2014-03-26 13:48:28 -07:00
Andrew Gaul d7e0b3b10c Remove WriteTo
Guava helpers capture this functionality in a more idiomatic way.
2014-02-21 17:13:31 -08:00
Andrew Gaul 9a1aae8cfc JCLOUDS-410: Remove StreamingPayload
Only two tests use this class.  Callers should use ByteSourcePayload
or InputStreamPayload instead.
2014-02-19 21:27:31 -08:00
Andrew Gaul f5c9a72243 Add ByteSource Payload support for Clojure 2014-02-19 21:09:55 -08:00
Andrew Gaul 266d7f847b Prefer ByteSource over deprecated InputSupplier 2014-02-18 22:35:10 -08:00
Andrew Gaul 9416416ff4 Address Checkstyle violations 2014-01-19 20:51:51 -08:00
Andrew Gaul c7b0f66544 Replace calls to Closeables.closeQuietly
Guava 16 removes this API.  Replace with Closeables2.closeQuietly.
References JCLOUDS-413 and JCLOUDS-415.
2013-12-21 12:30:59 -08:00
Andrew Bayer c1ee11d9bd Updating to 1.8.0-SNAPSHOT 2013-12-17 11:31:56 -08:00
Andrew Gaul d25e972344 JCLOUDS-401. Make BlobName Function type-safe 2013-12-16 15:04:14 -08:00
Andrew Gaul ac06e32e72 JCLOUDS-399: Deprecate BlobBuilder.calculateMD5
Callers should instead call BlobBuilder.contentMD5, usually with the
results from Guava Hashing.md5().  This narrows the API and removes a
strange IOException from callers.
2013-12-16 13:40:38 -08:00
Andrew Gaul e48d4985ea JCLOUDS-410. Add support for ByteSource Payloads
Also deprecate byte[], File, InputSupplier<InputStream>, and String
Payloads.  Callers should instead provide a ByteSource via
ByteSource.wrap(byte[]) and Files.asByteSource(File)
2013-12-16 13:06:30 -08:00
Andrew Gaul ac1f05ffac Remove unneeded calls to ByteSources.asByteSource 2013-12-15 22:57:32 -08:00
Andrew Gaul 828d8790c2 Enforce no unused imports via Checkstyle
Removed with:

mvn checkstyle:checkstyle --quiet -Dcheckstyle.output.file=/dev/stdout -Dcheckstyle.output.format=plain | tac | while read i; do echo $i | sed -n 's/\([^:]*\):\([^:]*\):.*/sed -i \2d \1/p' | bash; done
2013-12-11 17:27:43 -08:00
Andrew Gaul 4cef85d1cd Address Checkstyle violations in tests 2013-12-09 14:40:07 -08:00
Andrew Gaul 6c5effcdb1 Address error-prone empty statement warnings 2013-11-05 16:22:44 -08:00
Zack Shoylev cb9a6b9413 Reduces parallelism to make test work better with slower connections Adjusts test timing to work properly and reliably 2013-10-30 10:33:15 -05:00
Andrew Phillips f196ee3b6b Move Expect: 100 stripping after asserts against the request
Follow-up to e30f86521
2013-10-19 20:05:42 -07:00
Andrew Gaul e30f865215 Work around CloudFiles test failures
Java helpfully interprets Expect: 100-continue instead of returning
the response code.  This commit reverts
100afba1d8.
2013-10-17 13:08:02 -07:00
Zack Shoylev 7593935380 JCLOUDS-332 Skips tests broken on windows 2013-10-08 15:07:35 -05:00
Andrew Gaul 7d20658b02 JCLOUDS-334. Return URI only if container created
This allows us to honor the BlobStore.createContainerInLocation
interface and gives consistency with other providers.
2013-10-08 13:03:55 -07:00
Andrew Gaul f1fc63ab76 Add whitespace around keywords and braces 2013-09-30 09:39:29 -07:00
Andrew Gaul 5f8961723f Remove BlobStore Map abstractions
These provide little end-user benefit and make evolving the core API
more difficult.  We deprecated these in 1.6.0.
2013-09-25 20:46:31 -07:00
Andrew Gaul 94452a97cd Skip unimplemented test with transient blobstore 2013-09-16 02:48:57 -07:00
Andrew Gaul 6cc8e36f43 Add test for correct and incorrect contentMD5
Tested against atmos (skipped), aws-s3, azureblob, cloudfiles-us, and
filesystem (skipped).
2013-09-11 16:10:45 -07:00
Andrew Gaul 8bdded3222 Delete containers after integration tests
Also return newly allocated containers to the pool.
2013-09-09 16:47:40 -07:00
Andrew Gaul 0d6ef06076 Reduce testFileGetParallel input size to ~160 KB
Previously this test downloaded 45 MB in 30 seconds which failed on
slower connections, causing spurious test failures.  The larger input
size provides no benefit.
2013-09-04 19:49:46 -07:00
Andrew Gaul 3ad6b275d4 Run some filesystem integration tests
Previously no integration tests ran, now we see:

Tests run: 43, Failures: 0, Errors: 0, Skipped: 8
2013-09-04 13:26:46 -07:00
Andrew Gaul e27ae6117c Reduce testPutFileParallel input size to ~160 KB
Previously this test uploaded ~10 MB in 30 seconds which failed on
slower connections, causing spurious test failures.  The larger input
size provides no benefit.
2013-09-02 19:33:15 -07:00
Andrew Gaul 607b178c6b Simplify testPutFileParallel
Create only one temporary file and use explicit delete instead
finalization to remove it.
2013-08-27 23:06:18 -07:00
Andrew Gaul 4ca531aa98 Allocate new container name using prefix
Before we used the previous container name, which kept appending and
hit S3 limits during integration tests like:

Caused by: java.lang.IllegalArgumentException: Object 'gaul-blobstore27-4348532805015069992-1155797412711190448-1465016400636204031' doesn't match S3 bucket virtual host naming convention. Reason: Can't be null or empty. Length must be 3 to 63 symbols.. For more info, please refer to http://docs.amazonwebservices.com/AmazonS3/latest/index.html?BucketRestrictions.html
2013-08-27 23:02:55 -07:00
Andrew Gaul d387a25113 Enforce a non-negative content length 2013-08-26 20:20:49 -04:00
Francis Devereux d60d2681d1 JCLOUDS-251: Swift: Delete chunks when deleting a multipart blob
Also:
- Make SwiftBlobIntegrationLiveTest.testMultipartChunkedFileStream more realistic by uploading a file large enough to be split into parts.
- JavaDoc fixes for SwiftBlobStore: don't reference nonexistent methods.
2013-08-25 10:20:22 -05:00
Andrew Gaul 1a6be0eb67 Do not repeat array type in initializers 2013-06-18 21:02:50 -07:00
Andrew Gaul 86147cd961 Remove AsyncBlobStore from DeleteAllKeysInList
We deprecated AsyncBlobStore in 1.6.0.  Subsequent commits will
require the caller to provide an ExecutorService.
2013-06-05 10:41:55 -07:00
Andrew Gaul 64e9a4e4c6 Remove Strings2.replaceAll(String, char, String)
String.replace(String, String) serves this purpose better.
2013-06-03 14:41:18 -07:00
adriancole ed2f18a1af JCLOUDS-31. updated to ASF headers via mvn com.mycila.maven-license-plugin:maven-license-plugin:format 2013-05-16 21:30:37 -07:00
adriancole fa10fc4838 JCLOUDS-31. remove malformed, duplicate, or unnecessary headers 2013-05-16 21:30:32 -07:00
Andrew Bayer 7923009eb5 JCLOUDS-37. Fix RAT violations in incubator-jclouds, master branch 2013-05-13 19:17:50 -07:00
Andrew Bayer 446ac67884 JCLOUDS-30. Switch to 2 space indents for POM files. 2013-05-13 12:04:43 -07:00
Andrew Bayer 259b04ff1c JCLOUDS-16. Switch groupId to org.apache.jclouds, change parent POM, remove old distributionManagement content, add ASF repos. 2013-05-13 12:04:42 -07:00
Andrew Gaul 04fad88fd3 Remove duplicate Utils getters
Rename callers as required.
2013-04-12 16:24:37 -07:00
adriancole fbe9f945e7 rename bindMappedApi -> bindSyncToAsyncApi 2013-04-10 08:57:32 -07:00
adriancole 61067d3683 Deprecated remaining code related to RestContext, RestApiMetadata, and RestClientModule for ApiContext, HttpApiMetadata, HttpApiModule 2013-04-09 22:07:43 -07:00
adriancole f56da43db1 deprecated blobstore interfaces that imply complex internal code 2013-04-09 14:37:34 -07:00
Andrew Gaul 648e6c2a8a Remove InputSuppliers.of(InputStream)
This method breaks the contract of an InputSupplier since every call
to getInput returns the same InputStream instance.  This is
particularly dangerous when one of the callers mutates or closes the
InputStream which causes all others callers to fail.
2013-04-03 13:19:42 -07:00
Andrew Gaul 15f4d041b4 Parameterize max errors for clear container
Also use setter injection for max request time.
2013-03-29 13:36:57 -07:00
Andrew Gaul 371db8d18f Address Xlint warnings 2013-03-13 22:23:19 -07:00
Adrian Cole fb69ae0fa9 bump master to 1.7.0-SNAPSHOT 2013-03-08 23:02:40 -08:00
adriancole c31145e42e [maven-release-plugin] prepare for next development iteration 2013-03-04 06:13:59 -08:00
adriancole 0eb3ee8091 [maven-release-plugin] prepare release jclouds-1.6.0-alpha.4 2013-03-04 06:13:57 -08:00
Adrian Cole 941612ad09 add name to blobs in BlobMap tests 2013-03-02 09:16:26 -08:00
Andrew Gaul faf6b2f39e Prohibit null and empty blob names in BlobBuilder 2013-02-27 11:36:29 -08:00
Andrew Gaul ec4cdfda05 Address FindBugs complaints 2013-02-22 09:29:22 -08:00
Andrew Gaul b51ce5994a Expose resource creation date 2013-02-18 11:26:44 -08:00
Andrew Gaul 3734fe8100 Replace unneeded Function with imperative approach
The latter is more concise, faster, and compact.  .class size in bytes
before:

LocalAsyncBlobStore$5.class      1883
LocalAsyncBlobStore.class       20743

and after:

LocalAsyncBlobStore.class       21041
2013-02-05 10:20:24 -08:00
adriancole 89fda8ee28 [maven-release-plugin] prepare for next development iteration 2013-02-04 17:30:46 -08:00
adriancole 2b0ad28f26 [maven-release-plugin] prepare release jclouds-1.6.0-alpha.2 2013-02-04 17:30:44 -08:00
adriancole 267069755e [maven-release-plugin] prepare for next development iteration 2013-02-02 08:41:53 -08:00
adriancole 7c924b312f [maven-release-plugin] prepare release jclouds-1.6.0-alpha.1 2013-02-02 08:41:51 -08:00
adriancole 40d9f8bfe7 changes that facilitate synchronous fallbacks and http invocation 2013-01-29 04:09:45 -08:00
Andrew Gaul 60a7d1b4f8 Call BlobUtils.clearContainer directly
BaseAsyncBlobStore.clearContainer returns a Future which we previously
did not manage correctly, hanging when deleting non-existent
containers.  Call BlobUtils.clearContainer directly to address this.
2013-01-23 22:27:18 -08:00
Andrew Gaul bd7300ad92 Dynamically generate base blobstore input
This removes a single large image from the source tree.
2013-01-22 10:57:14 -08:00
Andrew Gaul af963df92d Use Map.entrySet where possible
Improves run-time efficiency and addresses FindBugs warnings.
2013-01-21 23:59:42 -08:00
Adrian Cole b890e1d36b Merge pull request #1218 from maginatics/delete-container-skip-exponential-backoff
Skip exponential backoff if we exceed maxErrors
2013-01-21 19:59:44 -08:00
Andrew Gaul 25b012587d Skip exponential backoff if we exceed maxErrors 2013-01-21 18:22:41 -08:00
Adrian Cole 37e587ee51 changes related to centralizing construction of invokables 2013-01-19 17:17:30 -08:00