This is an automated email from the ASF dual-hosted git repository.

Lukas-Finster pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git

commit 67562053d3dd426d98c93e6484e8099a25cc7c43
Author: Lukas Finster <[email protected]>
AuthorDate: Thu Jul 30 12:54:28 2026 +0200

    Improved: Provides example for use of DomainModel objects in rest-api
    (OFBIZ-12517)
---
 .../exampleApiDefinition.rest.xml}                 | 27 ++++++++--------
 framework/rest-api/servicedef/services.xml         |  9 ++++++
 .../ofbiz/ws/rs/examples/RestExampleServices.java  | 15 +++++++++
 .../ofbiz/ws/rs/examples/RestOrderExample.java     | 37 ++++++++++++++++++++++
 .../ofbiz/ws/rs/examples/RestOrderItemExample.java | 25 +++++++++++++++
 5 files changed, 100 insertions(+), 13 deletions(-)

diff --git a/framework/rest-api/servicedef/services.xml 
b/framework/rest-api/api/exampleApiDefinition.rest.xml
similarity index 50%
copy from framework/rest-api/servicedef/services.xml
copy to framework/rest-api/api/exampleApiDefinition.rest.xml
index 611d2ef520..ac3bb836ff 100644
--- a/framework/rest-api/servicedef/services.xml
+++ b/framework/rest-api/api/exampleApiDefinition.rest.xml
@@ -18,18 +18,19 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<services xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-          
xsi:noNamespaceSchemaLocation="https://ofbiz.apache.org/dtds/services.xsd";>
-    <description>rest-api Services</description>
-    <vendor></vendor>
-    <version>1.0</version>
+<api name="ExampleApiDefinition"
+     displayName="Example REST API"
+     path="/exampleApi"
+     description="This API exposes example product services as REST endpoints."
+     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+     
xsi:noNamespaceSchemaLocation="https://ofbiz.apache.org/dtds/rest-api.xsd";>
 
-    <service name="generateAuthTokenService" engine="java" 
require-new-transaction="true" max-retry="3"
-            location="org.apache.ofbiz.ws.rs.services.RestServices" 
invoke="generateAuthToken">
-        <description>Generates Authorization Token for the 
userLogin</description>
-        <attribute name="access_token" type="String" mode="OUT" 
optional="false"/>
-        <attribute name="expires_in" type="String" mode="OUT" 
optional="false"/>
-        <attribute name="token_type" type="String" mode="OUT" 
optional="false"/>
-    </service>
+    <resource name="orders" path="/createRestOrderExample">
+        <operation verb="post" consumes="application/json" 
produces="application/json">
+            <service name="createRestOrderExample"/>
+        </operation>
+    </resource>
 
-</services>
+    <mapping name="RestOrderExample" 
className="org.apache.ofbiz.ws.rs.examples.RestOrderExample"/>
+
+</api>
\ No newline at end of file
diff --git a/framework/rest-api/servicedef/services.xml 
b/framework/rest-api/servicedef/services.xml
index 611d2ef520..ed90202f09 100644
--- a/framework/rest-api/servicedef/services.xml
+++ b/framework/rest-api/servicedef/services.xml
@@ -32,4 +32,13 @@ under the License.
         <attribute name="token_type" type="String" mode="OUT" 
optional="false"/>
     </service>
 
+
+
+    <!-- Example Services -->
+    <!-- The services listed below serve to provide simple examples on how to 
use the REST-API component -->
+    <service name="createRestOrderExample" engine="java"
+             location="org.apache.ofbiz.ws.rs.examples.RestExampleServices" 
invoke="createRestOrderExample">
+        <attribute name="Order" 
type="org.apache.ofbiz.ws.rs.examples.RestOrderExample" mode="IN" 
optional="false"/>
+        <attribute name="orderId" type="String" mode="OUT" optional="true"/>
+    </service>
 </services>
diff --git 
a/framework/rest-api/src/main/java/org/apache/ofbiz/ws/rs/examples/RestExampleServices.java
 
b/framework/rest-api/src/main/java/org/apache/ofbiz/ws/rs/examples/RestExampleServices.java
new file mode 100644
index 0000000000..ba8874c850
--- /dev/null
+++ 
b/framework/rest-api/src/main/java/org/apache/ofbiz/ws/rs/examples/RestExampleServices.java
@@ -0,0 +1,15 @@
+package org.apache.ofbiz.ws.rs.examples;
+
+import java.util.Map;
+
+import org.apache.ofbiz.service.DispatchContext;
+import org.apache.ofbiz.service.ServiceUtil;
+
+public class RestExampleServices {
+    public static Map<String, Object> createRestOrderExample(DispatchContext 
dctx, Map<String, Object> context) {
+        RestOrderExample order = (RestOrderExample) context.get("Order");
+        Map<String, Object> result = ServiceUtil.returnSuccess();
+        result.put("orderId", order.getOrderId());
+        return result;
+    }
+}
diff --git 
a/framework/rest-api/src/main/java/org/apache/ofbiz/ws/rs/examples/RestOrderExample.java
 
b/framework/rest-api/src/main/java/org/apache/ofbiz/ws/rs/examples/RestOrderExample.java
new file mode 100644
index 0000000000..3eb9236539
--- /dev/null
+++ 
b/framework/rest-api/src/main/java/org/apache/ofbiz/ws/rs/examples/RestOrderExample.java
@@ -0,0 +1,37 @@
+package org.apache.ofbiz.ws.rs.examples;
+
+import java.util.List;
+
+import org.apache.ofbiz.base.model.DomainModel;
+
+public final class RestOrderExample extends DomainModel {
+
+    private String orderId;
+    private String customerName;
+    private List<RestOrderItemExample> items;
+
+    public String getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(String orderId) {
+        this.orderId = orderId;
+    }
+
+
+    public String getCustomerName() {
+        return customerName;
+    }
+
+    public void setCustomerName(String customerName) {
+        this.customerName = customerName;
+    }
+
+    public List<RestOrderItemExample> getItems() {
+        return items;
+    }
+
+    public void setItems(List<RestOrderItemExample> items) {
+        this.items = items;
+    }
+}
diff --git 
a/framework/rest-api/src/main/java/org/apache/ofbiz/ws/rs/examples/RestOrderItemExample.java
 
b/framework/rest-api/src/main/java/org/apache/ofbiz/ws/rs/examples/RestOrderItemExample.java
new file mode 100644
index 0000000000..c3f33f91f1
--- /dev/null
+++ 
b/framework/rest-api/src/main/java/org/apache/ofbiz/ws/rs/examples/RestOrderItemExample.java
@@ -0,0 +1,25 @@
+package org.apache.ofbiz.ws.rs.examples;
+
+import org.apache.ofbiz.base.model.DomainModel;
+
+public final class RestOrderItemExample extends DomainModel {
+
+    private String productId;
+    private Integer quantity;
+
+    public String getProductId() {
+        return productId;
+    }
+
+    public void setProductId(String productId) {
+        this.productId = productId;
+    }
+
+    public Integer getQuantity() {
+        return quantity;
+    }
+
+    public void setQuantity(Integer quantity) {
+        this.quantity = quantity;
+    }
+}

Reply via email to