-
Notifications
You must be signed in to change notification settings - Fork 80
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
feat: stub implementation of StorageRpc for the sake of testing #351
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
could --> can
|
||
/** | ||
* 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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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://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://github.com/googleapis/java-storage/issues/325)) ([209cae3](https://github.com/googleapis/java-storage/commit/209cae322932a4f87729fe4c5176a4f11962cfae)) * stub implementation of StorageRpc for the sake of testing ([#351](https://github.com/googleapis/java-storage/issues/351)) ([dd58025](https://github.com/googleapis/java-storage/commit/dd5802555eb0351a5afa2f2f197cb93ca6d3b66e)) ### Bug Fixes * blob.reload() does not work as intuitively expected ([#308](https://github.com/googleapis/java-storage/issues/308)) ([a2bab58](https://github.com/googleapis/java-storage/commit/a2bab58ccd89f48e8d4a8ee2dd776b201598420d)) ### Documentation * **fix:** update client documentation link ([#324](https://github.com/googleapis/java-storage/issues/324)) ([eb8940c](https://github.com/googleapis/java-storage/commit/eb8940cc6a88b5e2b3dea8d0ab2ffc1e350ab924)) * Add doc for equals method in blob ([#311](https://github.com/googleapis/java-storage/issues/311)) ([91fc36a](https://github.com/googleapis/java-storage/commit/91fc36a6673e30d1cfa8c4da51b874e1fd0b0535)) * catch actual exception in java doc comment ([#312](https://github.com/googleapis/java-storage/issues/312)) ([9201de5](https://github.com/googleapis/java-storage/commit/9201de559fe4218abd2e4fac47beac62454547cf)), closes [#309](https://github.com/googleapis/java-storage/issues/309) * update CONTRIBUTING.md to include code formatting ([#534](https://github.com/googleapis/java-storage/issues/534)) ([#315](https://github.com/googleapis/java-storage/issues/315)) ([466d08f](https://github.com/googleapis/java-storage/commit/466d08f9835a0f1dd00b5c9b3a08551be68d03ad)) * update readme to point client libarary documentation ([#317](https://github.com/googleapis/java-storage/issues/317)) ([8650f80](https://github.com/googleapis/java-storage/commit/8650f806736beec7bf7ab09a337b333bbf144f7b)) ### Dependencies * update dependency com.google.api.grpc:proto-google-common-protos to v1.18.0 ([#301](https://github.com/googleapis/java-storage/issues/301)) ([ff2dee2](https://github.com/googleapis/java-storage/commit/ff2dee2ce41d37787f0866ae740d3cd7f3b2bbd6)) * update dependency com.google.apis:google-api-services-storage to v1-rev20200410-1.30.9 ([#296](https://github.com/googleapis/java-storage/issues/296)) ([2e55aa2](https://github.com/googleapis/java-storage/commit/2e55aa2c8b9c78df9eebfe748fe72dcaae63ff81)) * update dependency com.google.apis:google-api-services-storage to v1-rev20200430-1.30.9 ([#319](https://github.com/googleapis/java-storage/issues/319)) ([3d03fa3](https://github.com/googleapis/java-storage/commit/3d03fa3381cfbb76d1501ec3d2ad14742a8a58dd)) * update dependency com.google.cloud:google-cloud-conformance-tests to v0.0.11 ([#320](https://github.com/googleapis/java-storage/issues/320)) ([6c18c88](https://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