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