diff --git a/java-server/.gitignore b/java-server/.gitignore index 77b721e1d..212311511 100644 --- a/java-server/.gitignore +++ b/java-server/.gitignore @@ -1,3 +1,7 @@ .kotlin/ bin/ build/ +ditto-service.err.log +ditto-service.exe +ditto-service.out.log +ditto-service.wrapper.log diff --git a/java-server/build.gradle.kts b/java-server/build.gradle.kts index 4b81afcc5..d454f14fe 100644 --- a/java-server/build.gradle.kts +++ b/java-server/build.gradle.kts @@ -31,29 +31,29 @@ spotbugs { dependencies { // ditto-java artifact includes the Java API for Ditto - implementation("com.ditto:ditto-java:5.0.0-preview.3") + implementation("com.ditto:ditto-java:5.0.0-java-rc.2") // This will include binaries for all the supported platforms and architectures - implementation("com.ditto:ditto-binaries:5.0.0-preview.3") + implementation("com.ditto:ditto-binaries:5.0.0-java-rc.2") // To reduce your module artifact's size, consider including just the necessary platforms and architectures /* // macOS Apple Silicon - implementation("com.ditto:ditto-binaries:5.0.0-preview.3") { + implementation("com.ditto:ditto-binaries:5.0.0-java-rc.2") { capabilities { requireCapability("com.ditto:ditto-binaries-macos-arm64") } } // Windows x86_64 - implementation("com.ditto:ditto-binaries:5.0.0-preview.3") { + implementation("com.ditto:ditto-binaries:5.0.0-java-rc.2") { capabilities { requireCapability("com.ditto:ditto-binaries-windows-x64") } } // Linux x86_64 - implementation("com.ditto:ditto-binaries:5.0.0-preview.3") { + implementation("com.ditto:ditto-binaries:5.0.0-java-rc.2") { capabilities { requireCapability("com.ditto:ditto-binaries-linux-x64") } diff --git a/java-server/ditto-service.xml b/java-server/ditto-service.xml new file mode 100644 index 000000000..4a21030fe --- /dev/null +++ b/java-server/ditto-service.xml @@ -0,0 +1,24 @@ + + ditto-service + Ditto Java Quickstart App + Description of your application + + java + -jar "%BASE%\build\libs\quickstart-java-0.0.1-SNAPSHOT.jar" + + + %BASE% + + + + + + + 10240 + 8 + + + + + + diff --git a/java-server/src/main/java/com/ditto/example/spring/quickstart/service/DittoService.java b/java-server/src/main/java/com/ditto/example/spring/quickstart/service/DittoService.java index f5ca7d5c4..fa0400a2b 100644 --- a/java-server/src/main/java/com/ditto/example/spring/quickstart/service/DittoService.java +++ b/java-server/src/main/java/com/ditto/example/spring/quickstart/service/DittoService.java @@ -45,8 +45,8 @@ public class DittoService implements DisposableBean { * Setup Ditto Config * https://docs.ditto.live/sdk/latest/install-guides/java#integrating-and-initializing */ - DittoConfig dittoConfig = new DittoConfig.Builder(DittoSecretsConfiguration.DITTO_APP_ID) +// .persistenceDirectory("/tmp/ditto-quickstart") .serverConnect(DittoSecretsConfiguration.DITTO_AUTH_URL) .build(); @@ -60,7 +60,7 @@ public class DittoService implements DisposableBean { ).thenRun(() -> { }) ); - this.ditto.setDeviceName("Spring Java"); + this.ditto.setDeviceName("Java"); this.ditto.updateTransportConfig(config -> { config.connect(connect -> { @@ -99,10 +99,10 @@ public Flux getSyncState() { } public void toggleSync() { + boolean currentSyncState = mutableSyncStatePublisher.asFlux().blockFirst(); try { - boolean currentSyncState = mutableSyncStatePublisher.asFlux().blockFirst(); setSyncStateIntoDittoStore(!currentSyncState); - } catch (DittoError e) { + } catch (DittoException e) { throw new RuntimeException(e); } } @@ -145,16 +145,20 @@ private DittoStoreObserver setupAndObserveSyncState() { (result) -> { List items = result.getItems(); boolean newSyncState = false; - if (!items.isEmpty()) { - newSyncState = items.get(0).getValue() - .get(DITTO_SYNC_STATE_ID) - .asBoolean(); + try { + if (!items.isEmpty()) { + newSyncState = items.get(0).getValue() + .get(DITTO_SYNC_STATE_ID) + .asBoolean(); + } + } catch (DittoException e) { + System.err.println("Error: " + e); } if (newSyncState) { try { ditto.startSync(); - } catch (DittoError e) { + } catch (DittoException e) { throw new RuntimeException(e); } } else { @@ -163,12 +167,12 @@ private DittoStoreObserver setupAndObserveSyncState() { mutableSyncStatePublisher.tryEmitNext(newSyncState); }); - } catch (DittoError e) { + } catch (DittoException e) { throw new RuntimeException(e); } } - private void setSyncStateIntoDittoStore(boolean newState) throws DittoError { + private void setSyncStateIntoDittoStore(boolean newState) throws DittoException { CompletionStage future = ditto.getStore().execute( "UPDATE %s SET %s = :syncState".formatted(DITTO_SYNC_STATE_COLLECTION, DITTO_SYNC_STATE_ID), DittoCborSerializable.buildDictionary() @@ -178,7 +182,7 @@ private void setSyncStateIntoDittoStore(boolean newState) throws DittoError { try { future.toCompletableFuture().join().close(); - } catch (DittoError e) { + } catch (DittoException e) { throw new RuntimeException(e); } } diff --git a/java-server/src/main/java/com/ditto/example/spring/quickstart/service/DittoTaskService.java b/java-server/src/main/java/com/ditto/example/spring/quickstart/service/DittoTaskService.java index 2ce001a85..73554a383 100644 --- a/java-server/src/main/java/com/ditto/example/spring/quickstart/service/DittoTaskService.java +++ b/java-server/src/main/java/com/ditto/example/spring/quickstart/service/DittoTaskService.java @@ -58,10 +58,10 @@ public void toggleTaskDone(@Nonnull String taskId) { "UPDATE %s SET done = :done WHERE _id = :taskId".formatted(TASKS_COLLECTION_NAME), DittoCborSerializable.Dictionary.buildDictionary() .put("done", !isDone) - .put("taskId", taskId) + .put("taskId", taskId) .build() ).toCompletableFuture().join(); - } catch (Error e) { + } catch (Error | DittoException e) { throw new RuntimeException(e); } } @@ -115,11 +115,11 @@ public Flux> observeAll() { } try { observer.close(); - } catch (DittoError e) { + } catch (DittoException e) { throw new RuntimeException(e); } }); - } catch (DittoError e) { + } catch (DittoException e) { emitter.error(e); } }, FluxSink.OverflowStrategy.LATEST); @@ -127,11 +127,15 @@ public Flux> observeAll() { private Task itemToTask(@Nonnull DittoQueryResultItem item) { DittoCborSerializable.Dictionary value = item.getValue(); - return new Task( - value.get("_id").asString(), - value.get("title").asString(), - value.get("done").asBoolean(), - value.get("deleted").asBoolean() - ); + try { + return new Task( + value.get("_id").asString(), + value.get("title").asString(), + value.get("done").asBoolean(), + value.get("deleted").asBoolean() + ); + } catch (DittoException e) { + throw new RuntimeException(e); + } } }