Commit Graph

446 Commits

Author SHA1 Message Date
adriancole 04fe89b75a update to guava 14.0-rc2 2013-01-18 16:02:25 -08:00
Adrian Cole a49a060152 There can be only one retryable predicate; use Predicates2.retry decorator 2013-01-13 20:30:34 -08:00
Adrian Cole 3962b30808 updated to use standard guava Futures and ListenableFuture 2013-01-13 09:31:10 -08:00
Adrian Cole 015fbf22a2 removed redundant retrying assertion code 2013-01-12 14:04:47 -08:00
Adrian Cole 47c215c63c removed custom guava code for scoped binding and type params 2013-01-08 22:48:10 -08:00
Adrian Cole 2480481835 dependent changes on tests and internal classes 2013-01-08 00:32:45 -08:00
Adrian Cole 3089111621 refactored internal code and tests to use FunctionalReflection 2013-01-07 00:36:31 -08:00
Adrian Cole 42c7037a59 removed unused code or duplicated code; moved code only used once to where its used 2013-01-01 00:08:34 -08:00
Adrian Cole 9745e9dc2f fixed covariance and warnings on ApiMetadata subclasses 2012-12-31 19:40:49 -08:00
Adrian Cole bb953c981e fix issue #1101: Move to Guava 14 BaseEncoding and Hashing 2012-12-31 14:48:31 -08:00
Adrian Cole cddd35bc51 removed unnecessary generic types and made RestAnnotationProcessor immutable 2012-12-30 23:18:59 -08:00
Adrian Cole 2523ab54ac removed use of static fields to share type mapping info 2012-12-30 17:22:03 -08:00
Adrian Cole 13d8b9c402 replaced @Timeout w/explicit properties 2012-12-30 12:31:43 -08:00
Adrian Cole 9b1872c6ff removed custom code that duplicates functionality of guava fallbacks 2012-12-27 16:54:31 -08:00
Andrew Gaul 60d61ceb91 Add more logging to DeleteAllKeysInList
This allows monitoring of progress of long deletes via debug logs.
2012-12-26 21:27:13 -08:00
Adrian Cole 20c3426fc8 replaced jersey w/Uris & UriTemplates; removed complexity in url encoding and edge cases like matrix params 2012-12-24 14:32:59 -08:00
Everett Toews 3d83d788af Fixed issue where an Accept header is required when doing HEAD requests to Cloud Files. 2012-12-14 16:50:47 -06:00
Adrian Cole 878ec1bcab undid Serializable and added checkstyle InterfaceIsType:allowMarkerInterfaces=false 2012-11-18 09:23:44 -08:00
Andrew Gaul b16ca139a4 Honor PROPERTY_REQUEST_TIMEOUT in clearContainer 2012-11-13 13:27:18 -08:00
Andrew Gaul 3ad36d25d5 Enforce no unnecessary parentheses via Checkstyle 2012-11-10 13:22:12 -08:00
Adrian Cole c7c27e12e2 improved javadoc including where to look for alternative syntax 2012-11-07 12:02:52 -03:00
Andrew Gaul 3d191253ec Enforce use of Collection helpers via Checkstyle
This ensures that we do not repeat the type name.  Some instances remain
due to auto-generated code in dmtf/cim/Cim*.
2012-11-04 20:45:49 -08:00
Adrian Cole beb36eac75 Merge pull request #940 from andrewgaul/checkstyle-misc
Miscellaneous Checkstyle fixes
2012-11-04 08:50:47 -08:00
Andrew Gaul 38b95f5ad9 Miscellaneous Checkstyle fixes
Nothing can extend a byte[] and remove a previous hidden unused import.
2012-11-01 19:11:59 -07:00
Andrew Gaul 76a5538229 Cancel Futures in clearContainer
This prevents Futures from hanging around on exceptional code paths like
interrupts and timeouts.
2012-11-01 17:18:38 -07:00
Adrian Cole 5da5161485 Merge pull request #909 from andrewgaul/clear-container-timeout-exception
Throw TimeoutException from awaitCompletion
2012-10-30 08:57:20 -07:00
Andrew Gaul 93d69ece2b Enforce newline at end of file via Checkstyle
Also address all warnings, via:

find -name \*.java | while read i; do if [ x`tail -c 1 $i` != x"" ]; then echo >> $i; fi; done
2012-10-29 22:12:44 -07:00
Andrew Gaul 709ca69a2d Enforce that all imports are used via Checkstyle
Also remove all unused imports, via:

mvn checkstyle:checkstyle -Dcheckstyle.output.file=/dev/stdout -Dcheckstyle.output.format=plain | tac | awk -v FS=: '/warning/{print "sed -i " $2 "d " $1}' | while read i; do $i; done
2012-10-29 17:11:08 -07:00
Andrew Gaul 336ccfa2e6 Throw TimeoutException from awaitCompletion
This is a common error that callers should interpret correctly.  For
DeleteAllKeysInList, we integrate into its retry and backoff logic,
and for other callers, we continue to propagate RuntimeException.
2012-10-25 13:50:29 -07:00
Andrew Gaul 28d7a6f143 Prefer immutable over empty collections
The former does not create an object when calling iterator(), as
discussed here:

https://groups.google.com/d/msg/jclouds-dev/l7BviKDXreA/mP6Ow_RYxIgJ
2012-10-20 15:35:29 -07:00
Adrian Cole 9e8b4756c2 Merge pull request #894 from andrewgaul/files-tostring
Prefer Files.toString over FileInputStream
2012-10-11 02:05:46 -07:00
Andrew Gaul 2b8b72758f Prefer Files.toString over FileInputStream 2012-10-10 21:33:22 -07:00
Andrew Gaul 331c3be2e8 Retry each operation up to maxErrors times
Previously we only allowed maxErrors per directory, which tended to
fail with large directories.  Also rename counter to something more
intuitive.
2012-10-10 17:54:38 -07:00
Adrian Cole ffa9cd3bb0 corrected guice bindings for swift-based blob signatures and backfilled expect tests 2012-10-10 12:03:23 +02:00
Andrew Gaul 9f6b9d4d8a Rename to LocalBlobRequestSigner
Missing commit from the Filesystem and Transient unification.
2012-10-07 22:54:03 -07:00
Adrian Cole a77a80f030 Issue 1092: fix hostname when path-based buckets are used in non-default location 2012-09-25 21:22:17 -07:00
Andrew Gaul ad87c596d9 Avoid Futures.getUnchecked in DeleteAllKeysInList
This masks InterruptedException.  We should rework the logic in
execute to unwind the stack on errors; currently we only return from
the leaf method.
2012-09-19 15:54:31 -07:00
Adrian Cole 28d766b9df bumped to 1.6.0-SNAPSHOT 2012-09-17 01:43:52 -07:00
Andrei Savu 080d142ae1 Generic support for Swift TempUrl middleware 2012-09-16 21:46:51 +03:00
Andrei Savu 327066acd7 Added @Beta annotations on the new methods in BlobRequestSigner 2012-09-11 23:55:21 +03:00
Andrei Savu 49bde19fa0 Add support for Swift TempURL Middleware 2012-09-10 13:45:55 +03:00
Adrian Cole c7f35d3bb1 removed invalid @Nullable usage and also usage of javax package usage 2012-08-11 20:59:16 -07:00
Andrew Gaul 8ed0e28e68 Spelling corrections 2012-07-26 22:39:35 -07:00
Adrian Cole 92f9cc4c0c Merge pull request #756 from andrewgaul/reorder-strategy
Shuffle strategy methods into consistent order
2012-07-26 17:04:39 -07:00
Andrew Gaul f5548f3a94 Shuffle strategy methods into consistent order
Group by container, blob, and miscellaneous methods.  Within these
groups, sort by by exists, getter, setter, and remove.  Code movement
only; no functional changes.
2012-07-26 13:52:23 -07:00
Andrew Gaul ead8748199 Avoid unneeded branch in LocalAsyncBlobStore 2012-07-26 13:44:14 -07:00
Andrew Gaul 6b8a2a73d4 Add missing @Override in TransientStorageStrategy 2012-07-23 13:31:21 -07:00
Andrew Gaul 562f8277d3 Introduce LocalAsyncBlobStore
This commit unifies the filesystem and transient blobstores.
2012-07-23 09:20:41 -07:00
Andrew Gaul 756e46333f Miscellaneous local blobstore cleanups
There are no more functional differences between the filesystem and
transient blobstores.  This is the last commit before introducing a
unified LocalAsyncBlobStore class.
2012-07-23 08:06:36 -07:00
Adrian Cole b890765e9e Merge pull request #738 from andrewgaul/local-blobstore-move-helper-method
Move helper method to TransientStorageStrategy
2012-07-23 07:37:30 -07:00
Adrian Cole d5f9bb3172 Merge pull request #739 from andrewgaul/prefer-valueof
Prefer valueOf over explicit object creation
2012-07-22 22:00:09 -07:00
Andrew Gaul 985cccff9a Prefer valueOf over explicit object creation
This allows use of cached values.  Patched with:

find -name \*.java | xargs sed -i 's/new Boolean(false)/Boolean.FALSE/g'
find -name \*.java | xargs sed -i 's/new Boolean(true)/Boolean.TRUE/g'
find -name \*.java | xargs sed -i 's/new Boolean(/Boolean.valueOf(/g'
find -name \*.java | xargs sed -i 's/new Integer(/Integer.valueOf(/g'
find -name \*.java | xargs sed -i 's/new Long(/Long.valueOf(/g'
2012-07-22 21:01:46 -07:00
Andrew Gaul 22da88d2ae Move helper method to TransientStorageStrategy
Also move etag generation since we cannot reuse Payloads in the
general case.
2012-07-22 20:02:59 -07:00
Andrew Gaul 0bc5c69a4f Move copy(MutableBlobMetadata) to BlobStoreUtils 2012-07-22 17:37:18 -07:00
Andrew Gaul 870ed0cdb3 Shuffle blobstore parameters to match superclass
Also remove unused injected parameter.
2012-07-19 07:17:02 -07:00
Adrian Cole 70fa74df1a Merge pull request #731 from andrewgaul/input-supplier
Prefer InputSupplier helpers
2012-07-19 04:34:25 -07:00
Andrew Gaul a40983a39d Prefer InputSupplier helpers
These ensure that inputs are closed properly.

Updated with: find -name \*.java | xargs sed -i
's/toStringAndClose(\(.*\)\.getInput())/toString(\1)/'
2012-07-18 17:42:48 -07:00
Andrew Gaul a2d5a48f3f Inject TransientStorageStrategy
Remove some unneeded checkNotNull as Guice does not inject null
parameters.
2012-07-18 16:02:07 -07:00
Andrew Gaul 8a9265f015 Tie up odds and ends from LocalStorageStrategy
Use LocalStorageStrategy instead of TransientStorageStrategy and
handle IOExceptions.  Aso use dummy location in filesystem blobstore.
2012-07-18 09:45:23 -07:00
Andrew Gaul c30c2c4809 Introduce LocalStorageStrategy
This commit will allow eventual unification of the filesystem and
transient blobstores.  No functional changes -- rename
FilesystemStorageStrategy to LocalStorageStrategy and implement it in
FilesystemStorageStrategyImpl and TransientStorageStrategy.
2012-07-17 23:11:10 -07:00
Adrian Cole 007eba6d7c Merge pull request #723 from andrewgaul/filesystem-transient-input-supplier
Ensure we close streams via InputSupplier methods
2012-07-17 15:23:47 -07:00
Andrew Gaul bd5bf0dad2 Ensure we close streams via InputSupplier methods 2012-07-17 11:46:10 -07:00
Andrew Gaul d89153ed1f Reduce filesystem and transient differences 2012-07-17 09:50:47 -07:00
Andrew Gaul 02203afb07 Harmonize filesystem and transient putBlob 2012-07-16 22:02:00 -07:00
Adrian Cole 05fd64af44 cleaned up http builders and expect tests 2012-07-15 01:50:38 -07:00
Adrian Cole 74b404eab8 Issue 1008:aws-s3 could not get location for region eu-west-1 error 2012-07-07 17:28:44 -07:00
Andrew Gaul 932b738026 Eliminate unlikely transient blobstore TOCTOU bug 2012-06-19 15:20:39 -07:00
Andrew Gaul 227dbf777a Correct spelled from delimeter to delimiter 2012-06-14 10:05:13 -04:00
Adrian Cole 92d1f1b471 moved to explicitly adding clojure projects 2012-06-03 17:28:56 -07:00
Ioannis Canellos b078adc3ce Removed fragments and dynamic imports. Added centralized control of the maven-bundle-plugin. 2012-06-03 19:41:54 +03:00
Aled Sage ffe783d92b Issue 936: fixes async multi-part upload of small blob
Previously, the upload did not start...
2012-05-21 15:39:27 +01:00
Aled Sage cd9c830c5a Issue 647: store Expires as Date; added ContentMetadataCodec for converting to/from HTTP headers 2012-05-17 11:24:50 +01:00
Aled Sage 9aedf7b6f6 Issue 647: added "Expires" header for ContentMetadata 2012-05-17 11:24:45 +01:00
Aled Sage 1b2eb74604 Issue 656: failing test, demonstrating failures when non-default aws-s3 location is specified 2012-05-14 23:18:30 -07:00
Andrew Gaul f55231d607 Tolerate oversized ranges in getBlob 2012-05-14 15:16:32 -07:00
Andrew Gaul a30aad05ed Harmonize filesystem and transient getBlob
This commit also simplifies HTTP range logic calculations, sets the
correct Content-Length, and avoids an unneeded copy.
2012-05-14 11:02:03 -07:00
Andrew Phillips 29e7e7e85e Revert "Merge pull request #617 from andrewgaul/filesystem-transient-remove-copy"
This reverts commit 0fe120d659, reversing
changes made to 5033b98252.
2012-05-08 23:37:19 -07:00
Andrew Gaul d13e8aec4a Remove unused copy method
Also make second copy method private access.
2012-05-08 21:08:03 -07:00
Adrian Cole 5033b98252 NPE guard 2012-05-08 17:50:07 -07:00
Andrew Gaul 4ac7629f44 Delegate blob storage to TransientStorageStrategy
This further minimizes the drift between the filesystem and transient
blobstores.  We also now require that users keep the BlobStoreContext
open instead of using ConcurrentMap singletons.  Finally we remove the
"stub" container.
2012-05-08 14:11:32 -07:00
Andrew Gaul 442c51eb3c Introduce TransientStorageStrategy
This allows code from the filesystem blobstore to be more similar to
the transient blobstore.  This commit also corrects a bug where
blobExists did not throw an exception when the container did not
exist.
2012-05-07 16:52:31 -07:00
Andrew Gaul 3a0c15b345 Reduce filesystem and transient differences
These providers have a similar lineage but many gratuitous
differences.  This commit reduces the diff between them and is a
prerequisite for upcoming changes to make them more similar to each
other and real providers.  Some future commit might unify these in
some smarter way, e.g., having a TransientStrategy to match
FilesystemStrategy.
2012-05-07 15:55:05 -07:00
Adrian Cole 19390ea87d Merge pull request #602 from andrewgaul/propagate-or-null
Eliminate Throwables2.propagateOrNull
2012-05-02 15:21:30 -07:00
Andrew Gaul 74440a7a87 Eliminate Throwables2.propagateOrNull
Throwables.propagate always propagates the Throwable; there is no need
to return null.
2012-05-02 13:51:36 -07:00
Andrew Gaul 646f8d8b13 Improve use of Throwables.propagate
Throwing the return value removes some unneeded asserts and return
statements.  Also remove some useless and misspelled propogate
wrappers.
2012-05-02 11:05:22 -07:00
Andrew Gaul 755d51ad27 Remove unused transient blobstore methods
Also make some helpers private.  Generally, make the transient
blobstore more similar to others.
2012-05-01 22:37:01 -07:00
Adrian Cole 09e8ff1d8e Merge pull request #597 from andrewgaul/simplify-transient-blobstore
Simplify transient blobstore logic
2012-05-01 18:48:39 -07:00
Andrew Gaul 253fd1f608 Simplify transient blobstore logic
Many more simplifications remain.
2012-05-01 14:17:00 -07:00
Andrew Gaul 519a3ac193 Recurse in subdirectories before deleting blobs
This ensures that we have at most one PageSet of Futures awaiting
completion.
2012-05-01 11:18:24 -07:00
Adrian Cole 8ab9904481 added tests 2012-05-01 08:22:56 -07:00
Andrew Gaul c7dc1213f0 Do not set member until we completely validate it 2012-04-30 15:09:37 -07:00
Andrew Gaul e4514240e0 Optimize clearContainer for large folders
Previously we built up a list of all blobs then executed removeBlob on
all of them simultaneously.  For sufficiently large folders this would
cause an OutOfMemoryError.  There are cleaner ways to write this but
this approach mimimizes the patch.  I will continue working on this in
subsequent commits, including optimizing for deep subdirectories.

This commit also fixes a bug in the transient blobstore where deleting
elements while reading a directory resulted in NoSuchElementException.
2012-04-28 17:11:13 -07:00
Adrian Cole ba7ba36d20 switched to buildView 2012-04-24 12:26:37 -07:00
Adrian Cole df7d2acbb4 wrapper -> view 2012-04-23 19:14:36 -07:00
Adrian Cole 886d2cafb9 created base Context class with ProviderMetadata and Identity 2012-04-23 16:16:51 -07:00
Adrian Cole 5ea29cbbb7 Merge pull request #560 from danikov/covariant-future-iterables
covariant compatible version of futureIterables
2012-04-18 07:35:23 -07:00
danikov fff1c7dc2d make FutureIterables covariant compatible + update tests 2012-04-18 13:06:54 +01:00
Adrian Cole 0b59dea073 removed ContextBuilder subclasses; added unwrap; undid generic params 2012-04-16 00:44:20 -07:00
Adrian Cole c56c2d2f72 Issue 897: moved clojure off Factory -> Builder 2012-04-12 17:07:13 -06:00
Adrian Cole 23cb01f977 refactor PropertiesBuilder and related types into ApiMetadata and ProviderMetadata, and update all usage 2012-04-11 19:47:09 -06:00