mirror of https://github.com/dapr/java-sdk.git
				
				
				
			Add IntelliJ IT docs (#705)
* add intellij IT docs Signed-off-by: Mukundan Sundararajan <msundar.ms@outlook.com> * use wsl2 Signed-off-by: Mukundan Sundararajan <msundar.ms@outlook.com>
This commit is contained in:
		
							parent
							
								
									593da48bc4
								
							
						
					
					
						commit
						436586292e
					
				
							
								
								
									
										90
									
								
								README.md
								
								
								
								
							
							
						
						
									
										90
									
								
								README.md
								
								
								
								
							|  | @ -1,4 +1,4 @@ | |||
| ## Dapr SDK for Java | ||||
| # Dapr SDK for Java | ||||
| 
 | ||||
| [](https://github.com/dapr/java-sdk/actions?workflow=Build) | ||||
| [](https://discord.com/channels/778680217417809931/778749797242765342)  | ||||
|  | @ -15,9 +15,9 @@ This is the Dapr SDK for Java, including the following features: | |||
| * State Store | ||||
| * Actors | ||||
| 
 | ||||
| ### Getting Started | ||||
| ## Getting Started | ||||
| 
 | ||||
| #### Pre-Requisites | ||||
| ### Pre-Requisites | ||||
| * JDK 11 or above - the published jars are compatible with Java 8: | ||||
|     * [Microsoft JDK 11](https://docs.microsoft.com/en-us/java/openjdk/download#openjdk-11) | ||||
|     * [AdoptOpenJDK 11 - LTS](https://adoptopenjdk.net/) | ||||
|  | @ -41,7 +41,7 @@ This is the Dapr SDK for Java, including the following features: | |||
|     * [New Maven project in IntelliJ](https://www.jetbrains.com/help/idea/maven-support.html#create_new_maven_project) | ||||
|     * [Maven in 5 minutes](https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html) | ||||
| 
 | ||||
| #### Importing Dapr's Java SDK | ||||
| ### Importing Dapr's Java SDK | ||||
| For a Maven project, add the following to your `pom.xml` file: | ||||
| ```xml | ||||
| <project> | ||||
|  | @ -86,7 +86,7 @@ dependencies { | |||
| } | ||||
| ``` | ||||
| 
 | ||||
| #### Running the examples | ||||
| ### Running the examples | ||||
| Clone this repository including the submodules: | ||||
| 
 | ||||
| ```sh | ||||
|  | @ -112,11 +112,11 @@ Try the following examples to learn more about Dapr's Java SDK: | |||
| * [Exception handling](./examples/src/main/java/io/dapr/examples/exception) | ||||
| * [Unit testing](./examples/src/main/java/io/dapr/examples/unittesting) | ||||
| 
 | ||||
| #### API Documentation | ||||
| ### API Documentation | ||||
| 
 | ||||
| Please, refer to our [Javadoc](https://dapr.github.io/java-sdk/) website. | ||||
| 
 | ||||
| #### Reactor API | ||||
| ### Reactor API | ||||
| 
 | ||||
| The Java SDK for Dapr is built using [Project Reactor](https://projectreactor.io/). It provides an asynchronous API for Java. When consuming a result is consumed synchronously, as in the examples referenced above, the `block()` method is used. | ||||
| 
 | ||||
|  | @ -132,7 +132,7 @@ Mono<Void> result = daprClient.publishEvent("mytopic", "my message"); | |||
| result.block(); | ||||
| ``` | ||||
| 
 | ||||
| #### How to use a custom serializer | ||||
| ### How to use a custom serializer | ||||
| 
 | ||||
| This SDK provides a basic serialization for request/response objects but also for state objects. Applications should provide their own serialization for production scenarios. | ||||
| 
 | ||||
|  | @ -162,7 +162,7 @@ This SDK provides a basic serialization for request/response objects but also fo | |||
|     ``` | ||||
| 
 | ||||
| 
 | ||||
| #### Debug Java application or Dapr's Java SDK | ||||
| ### Debug Java application or Dapr's Java SDK | ||||
| 
 | ||||
| **In IntelliJ Community Edition, consider [debugging in IntelliJ](https://docs.dapr.io/developing-applications/ides/intellij/).** | ||||
| 
 | ||||
|  | @ -185,13 +185,13 @@ DAPR_GRPC_PORT=5001 | |||
| 
 | ||||
| Now you can go to your IDE (like Eclipse, for example) and debug your Java application, using port `3500` to call Dapr while also listening to port `3000` to expose Dapr's callback endpoint. | ||||
| 
 | ||||
| #### Exception handling | ||||
| ### Exception handling | ||||
| 
 | ||||
| Most exceptions thrown from the SDK are instances of `DaprException`. `DaprException` extends from `RuntimeException`, making it compatible with Project Reactor. See [example](./examples/src/main/java/io/dapr/examples/exception) for more details. | ||||
| 
 | ||||
| ### Development | ||||
| ## Development | ||||
| 
 | ||||
| #### Update proto files | ||||
| ### Update proto files | ||||
| 
 | ||||
| Change the properties below in [pom.xml](./pom.xml) to point to the desired reference URL in Git. Avoid pointing to `master` branch since it can change over time and create unpredictable behavior in the build. | ||||
| 
 | ||||
|  | @ -207,3 +207,69 @@ Change the properties below in [pom.xml](./pom.xml) to point to the desired refe | |||
|   ... | ||||
| </project> | ||||
| ``` | ||||
| 
 | ||||
| ### Running Integration Tests | ||||
| 
 | ||||
| #### Pre-Requisites for ITs | ||||
| Along with the pre-requisites for [SDK](#pre-requisites) the following are needed.  | ||||
| 
 | ||||
| * Docker installed  | ||||
|   * [Docker Compose](https://docs.docker.com/compose/install/)  | ||||
|   * [Docker Desktop](https://www.docker.com/products/docker-desktop) | ||||
| * Bash shell | ||||
|   * In Windows use [WSL2](https://docs.microsoft.com/en-us/windows/wsl/install) | ||||
|   * In Linux and Mac, default shells are enough | ||||
| 
 | ||||
| #### Code | ||||
| 
 | ||||
| The code for the tests are present inside the project [sdk-tests](./sdk-tests). This module alone can be imported as a separate project in IDEs.  | ||||
| This project depends on the rest of the JARs built by the other modules in the repo like [sdk](./sdk), [sdk-springboot](./sdk-springboot) etc. | ||||
| 
 | ||||
| As a starting point for running Integration Tests, first run `mvn clean install` from the root of the repo to build the JARs for the different modules | ||||
| except the `sdk-tests` module. | ||||
| 
 | ||||
| #### Run all the dependent services spun up during build | ||||
| 
 | ||||
| During normal CI build, docker compose is used to bring up services like MongoDB, Hashicorp Vault, Apache Zookeeper, Kafka etc.  | ||||
| 
 | ||||
| Similarly, all of these need to be run for running the ITs either individually or as a whole. | ||||
| 
 | ||||
| Run the following commands from the root of the repo to start all the docker containers that the tests depend on. | ||||
| 
 | ||||
| ```bash | ||||
| docker-compose -f ./sdk-tests/deploy/local-test-kafka.yml up -d | ||||
| docker-compose -f ./sdk-tests/deploy/local-test-mongo.yml up -d | ||||
| docker-compose -f ./sdk-tests/deploy/local-test-vault.yml up -d | ||||
| ``` | ||||
| 
 | ||||
| To stop the containers and services, run the following commands. | ||||
| 
 | ||||
| ```bash | ||||
| docker-compose -f ./sdk-tests/deploy/local-test-kafka.yml down | ||||
| docker-compose -f ./sdk-tests/deploy/local-test-mongo.yml down | ||||
| docker-compose -f ./sdk-tests/deploy/local-test-vault.yml down | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
| #### Run all ITs from command line | ||||
| From the `java-sdk` repo root, change to the `sdk-tests` directory and run the following command. | ||||
| 
 | ||||
| ```bash | ||||
| ## with current directory as /java-sdk/sdk-tests/ | ||||
| 
 | ||||
| mvn clean install | ||||
| ``` | ||||
| 
 | ||||
| The above command runs all the integration tests present in the `sdk-tests` project.  | ||||
| 
 | ||||
| #### Run Individual tests from IntelliJ | ||||
| 
 | ||||
| In IntelliJ, go to `File > New > Project from Existing Sources...`. Import the `sdk-tests` project.  | ||||
| 
 | ||||
| Once the project has been imported, the individual tests can be run normally as any Unit Tests, from the IDE itself. | ||||
| 
 | ||||
| . | ||||
| 
 | ||||
| > Sometimes when the `sdk-tests` project does not build correctly, try `File > Invalidate Caches...`  and try restarting IntelliJ. | ||||
| 
 | ||||
| You should be able to set breakpoints and Debug the test directly from IntelliJ itself as seen from the above image.  | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 454 KiB | 
|  | @ -5,6 +5,8 @@ services: | |||
|     ports: | ||||
|       - "2181:2181" | ||||
|   kafka: | ||||
|     depends_on: | ||||
|       - zookeeper | ||||
|     image: wurstmeister/kafka:latest | ||||
|     ports: | ||||
|       - "9092:9092" | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue