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; + } +}

