Skip to content

Java SDK with all features implemented for milestone 0.4 - #154

Merged
artursouza merged 78 commits into
masterfrom
java_sdk_wip
Jan 24, 2020
Merged

Java SDK with all features implemented for milestone 0.4#154
artursouza merged 78 commits into
masterfrom
java_sdk_wip

Conversation

@artursouza

Copy link
Copy Markdown
Contributor

Description

Java SDK with all features implemented for milestone 0.4

Issue reference

We strive to have all PR being opened based on an issue, where the problem or feature have been discussed prior to implementation.

Please reference the issue this PR will close: dapr/dapr#885

Checklist

Please make sure you've completed the relevant tasks for this PR, out of the following list:

  • Code compiles correctly
  • Created/updated tests
  • Extended the documentation

artursouza and others added 30 commits December 10, 2019 23:35
Basic Dapr HTTP Client for Actors.
ActorTypeInformation with parsing logic + some stubs.
Adding MethodContext + StateSerializer.
* Add ActorRuntime

* split DaprAsyncClient hierarchy into 2 hierarchies for the different directions of communication

* Rename DaprClientBase to AbstractDaprClient
* Add ActorMethodInfoMap
* Add ConverterUtils + unit test
…g call, now we using asynch call and collect the results via callbacks. Mono's are created based on the result. This make more efficient use of the resources since nothing is blocking now. Reformatted according new checkstyle (#48)
* Add ActorTimer and related

* cr
* Add ReminderInfo

* remove extra var
* ActorManager

* More work done.

* Adding example for actor runtime service.

* Implements ActorStateManager + fixes + javadocs.
* ActorManager

* More work done.

* Adding example for actor runtime service.

* Implements ActorStateManager + fixes + javadocs.

* Fix OrderManager example in order to process http 201
Change the implement the calls to DAPR using the class AbstractDaprClient because before the change the class always return Mono.Empty
Implementation of the ActorAsyncProxy
Change the name of the Actor Dapr Http Async Client

* Update code with the changes proposed by Artur in the code review

* Changes to support ActorProxy + Fixes.

Co-authored-by: Juan Jose Herrera <35985447+JuanJose-Herrera@users.noreply.github.com>
* Adding new methods for Http Client

* Finishing implementation for HttpClient

* Adding JavaDoc and Changing return Type to new Methods

* Using ObjectSerializer and changing Constants values
)

* Adding a common adapter to be exposed to users, for calling either the gRPC or the HTTP Clients.
Implementing gRPC adapter based on interface.
Moving ActorStateSerializer and renamed to be used as a generic utility for Serializing objects

* Creating a builder for the GrpcClient
Abstracting generic serialize and deserialize methods into a generic base class while leaving Actor specific stuff into the ActorStateSerializer class
Adding Javadocs
…ion (#67)

* Change from unwrapMethodResponse to deserialize, because the response from an actor method is not wrapped in "Data" object
Add Unit test for the ActorProxy class

* #24 Implement more testing to the ActorProxyImpl and refactor how we manage the errors with Mono
#20 Add the coverage tool JaCoCo, the rules are commented at this moment in order to allow to execute the examples at this moment, if we enable the rules, the compilation fails.

* Enable rules for unit test coverage with a minimum of 0 in order to allow the developers to success compile, the minimum should be set to .8 before the projects ends

* Use the unwrapMethodResponse of the serilizer in order to deserilize actor responses.

* Reverting ActorProxyImpl.java

There is not need to change ActorProxyImpl since the previous change to not wrap it with the "data" structure was incorrect.

Co-authored-by: Artur Souza <artursouza.ms@outlook.com>
#70)

* Request body must be null on get for okhttp, empty body does not work.  Also, expose the ActorStateManager methods that ought to be exposed to user.

* Make ctor package private and use equals for string compare
* Refactoring HTTP Client to follow same pattern as the GRPC Client.
Creating DaprClientHttpAdapter to be exposed to the users.
Refactor all uses of the http Client to use the adapter instead following composition rather than inheritance.
Dealing with conflicts

* Renaming AppToDaprHttpAsync to AppToDaprHttpAsyncClient changed previously by mistake

* Refactor Adapters to centralize all generic and actor specific functionality in the same place, having a single entry point for all communications to DAPR.
Leaving GRPC Adapter implemented, but without the possibility to create an instance of it.
Fixing Test cases

* Addressing PR comments
LMWF and others added 19 commits January 17, 2020 15:14
* actor unit tests, no state

clean up a bit

* Rename class

* Fix merge

Co-authored-by: Artur Souza <artursouza.ms@outlook.com>
* Renaming State domain object.
Removing duplicate use of State Options.
Adding custom serialize and deserialize classes for StateOptions objects.

* #26 Refractor StateOptions to clean unused code

* Fixing merge issues.

* Fixing unit test for DaprClientHttpAdapterTest after refactoring.

Co-authored-by: Juan Jose Herrera <35985447+JuanJose-Herrera@users.noreply.github.com>
* Renaming State domain object.
Removing duplicate use of State Options.
Adding custom serialize and deserialize classes for StateOptions objects.

* #26 Refractor StateOptions to clean unused code

* Fixing merge issues.

* #26 Add integration test for states using Retry policies

Co-authored-by: Artur Souza <artursouza.ms@outlook.com>
* Use byte[] for customer data and serialized data.
Fixes for actor demo.

* Simplifying ObjectSerializer + handling CloudEvent properly.

* Split DaprClient into 3 parts to hide actor APIs.

* Remove Actor "dummy" interface.

* Supports custom serializer.

* Change seriaizer to receive Object directly.

* Handling custom serialization in State APIs + enhancements to the state APIs.

* Addressing small comment on Mono chain in ActorManager.

* Make serializer mandatory, throwing exception when null.
* local test kafka docker-compose yaml

* add kafka install step
* Add GRP State Integration Test

* Explain ignored test cases for GRPC

* Explain ignored test cases for GRPC

* Update DaprClientTestBuilder.java

Co-authored-by: Artur Souza <artursouza.ms@outlook.com>
* Adding common setup for starting dapr applications in Integration Tests.
Adding integration test for Actor Activation and Reactivation.

* Changing the way parameters are sent to the application running under Dapr in ITs to fix issue found in Ubuntu about wrong parsing.
Moving logic of the ActivationClient into the IT class

* Fixing compilation issues in test due to rebase from upstream.

* Addressing PR comments
* Add GRP State Integration Test

* Explain ignored test cases for GRPC

* Explain ignored test cases for GRPC

* Update DaprClientTestBuilder.java

* Add binding E2E testing.

* Add fix binding E2E testing after merge with new changes

* Remove example comments

Co-authored-by: Artur Souza <artursouza.ms@outlook.com>
@artursouza
artursouza merged commit cf68f24 into master Jan 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

v0.4.0 Milestone Plan

8 participants