diff --git a/exonum-java-binding/CHANGELOG.md b/exonum-java-binding/CHANGELOG.md index 03b02a0b78..3045d64b83 100644 --- a/exonum-java-binding/CHANGELOG.md +++ b/exonum-java-binding/CHANGELOG.md @@ -18,7 +18,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. The release is based on Exonum 0.11 ### Added -- `toOptional()` method to `EntryIndexProxy`. (#790) +- `toOptional()` method to `EntryIndexProxy`. (#790) + +### Changed +- Service HTTP APIs provided with `Service#createPublicApiHandlers` are now mounted + on `/api/services` instead of `/api` for consistency with Exonum Core. ## [0.5.0] - 2019-03-13 diff --git a/exonum-java-binding/common/src/test/java/com/exonum/binding/common/serialization/json/StoredConfigurationGsonSerializerTest.java b/exonum-java-binding/common/src/test/java/com/exonum/binding/common/serialization/json/StoredConfigurationGsonSerializerTest.java index e0eea8f335..2cc8378d27 100644 --- a/exonum-java-binding/common/src/test/java/com/exonum/binding/common/serialization/json/StoredConfigurationGsonSerializerTest.java +++ b/exonum-java-binding/common/src/test/java/com/exonum/binding/common/serialization/json/StoredConfigurationGsonSerializerTest.java @@ -58,7 +58,7 @@ class StoredConfigurationGsonSerializerTest { + "\"majority_count\": null,\n" + "\"services\": {\n" + " \"configuration\": null,\n" - + " \"cryptocurrency-demo-service\": null\n" + + " \"cryptocurrency-demo\": null\n" + "}\n" + "}"; diff --git a/exonum-java-binding/core/rust/exonum-java/start_cryptocurrency_node.sh b/exonum-java-binding/core/rust/exonum-java/start_cryptocurrency_node.sh index 0a9ee2e367..26d5258493 100755 --- a/exonum-java-binding/core/rust/exonum-java/start_cryptocurrency_node.sh +++ b/exonum-java-binding/core/rust/exonum-java/start_cryptocurrency_node.sh @@ -41,7 +41,7 @@ echo "ARTIFACT_PATH=${ARTIFACT_PATH}" # Prepare the services configuration file SERVICES_CONFIG_FILE="services.toml" -SERVICE_NAME="cryptocurrency-demo-service" +SERVICE_NAME="cryptocurrency-demo" echo "[user_services]" > ${SERVICES_CONFIG_FILE} echo "${SERVICE_NAME} = '${ARTIFACT_PATH}'" >> ${SERVICES_CONFIG_FILE} diff --git a/exonum-java-binding/core/rust/exonum-java/start_qa_node.sh b/exonum-java-binding/core/rust/exonum-java/start_qa_node.sh index e12f75f629..6b2163d4ec 100755 --- a/exonum-java-binding/core/rust/exonum-java/start_qa_node.sh +++ b/exonum-java-binding/core/rust/exonum-java/start_qa_node.sh @@ -40,7 +40,7 @@ echo "ARTIFACT_PATH=${ARTIFACT_PATH}" # Prepare the services configuration file SERVICES_CONFIG_FILE="services.toml" -SERVICE_NAME="ejb-qa-service" +SERVICE_NAME="qa" echo "[user_services]" > ${SERVICES_CONFIG_FILE} echo "${SERVICE_NAME} = '${ARTIFACT_PATH}'" >> ${SERVICES_CONFIG_FILE} diff --git a/exonum-java-binding/core/src/main/java/com/exonum/binding/service/Service.java b/exonum-java-binding/core/src/main/java/com/exonum/binding/service/Service.java index 3fc24b885b..d1ddd006b3 100644 --- a/exonum-java-binding/core/src/main/java/com/exonum/binding/service/Service.java +++ b/exonum-java-binding/core/src/main/java/com/exonum/binding/service/Service.java @@ -102,13 +102,13 @@ default List getStateHashes(Snapshot snapshot) { * equal to the service name. * *

Please note that the path prefix is stripped from the request path when it is forwarded to - * the given router. For example, if your service name is «cryptocurrency», - * and you have two endpoints «/send-money» and «/balance», use these names when - * defining handlers, and they will be available by paths «/cryptocurrency/send-money» - * and «/cryptocurrency/balance»: + * the given router. For example, if your service name is «timestamping», + * and you have an endpoint «/timestamp», use this name when defining the handler and it will be + * available by path «/api/services/timestamping/timestamp»: + * *


    * router.get("/balance").handler((rc) -> {
-   *   rc.response().end("$1’000’000");
+   *   rc.response().end("2019-04-01T10:15:30+02:00[Europe/Kiev]");
    * });
    * 
* diff --git a/exonum-java-binding/core/src/main/java/com/exonum/binding/service/adapters/UserServiceAdapter.java b/exonum-java-binding/core/src/main/java/com/exonum/binding/service/adapters/UserServiceAdapter.java index 1f1e881946..a4e0755d0a 100644 --- a/exonum-java-binding/core/src/main/java/com/exonum/binding/service/adapters/UserServiceAdapter.java +++ b/exonum-java-binding/core/src/main/java/com/exonum/binding/service/adapters/UserServiceAdapter.java @@ -47,7 +47,7 @@ public class UserServiceAdapter { private static final Logger logger = LogManager.getLogger(UserServiceAdapter.class); - private static final String API_ROOT_PATH = "/api"; + private static final String API_ROOT_PATH = "/api/services"; private final Service service; private final Server server; @@ -164,7 +164,8 @@ public String initialize(long forkHandle) { public void mountPublicApiHandler(long nodeNativeHandle) { try { - checkState(node == null, "There is a node already: are you calling this method twice?"); + checkState(node == null, "There is a node already (%s): are you calling this method twice?", + node); node = new NodeProxy(nodeNativeHandle); Router router = server.createRouter(); service.createPublicApiHandlers(node, router); diff --git a/exonum-java-binding/core/src/test/java/com/exonum/binding/service/adapters/UserServiceAdapterTest.java b/exonum-java-binding/core/src/test/java/com/exonum/binding/service/adapters/UserServiceAdapterTest.java index a0cfe14562..ea1460b767 100644 --- a/exonum-java-binding/core/src/test/java/com/exonum/binding/service/adapters/UserServiceAdapterTest.java +++ b/exonum-java-binding/core/src/test/java/com/exonum/binding/service/adapters/UserServiceAdapterTest.java @@ -205,7 +205,7 @@ void mountPublicApiHandler() { .thenReturn(serviceName); serviceAdapter.mountPublicApiHandler(0x0A); - verify(server).mountSubRouter(eq("/api/service1"), eq(router)); + verify(server).mountSubRouter(eq("/api/services/service1"), eq(router)); } @Test diff --git a/exonum-java-binding/cryptocurrency-demo/frontend/src/plugins/blockchain.js b/exonum-java-binding/cryptocurrency-demo/frontend/src/plugins/blockchain.js index 8c18771b42..1ffee03f89 100644 --- a/exonum-java-binding/cryptocurrency-demo/frontend/src/plugins/blockchain.js +++ b/exonum-java-binding/cryptocurrency-demo/frontend/src/plugins/blockchain.js @@ -27,7 +27,7 @@ const PER_PAGE = 10 const MAX_VALUE = 2147483647 function getWallet (publicKey) { - return axios.get(`/api/cryptocurrency-demo-service/wallet/${publicKey}`) + return axios.get(`/api/services/cryptocurrency-demo/wallet/${publicKey}`) .then(response => response.data) .then(data => { return { @@ -112,7 +112,7 @@ module.exports = { }, getHistory (publicKey) { - return axios.get(`/api/cryptocurrency-demo-service/wallet/${publicKey}/history`).then(r => r.data) + return axios.get(`/api/services/cryptocurrency-demo/wallet/${publicKey}/history`).then(r => r.data) } } } diff --git a/exonum-java-binding/cryptocurrency-demo/src/main/java/com/exonum/binding/cryptocurrency/CryptocurrencyService.java b/exonum-java-binding/cryptocurrency-demo/src/main/java/com/exonum/binding/cryptocurrency/CryptocurrencyService.java index 6f611f3d35..301229a514 100644 --- a/exonum-java-binding/cryptocurrency-demo/src/main/java/com/exonum/binding/cryptocurrency/CryptocurrencyService.java +++ b/exonum-java-binding/cryptocurrency-demo/src/main/java/com/exonum/binding/cryptocurrency/CryptocurrencyService.java @@ -23,7 +23,7 @@ public interface CryptocurrencyService extends Service { short ID = 42; - String NAME = "cryptocurrency-demo-service"; + String NAME = "cryptocurrency-demo"; Optional getWallet(PublicKey ownerKey); diff --git a/exonum-java-binding/qa-service/src/main/java/com/exonum/binding/qaservice/QaService.java b/exonum-java-binding/qa-service/src/main/java/com/exonum/binding/qaservice/QaService.java index d72825680a..a74fed9c32 100644 --- a/exonum-java-binding/qa-service/src/main/java/com/exonum/binding/qaservice/QaService.java +++ b/exonum-java-binding/qa-service/src/main/java/com/exonum/binding/qaservice/QaService.java @@ -36,7 +36,7 @@ public interface QaService extends Service { short ID = 127; - String NAME = "ejb-qa-service"; + String NAME = "qa"; HashCode submitCreateCounter(String counterName);