feat: stub implementation of StorageRpc for the sake of testing#351
feat: stub implementation of StorageRpc for the sake of testing#351frankyn merged 3 commits intogoogleapis:masterfrom
Conversation
…f the storage module for testing purposes
Codecov Report
@@ Coverage Diff @@
## master #351 +/- ##
============================================
+ Coverage 62.73% 63.07% +0.34%
- Complexity 554 611 +57
============================================
Files 31 32 +1
Lines 5023 5072 +49
Branches 480 479 -1
============================================
+ Hits 3151 3199 +48
- Misses 1707 1708 +1
Partials 165 165
Continue to review full report at Codecov.
|
| import java.util.Map; | ||
|
|
||
| /** | ||
| * A stub implementation of {@link StorageRpc} which could be used outside of the Storage module for |
|
|
||
| /** | ||
| * A stub implementation of {@link StorageRpc} which could be used outside of the Storage module for | ||
| * testing purposes. All the methods are implemented either to return the default value or to throw |
There was a problem hiding this comment.
"are implemented either to return the default value or to throw" --> "either return the default value or throw"
| * Creates an instance with methods either returning the default value or throwing {@code | ||
| * UnsupportedOperationException}, depending on the {@code isImplemented} parameter. | ||
| * | ||
| * @param isImplemented {@code true} to return a value, {@code false} to throw an exception. |
There was a problem hiding this comment.
nit: no period since not a complete sentence
| @Override | ||
| public StorageObject compose( | ||
| Iterable<StorageObject> sources, StorageObject target, Map<Option, ?> targetOptions) { | ||
| if (isImplemented) { |
There was a problem hiding this comment.
Why is "isImplemented" needed? If you're just returning null here and elsewhere and not expecting these methods to be called, unconditionally throwing the exception might be better.
There was a problem hiding this comment.
Yes, that was my original intention to throw the exception unconditionally. Then I decided that adding "isImplemented" feature might simplify the work on extending that class.
There was a problem hiding this comment.
It doesn't seem like returning null helps a lot in this case. Subclassers who invoke a method like this will still need to override this.
There was a problem hiding this comment.
I tend to agree with you, but I will think more about cases when returning null is useful.
There was a problem hiding this comment.
Fixed as you suggested. If someone needs an implementation returning null, an IDE can help to produce such class.
…f the storage module for testing purposes
…f the storage module for testing purposes
frankyn
left a comment
There was a problem hiding this comment.
This is much cleaner @dmitry-fa, thanks for driving this forward.
|
@frankyn, to move forward with googleapis/java-storage-nio#124 we need to release the Storage (1.108.1). What should we do to initiate the release process? |
🤖 I have created a release \*beep\* \*boop\* --- ## [1.109.0](https://www.github.com/googleapis/java-storage/compare/v1.108.0...v1.109.0) (2020-06-11) ### Features * adopt flatten-maven-plugin and java-shared-dependencies ([#325](https://www.github.com/googleapis/java-storage/issues/325)) ([209cae3](https://www.github.com/googleapis/java-storage/commit/209cae322932a4f87729fe4c5176a4f11962cfae)) * stub implementation of StorageRpc for the sake of testing ([#351](https://www.github.com/googleapis/java-storage/issues/351)) ([dd58025](https://www.github.com/googleapis/java-storage/commit/dd5802555eb0351a5afa2f2f197cb93ca6d3b66e)) ### Bug Fixes * blob.reload() does not work as intuitively expected ([#308](https://www.github.com/googleapis/java-storage/issues/308)) ([a2bab58](https://www.github.com/googleapis/java-storage/commit/a2bab58ccd89f48e8d4a8ee2dd776b201598420d)) ### Documentation * **fix:** update client documentation link ([#324](https://www.github.com/googleapis/java-storage/issues/324)) ([eb8940c](https://www.github.com/googleapis/java-storage/commit/eb8940cc6a88b5e2b3dea8d0ab2ffc1e350ab924)) * Add doc for equals method in blob ([#311](https://www.github.com/googleapis/java-storage/issues/311)) ([91fc36a](https://www.github.com/googleapis/java-storage/commit/91fc36a6673e30d1cfa8c4da51b874e1fd0b0535)) * catch actual exception in java doc comment ([#312](https://www.github.com/googleapis/java-storage/issues/312)) ([9201de5](https://www.github.com/googleapis/java-storage/commit/9201de559fe4218abd2e4fac47beac62454547cf)), closes [#309](https://www.github.com/googleapis/java-storage/issues/309) * update CONTRIBUTING.md to include code formatting ([#534](https://www.github.com/googleapis/java-storage/issues/534)) ([#315](https://www.github.com/googleapis/java-storage/issues/315)) ([466d08f](https://www.github.com/googleapis/java-storage/commit/466d08f9835a0f1dd00b5c9b3a08551be68d03ad)) * update readme to point client libarary documentation ([#317](https://www.github.com/googleapis/java-storage/issues/317)) ([8650f80](https://www.github.com/googleapis/java-storage/commit/8650f806736beec7bf7ab09a337b333bbf144f7b)) ### Dependencies * update dependency com.google.api.grpc:proto-google-common-protos to v1.18.0 ([#301](https://www.github.com/googleapis/java-storage/issues/301)) ([ff2dee2](https://www.github.com/googleapis/java-storage/commit/ff2dee2ce41d37787f0866ae740d3cd7f3b2bbd6)) * update dependency com.google.apis:google-api-services-storage to v1-rev20200410-1.30.9 ([#296](https://www.github.com/googleapis/java-storage/issues/296)) ([2e55aa2](https://www.github.com/googleapis/java-storage/commit/2e55aa2c8b9c78df9eebfe748fe72dcaae63ff81)) * update dependency com.google.apis:google-api-services-storage to v1-rev20200430-1.30.9 ([#319](https://www.github.com/googleapis/java-storage/issues/319)) ([3d03fa3](https://www.github.com/googleapis/java-storage/commit/3d03fa3381cfbb76d1501ec3d2ad14742a8a58dd)) * update dependency com.google.cloud:google-cloud-conformance-tests to v0.0.11 ([#320](https://www.github.com/googleapis/java-storage/issues/320)) ([6c18c88](https://www.github.com/googleapis/java-storage/commit/6c18c882cfe0c35b310a518e6044847e6fbeab94)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please).
Allows extending of the StorageRpc interface without breaking cross library dependencies.
Tests outside the Storage library might extend the StorageRpcTestBase class instead of implementing the StorageRpc interface.
Fixes #242