You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/07/26 05:50:44 UTC
[isis-app-simpleapp] 01/01: adds demo of invoking REST API with
post and referencing an existing domain object
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch demo/restful-invoke
in repository https://gitbox.apache.org/repos/asf/isis-app-simpleapp.git
commit 28b77a5ba35866aeff7a846b53ebc4ff74638191
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jul 26 06:50:22 2021 +0100
adds demo of invoking REST API with post and referencing an existing domain object
---
README.adoc | 38 ++++++++++++++++++++++
.../modules/simple/dom/so/SimpleObjectRestApi.java | 26 +++++++++++++++
.../modules/simple/dom/so/SimpleObjects.java | 1 -
.../main/resources/config/application.properties | 2 +-
4 files changed, 65 insertions(+), 2 deletions(-)
diff --git a/README.adoc b/README.adoc
index 47808f9..0518435 100644
--- a/README.adoc
+++ b/README.adoc
@@ -242,3 +242,41 @@ The Spring Boot profile is also used to add the dependency to the SQL Server dri
The prerequisites to try this out are a SQL Server database running on `localhost` and with the credentials as specified in `config/application-SQLSERVER.properties`; adjust as necessary.
+
+== Example Restful Objects invoke
+
+This branch includes the following service:
+
+[source,java]
+.SimpleObjectRestApi.java
+----
+@DomainService(
+ nature = NatureOfService.REST,
+ objectType = "simple.SimpleObjectRestApi"
+ )
+@lombok.RequiredArgsConstructor(onConstructor_ = {@Inject} )
+public class SimpleObjectRestApi {
+
+ private final SimpleObjects simpleObjects;
+
+ @Action(semantics = SemanticsOf.NON_IDEMPOTENT)
+ public SimpleObject copy(
+ final SimpleObject original
+ ) {
+ return simpleObjects.create(original.getName() + " (copy)");
+ }
+}
+----
+
+Run up the app; the following _curl_ script will invoke the above endopint:
+
+[source,bash]
+----
+curl --location --request POST 'http://localhost:8080/restful/services/simple.SimpleObjectRestApi/actions/copy/invoke' \
+--header 'Authorization: Basic c3ZlbjpwYXNz' \
+--data-raw '{
+ "original": {
+ "value": {"href": "http://localhost:8080/restful/objects/simple.SimpleObject/1"}
+ }
+}'
+----
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjectRestApi.java b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjectRestApi.java
new file mode 100644
index 0000000..41f5d08
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjectRestApi.java
@@ -0,0 +1,26 @@
+package domainapp.modules.simple.dom.so;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+@DomainService(
+ nature = NatureOfService.REST,
+ objectType = "simple.SimpleObjectRestApi"
+ )
+@lombok.RequiredArgsConstructor(onConstructor_ = {@Inject} )
+public class SimpleObjectRestApi {
+
+ private final SimpleObjects simpleObjects;
+
+ @Action(semantics = SemanticsOf.NON_IDEMPOTENT)
+ public SimpleObject copy(
+ final SimpleObject original
+ ) {
+ return simpleObjects.create(original.getName() + " (copy)");
+ }
+
+}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjects.java b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjects.java
index aea4b79..8d75062 100644
--- a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjects.java
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjects.java
@@ -17,7 +17,6 @@ import org.apache.isis.applib.query.Query;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.persistence.jpa.applib.services.JpaSupportService;
-import domainapp.modules.simple.SimpleModule;
import domainapp.modules.simple.types.Name;
@DomainService(
diff --git a/webapp/src/main/resources/config/application.properties b/webapp/src/main/resources/config/application.properties
index aed22f6..9308846 100644
--- a/webapp/src/main/resources/config/application.properties
+++ b/webapp/src/main/resources/config/application.properties
@@ -19,4 +19,4 @@ isis.persistence.schema.auto-create-schemas=SIMPLE
# uncomment to run during bootstrap
-#isis.testing.fixtures.initial-script = domainapp.webapp.application.fixture.scenarios.DomainAppDemo
+isis.testing.fixtures.initial-script = domainapp.webapp.application.fixture.scenarios.DomainAppDemo