diff --git a/org.idempiere.test/META-INF/MANIFEST.MF b/org.idempiere.test/META-INF/MANIFEST.MF
index 2d60309cb8..adcf5764cb 100644
--- a/org.idempiere.test/META-INF/MANIFEST.MF
+++ b/org.idempiere.test/META-INF/MANIFEST.MF
@@ -27,7 +27,8 @@ Require-Bundle: org.adempiere.base;bundle-version="9.0.0",
org.adempiere.base.callout;bundle-version="9.0.0",
org.adempiere.base.process;bundle-version="9.0.0",
org.adempiere.payment.processor;bundle-version="9.0.0",
- org.compiere.db.postgresql.provider;bundle-version="9.0.0"
+ org.compiere.db.postgresql.provider;bundle-version="9.0.0",
+ org.idempiere.webservices;bundle-version="9.0.0"
Bundle-ActivationPolicy: lazy
Bundle-Activator: org.idempiere.test.TestActivator
Bundle-RequiredExecutionEnvironment: JavaSE-11
diff --git a/org.idempiere.test/idempiere.unit.test.launch b/org.idempiere.test/idempiere.unit.test.launch
index 4b3251cbce..c28b296247 100644
--- a/org.idempiere.test/idempiere.unit.test.launch
+++ b/org.idempiere.test/idempiere.unit.test.launch
@@ -344,6 +344,7 @@
+
diff --git a/org.idempiere.webservices/META-INF/MANIFEST.MF b/org.idempiere.webservices/META-INF/MANIFEST.MF
index 2da1abadf0..b0255a14e2 100644
--- a/org.idempiere.webservices/META-INF/MANIFEST.MF
+++ b/org.idempiere.webservices/META-INF/MANIFEST.MF
@@ -67,6 +67,7 @@ Import-Package: javax.activation,
org.apache.xerces.xs.datatypes;version="2.9.0",
org.apache.xml.serialize;version="2.9.0",
org.osgi.framework;version="1.6.0",
+ org.osgi.service.component.annotations;version="1.3.0",
org.w3c.dom
Require-Bundle: org.adempiere.base;bundle-version="0.0.0",
org.adempiere.ui;bundle-version="0.0.0",
diff --git a/org.idempiere.webservices/OSGI-INF/ws_modelfactory.xml b/org.idempiere.webservices/OSGI-INF/org.compiere.model.WS_ModelFactory.xml
similarity index 64%
rename from org.idempiere.webservices/OSGI-INF/ws_modelfactory.xml
rename to org.idempiere.webservices/OSGI-INF/org.compiere.model.WS_ModelFactory.xml
index 6e9e86fe71..92da8611a8 100644
--- a/org.idempiere.webservices/OSGI-INF/ws_modelfactory.xml
+++ b/org.idempiere.webservices/OSGI-INF/org.compiere.model.WS_ModelFactory.xml
@@ -1,8 +1,8 @@
-
-
-
+
+
-
+
+
\ No newline at end of file
diff --git a/org.idempiere.webservices/OSGI-INF/wsprocessfactory.xml b/org.idempiere.webservices/OSGI-INF/wsprocessfactory.xml
index fd4bc6faf2..b2aff456f6 100644
--- a/org.idempiere.webservices/OSGI-INF/wsprocessfactory.xml
+++ b/org.idempiere.webservices/OSGI-INF/wsprocessfactory.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebService.java b/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebService.java
index d526b93a30..16202fe73d 100644
--- a/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebService.java
+++ b/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebService.java
@@ -47,6 +47,7 @@ import org.idempiere.cache.ImmutablePOSupport;
*
* @author Carlos Ruiz
*/
+@org.adempiere.base.Model(table = X_WS_WebService.Table_Name)
public class MWebService extends X_WS_WebService implements ImmutablePOSupport
{
/**
diff --git a/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebServiceMethod.java b/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebServiceMethod.java
index c192436b16..87bd66c9b9 100644
--- a/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebServiceMethod.java
+++ b/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebServiceMethod.java
@@ -35,6 +35,7 @@ import org.idempiere.cache.ImmutablePOSupport;
* @author hengsin
*
*/
+@org.adempiere.base.Model(table = X_WS_WebServiceMethod.Table_Name)
public class MWebServiceMethod extends X_WS_WebServiceMethod implements ImmutablePOSupport {
/**
diff --git a/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebServicePara.java b/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebServicePara.java
index 3fae211add..3f91f905f6 100644
--- a/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebServicePara.java
+++ b/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebServicePara.java
@@ -39,6 +39,7 @@ import org.compiere.util.Env;
*
* @author Carlos Ruiz
*/
+@org.adempiere.base.Model(table = X_WS_WebService_Para.Table_Name)
public class MWebServicePara extends X_WS_WebService_Para
{
/**
diff --git a/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebServiceType.java b/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebServiceType.java
index 0d48502019..292e785918 100644
--- a/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebServiceType.java
+++ b/org.idempiere.webservices/WEB-INF/src/org/compiere/model/MWebServiceType.java
@@ -48,6 +48,7 @@ import org.idempiere.cache.ImmutablePOSupport;
* @author Carlos Ruiz
* @author Deepak Pansheriya - Updated to support CreateUpdate service
*/
+@org.adempiere.base.Model(table = X_WS_WebServiceType.Table_Name)
public class MWebServiceType extends X_WS_WebServiceType implements ImmutablePOSupport
{
/**
diff --git a/org.idempiere.webservices/WEB-INF/src/org/compiere/model/WS_ModelFactory.java b/org.idempiere.webservices/WEB-INF/src/org/compiere/model/WS_ModelFactory.java
index a9557a7859..a6201442b7 100644
--- a/org.idempiere.webservices/WEB-INF/src/org/compiere/model/WS_ModelFactory.java
+++ b/org.idempiere.webservices/WEB-INF/src/org/compiere/model/WS_ModelFactory.java
@@ -25,50 +25,22 @@
package org.compiere.model;
-import java.sql.ResultSet;
-
+import org.adempiere.base.AnnotationBasedModelFactory;
import org.adempiere.base.IModelFactory;
-import org.compiere.util.Env;
+import org.osgi.service.component.annotations.Component;
-public class WS_ModelFactory implements IModelFactory {
+/**
+ *
+ * @author globalqss
+ * @author hengsin
+ *
+ */
+@Component(immediate = true, service = IModelFactory.class, property = "service.ranking:Integer=1")
+public class WS_ModelFactory extends AnnotationBasedModelFactory {
@Override
- public Class> getClass(String tableName) {
- if (X_WS_WebService_Para.Table_Name.equals(tableName))
- return MWebServicePara.class;
- if (X_WS_WebServiceType.Table_Name.equals(tableName))
- return MWebServiceType.class;
- if (X_WS_WebService.Table_Name.equals(tableName))
- return MWebService.class;
- if (MWebServiceMethod.Table_Name.equals(tableName))
- return MWebServiceMethod.class;
- return null;
+ protected String[] getPackages() {
+ return new String[] {MWebService.class.getPackageName()};
}
-
- @Override
- public PO getPO(String tableName, int Record_ID, String trxName) {
- if (X_WS_WebService_Para.Table_Name.equals(tableName))
- return new MWebServicePara(Env.getCtx(), Record_ID, trxName);
- if (X_WS_WebServiceType.Table_Name.equals(tableName))
- return new MWebServiceType(Env.getCtx(), Record_ID, trxName);
- if (X_WS_WebService.Table_Name.equals(tableName))
- return new MWebService(Env.getCtx(), Record_ID, trxName);
- if (MWebServiceMethod.Table_Name.equals(tableName))
- return new MWebServiceMethod(Env.getCtx(), Record_ID, trxName);
- return null;
- }
-
- @Override
- public PO getPO(String tableName, ResultSet rs, String trxName) {
- if (X_WS_WebService_Para.Table_Name.equals(tableName))
- return new MWebServicePara(Env.getCtx(), rs, trxName);
- if (X_WS_WebServiceType.Table_Name.equals(tableName))
- return new MWebServiceType(Env.getCtx(), rs, trxName);
- if (X_WS_WebService.Table_Name.equals(tableName))
- return new MWebService(Env.getCtx(), rs, trxName);
- if (MWebServiceMethod.Table_Name.equals(tableName))
- return new MWebServiceMethod(Env.getCtx(), rs, trxName);
- return null;
- }
-
+
}
diff --git a/org.idempiere.webservices/testScripts/postman/https---localhost-8443 WebService.postman_environment.json b/org.idempiere.webservices/testScripts/postman/https---localhost-8443 WebService.postman_environment.json
new file mode 100644
index 0000000000..c856574321
--- /dev/null
+++ b/org.idempiere.webservices/testScripts/postman/https---localhost-8443 WebService.postman_environment.json
@@ -0,0 +1,59 @@
+{
+ "id": "b633c534-ed2b-449e-88b9-69d8cbf74498",
+ "name": "https://localhost:8443 WebService",
+ "values": [
+ {
+ "key": "protocol",
+ "value": "https",
+ "enabled": true
+ },
+ {
+ "key": "host",
+ "value": "localhost",
+ "enabled": true
+ },
+ {
+ "key": "port",
+ "value": "8443",
+ "enabled": true
+ },
+ {
+ "key": "userName",
+ "value": "WebService",
+ "enabled": true
+ },
+ {
+ "key": "password",
+ "value": "WebService",
+ "enabled": true
+ },
+ {
+ "key": "clientId",
+ "value": "11",
+ "enabled": true
+ },
+ {
+ "key": "roleId",
+ "value": "50004",
+ "enabled": true
+ },
+ {
+ "key": "organizationId",
+ "value": "11",
+ "enabled": true
+ },
+ {
+ "key": "warehouseId",
+ "value": "103",
+ "enabled": true
+ },
+ {
+ "key": "language",
+ "value": "en_US",
+ "enabled": true
+ }
+ ],
+ "_postman_variable_scope": "environment",
+ "_postman_exported_at": "2021-09-14T11:48:44.727Z",
+ "_postman_exported_using": "Postman/8.12.1"
+}
\ No newline at end of file
diff --git a/org.idempiere.webservices/testScripts/postman/idempiere-soap-as-rest.postman_collection.json b/org.idempiere.webservices/testScripts/postman/idempiere-soap-as-rest.postman_collection.json
new file mode 100644
index 0000000000..12feff8de8
--- /dev/null
+++ b/org.idempiere.webservices/testScripts/postman/idempiere-soap-as-rest.postman_collection.json
@@ -0,0 +1,52 @@
+{
+ "info": {
+ "_postman_id": "1223b193-dce3-405c-8cf5-be7ba996bbe2",
+ "name": "idempiere-soap-as-rest",
+ "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
+ },
+ "item": [
+ {
+ "name": "query_data",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Accept",
+ "value": "application/json",
+ "type": "text"
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "type": "text"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"ModelCRUDRequest\": {\n \"ModelCRUD\": {\n \"serviceType\": \"QueryBPartner\",\n \"TableName\": \"C_BPartner\",\n \"Filter\": \"name < 'S'\",\n \"Action\": \"Read\",\n \"DataRow\": { //optional filter by column values\n \"field\": [\n {\n \"@column\": \"C_BP_Group_ID\",\n \"val\": \"103\"\n }\n ]\n }\n },\n \"ADLoginRequest\": {\n \"user\": \"{{userName}}\",\n \"pass\": \"{{password}}\",\n \"lang\": \"{{language}}\",\n \"ClientID\": \"{{clientId}}\",\n \"RoleID\": \"{{roleId}}\",\n \"OrgID\": \"{{organizationId}}\",\n \"WarehouseID\": \"{{warehouseId}}\",\n \"stage\": \"9\"\n }\n }\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "{{protocol}}://{{host}}:{{port}}/ADInterface/services/rest/model_adservice/query_data",
+ "protocol": "{{protocol}}",
+ "host": [
+ "{{host}}"
+ ],
+ "port": "{{port}}",
+ "path": [
+ "ADInterface",
+ "services",
+ "rest",
+ "model_adservice",
+ "query_data"
+ ]
+ }
+ },
+ "response": []
+ }
+ ]
+}
\ No newline at end of file