From 2300cf796f9ae271c0df3b077abbae57ed954f5b Mon Sep 17 00:00:00 2001 From: charitha Date: Thu, 16 Nov 2017 21:10:28 +0530 Subject: [PATCH 001/135] Add siddhi extensions to reflect get methods in device management core service --- pom.xml | 153 +++ .../GetDevicesOfStatusFunctionExecutor.java | 132 ++ .../GetDevicesOfUserFunctionExecutor.java | 143 ++ .../HasDevicesOfStatusFunctionExecutor.java | 134 ++ .../HasDevicesOfUserFunctionExecutor.java | 147 ++ .../device/IsEnrolledFunctionExecutor.java | 122 ++ .../device/IsInGroupFunctionExecutor.java | 131 ++ .../siddhi/device/utils/DeviceUtils.java | 67 + src/main/resources/device.siddhiext | 24 + .../device/BaseDeviceManagementTest.java | 132 ++ .../siddhi/device/ExtensionTestCase.java | 281 ++++ .../device/test/util/DataSourceConfig.java | 76 + .../device/test/util/SiddhiTestHelper.java | 33 + .../device/test/util/TestDataHolder.java | 127 ++ .../util/TestDeviceManagementService.java | 111 ++ .../device/test/util/TestDeviceManager.java | 129 ++ .../siddhi/device/test/util/TestUtils.java | 92 ++ .../resources/carbon-home/dbscripts/h2.sql | 429 ++++++ .../repository/conf/axis2/axis2.xml | 723 ++++++++++ .../repository/conf/axis2/axis2_client.xml | 300 ++++ .../repository/conf/axis2/tenant-axis2.xml | 285 ++++ .../carbon-home/repository/conf/carbon.xml | 656 +++++++++ .../repository/conf/cdm-config.xml | 96 ++ .../conf/datasources/master-datasources.xml | 68 + .../conf/etc/bundle-config/README.txt | 12 + .../carboncontext-osgi-services.properties | 3 + .../repository/conf/etc/config-validation.xml | 37 + .../carbon-home/repository/conf/etc/jmx.xml | 32 + .../repository/conf/etc/launch.ini | 258 ++++ .../conf/etc/logging-bridge.properties | 65 + .../repository/conf/etc/mime.mappings | 27 + .../repository/conf/etc/mime.types | 734 ++++++++++ .../repository/conf/etc/osgi-debug.options | 95 ++ .../repository/conf/log4j.properties | 165 +++ .../carbon-home/repository/conf/registry.xml | 106 ++ .../conf/security/authenticators.xml | 73 + .../conf/tomcat/carbon/META-INF/context.xml | 31 + .../conf/tomcat/carbon/WEB-INF/web.xml | 61 + .../conf/tomcat/catalina-server.xml | 97 ++ .../repository/conf/tomcat/tomcat-users.xml | 16 + .../repository/conf/tomcat/web.xml | 1220 +++++++++++++++++ .../carbon-home/repository/conf/user-mgt.xml | 380 +++++ .../config/datasource/data-source-config.xml | 25 + src/test/resources/log4j.properties | 36 + src/test/resources/sql/h2.sql | 531 +++++++ src/test/resources/testng.xml | 31 + .../user-test/user-mgt-registry-test.xml | 101 ++ 47 files changed, 8727 insertions(+) create mode 100644 pom.xml create mode 100644 src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfStatusFunctionExecutor.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfUserFunctionExecutor.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfStatusFunctionExecutor.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfUserFunctionExecutor.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/IsEnrolledFunctionExecutor.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/IsInGroupFunctionExecutor.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/utils/DeviceUtils.java create mode 100644 src/main/resources/device.siddhiext create mode 100644 src/test/java/org/wso2/extension/siddhi/device/BaseDeviceManagementTest.java create mode 100644 src/test/java/org/wso2/extension/siddhi/device/ExtensionTestCase.java create mode 100644 src/test/java/org/wso2/extension/siddhi/device/test/util/DataSourceConfig.java create mode 100644 src/test/java/org/wso2/extension/siddhi/device/test/util/SiddhiTestHelper.java create mode 100644 src/test/java/org/wso2/extension/siddhi/device/test/util/TestDataHolder.java create mode 100644 src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManagementService.java create mode 100644 src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManager.java create mode 100644 src/test/java/org/wso2/extension/siddhi/device/test/util/TestUtils.java create mode 100644 src/test/resources/carbon-home/dbscripts/h2.sql create mode 100644 src/test/resources/carbon-home/repository/conf/axis2/axis2.xml create mode 100644 src/test/resources/carbon-home/repository/conf/axis2/axis2_client.xml create mode 100644 src/test/resources/carbon-home/repository/conf/axis2/tenant-axis2.xml create mode 100644 src/test/resources/carbon-home/repository/conf/carbon.xml create mode 100644 src/test/resources/carbon-home/repository/conf/cdm-config.xml create mode 100644 src/test/resources/carbon-home/repository/conf/datasources/master-datasources.xml create mode 100644 src/test/resources/carbon-home/repository/conf/etc/bundle-config/README.txt create mode 100644 src/test/resources/carbon-home/repository/conf/etc/carboncontext-osgi-services.properties create mode 100644 src/test/resources/carbon-home/repository/conf/etc/config-validation.xml create mode 100644 src/test/resources/carbon-home/repository/conf/etc/jmx.xml create mode 100644 src/test/resources/carbon-home/repository/conf/etc/launch.ini create mode 100644 src/test/resources/carbon-home/repository/conf/etc/logging-bridge.properties create mode 100755 src/test/resources/carbon-home/repository/conf/etc/mime.mappings create mode 100644 src/test/resources/carbon-home/repository/conf/etc/mime.types create mode 100644 src/test/resources/carbon-home/repository/conf/etc/osgi-debug.options create mode 100644 src/test/resources/carbon-home/repository/conf/log4j.properties create mode 100644 src/test/resources/carbon-home/repository/conf/registry.xml create mode 100644 src/test/resources/carbon-home/repository/conf/security/authenticators.xml create mode 100644 src/test/resources/carbon-home/repository/conf/tomcat/carbon/META-INF/context.xml create mode 100644 src/test/resources/carbon-home/repository/conf/tomcat/carbon/WEB-INF/web.xml create mode 100644 src/test/resources/carbon-home/repository/conf/tomcat/catalina-server.xml create mode 100644 src/test/resources/carbon-home/repository/conf/tomcat/tomcat-users.xml create mode 100644 src/test/resources/carbon-home/repository/conf/tomcat/web.xml create mode 100644 src/test/resources/carbon-home/repository/conf/user-mgt.xml create mode 100644 src/test/resources/config/datasource/data-source-config.xml create mode 100644 src/test/resources/log4j.properties create mode 100644 src/test/resources/sql/h2.sql create mode 100644 src/test/resources/testng.xml create mode 100644 src/test/resources/user-test/user-mgt-registry-test.xml diff --git a/pom.xml b/pom.xml new file mode 100644 index 000000000..996094ec1 --- /dev/null +++ b/pom.xml @@ -0,0 +1,153 @@ + + + + + + + org.wso2.carbon.devicemgt-plugins + siddhi-extensions + 4.0.91-SNAPSHOT + ../pom.xml + + + 4.0.0 + org.wso2.extension.siddhi.device + bundle + WSO2 Siddhi Execution Extension - Device management Core functionality as Siddhi extension + http://wso2.org + + + + org.wso2.carbon.devicemgt + org.wso2.carbon.device.mgt.core + + + org.wso2.carbon.devicemgt + org.wso2.carbon.device.mgt.common + + + org.wso2.siddhi + siddhi-core + + + org.wso2.siddhi + siddhi-query-api + + + log4j + log4j + + + org.json.wso2 + json + + + com.h2database.wso2 + h2-database-engine + test + + + org.testng + testng + test + + + org.wso2.carbon + org.wso2.carbon.queuing + test + + + org.wso2.carbon + org.wso2.carbon.ndatasource.core + test + + + commons-dbcp.wso2 + commons-dbcp + test + + + commons-pool.wso2 + commons-pool + test + + + org.wso2.carbon + javax.cache.wso2 + test + + + commons-logging + commons-logging-api + RELEASE + + + asm + asm + RELEASE + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${wso2.maven.compiler.source} + ${wso2.maven.compiler.target} + + + + org.apache.felix + maven-bundle-plugin + true + + + ${project.artifactId} + ${project.artifactId} + + org.wso2.extension.siddhi.device, + org.wso2.extension.siddhi.device.* + + + org.json;version="${orbit.version.json.range}", + org.wso2.siddhi.core.*, + org.wso2.siddhi.query.api.*, + org.wso2.carbon.device.mgt.core.*, + org.wso2.carbon.device.mgt.common.*, + org.apache.commons.logging, + org.wso2.carbon.context + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + file:src/test/resources/log4j.properties + + + src/test/resources/testng.xml + + + + + + \ No newline at end of file diff --git a/src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfStatusFunctionExecutor.java b/src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfStatusFunctionExecutor.java new file mode 100644 index 000000000..032021890 --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfStatusFunctionExecutor.java @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.json.JSONArray; +import org.wso2.carbon.device.mgt.common.Device; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.common.EnrolmentInfo; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.extension.siddhi.device.utils.DeviceUtils; +import org.wso2.siddhi.core.config.ExecutionPlanContext; +import org.wso2.siddhi.core.exception.ExecutionPlanRuntimeException; +import org.wso2.siddhi.core.executor.ExpressionExecutor; +import org.wso2.siddhi.core.executor.function.FunctionExecutor; +import org.wso2.siddhi.query.api.definition.Attribute; +import org.wso2.siddhi.query.api.exception.ExecutionPlanValidationException; + +import java.util.List; + +/** + * getDevicesOfStatus(status [, deviceType]) + * Returns devices with specified status + * Accept Type(s): (STRING, STRING) + * Return Type(s): (STRING) + */ +public class GetDevicesOfStatusFunctionExecutor extends FunctionExecutor { + + private static Log log = LogFactory.getLog(GetDevicesOfStatusFunctionExecutor.class); + private Attribute.Type returnType = Attribute.Type.STRING; + + @Override + protected void init(ExpressionExecutor[] attributeExpressionExecutors, + ExecutionPlanContext executionPlanContext) { + if (attributeExpressionExecutors.length != 1 && attributeExpressionExecutors.length != 2) { + throw new ExecutionPlanValidationException( + "Invalid no of arguments passed to device:getDevicesOfStatus() function, required 2 but found " + + attributeExpressionExecutors.length); + } + if (attributeExpressionExecutors[0].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the first argument (status) of device:getDevicesOfStatus() " + + "function, required " + Attribute.Type.STRING + " as status, but found " + + attributeExpressionExecutors[0].getReturnType().toString()); + } + if (attributeExpressionExecutors.length == 2 + && attributeExpressionExecutors[1].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the second argument (device type) of device:getDevicesOfStatus() " + + "function, required " + Attribute.Type.STRING + " as device type, but found " + + attributeExpressionExecutors[1].getReturnType().toString()); + } + } + + @Override + protected Object execute(Object[] data) { + if (data[0] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:getDevicesOfStatus() function. " + + "First argument cannot be null"); + } + if (data.length == 2 && data[1] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:getDevicesOfStatus() function. " + + "Second argument cannot be null"); + } + String status = (String) data[0]; + String deviceType = null; + if (data.length == 2) { + deviceType = (String) data[1]; + } + + JSONArray deviceIds = new JSONArray(); + try { + DeviceManagementProviderService deviceManagementProviderService = DeviceUtils.getDeviceManagementProviderService(); + List devices = deviceManagementProviderService.getDevicesByStatus(EnrolmentInfo.Status.valueOf(status), false); + for (Device device : devices) { + if (deviceType == null || deviceType.equalsIgnoreCase(device.getType())) { + deviceIds.put(device.getDeviceIdentifier()); + } + } + } catch (DeviceManagementException e) { + log.error("Error occurred while getting devices with status " + status, e); + } + return deviceIds.toString(); + } + + @Override + protected Object execute(Object data) { + return execute(new Object[]{data}); + } + + @Override + public void start() { + //Nothing to start + } + + @Override + public void stop() { + //Nothing to stop + } + + @Override + public Attribute.Type getReturnType() { + return returnType; + } + + @Override + public Object[] currentState() { + return null; //No need to maintain a state. + } + + @Override + public void restoreState(Object[] state) { + //Since there's no need to maintain a state, nothing needs to be done here. + } +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfUserFunctionExecutor.java b/src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfUserFunctionExecutor.java new file mode 100644 index 000000000..27a82530e --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfUserFunctionExecutor.java @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.json.JSONArray; +import org.wso2.carbon.device.mgt.common.Device; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.extension.siddhi.device.utils.DeviceUtils; +import org.wso2.siddhi.core.config.ExecutionPlanContext; +import org.wso2.siddhi.core.exception.ExecutionPlanRuntimeException; +import org.wso2.siddhi.core.executor.ExpressionExecutor; +import org.wso2.siddhi.core.executor.function.FunctionExecutor; +import org.wso2.siddhi.query.api.definition.Attribute; +import org.wso2.siddhi.query.api.exception.ExecutionPlanValidationException; + +import java.util.List; + +/** + * getDevicesOfUser(user , deviceType [, status]) + * Returns list of ids of devices belongs to a user + * Accept Type(s): (STRING, STRING, STRING) + * Return Type(s): (STRING) + */ +public class GetDevicesOfUserFunctionExecutor extends FunctionExecutor { + + private static Log log = LogFactory.getLog(GetDevicesOfUserFunctionExecutor.class); + private Attribute.Type returnType = Attribute.Type.STRING; + + @Override + protected void init(ExpressionExecutor[] attributeExpressionExecutors, + ExecutionPlanContext executionPlanContext) { + if (attributeExpressionExecutors.length != 2 && attributeExpressionExecutors.length != 3) { + throw new ExecutionPlanValidationException( + "Invalid no of arguments passed to device:getDevicesOfUser() function, minimum 2, or 3 with " + + "optional. but found " + attributeExpressionExecutors.length); + } + if (attributeExpressionExecutors[0].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the first argument (user) of device:getDevicesOfUser() " + + "function, required " + Attribute.Type.STRING + " as user, but found " + + attributeExpressionExecutors[0].getReturnType().toString()); + } + if (attributeExpressionExecutors[1].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the second argument (device type) of device:getDevicesOfUser() " + + "function, required " + Attribute.Type.STRING + " as device type, but found " + + attributeExpressionExecutors[1].getReturnType().toString()); + } + if (attributeExpressionExecutors.length == 3 + && attributeExpressionExecutors[2].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid optional parameter type found for the third argument (status) of " + + "device:getDevicesOfUser() function, required " + Attribute.Type.STRING + " as status, but found " + + attributeExpressionExecutors[2].getReturnType().toString()); + } + } + + @Override + protected Object execute(Object[] data) { + if (data[0] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:getDevicesOfUser() function. " + + "First argument cannot be null"); + } + if (data[1] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:getDevicesOfUser() function. " + + "Second argument cannot be null"); + } + if (data.length == 3 && data[2] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:getDevicesOfUser() function. " + + "Third argument cannot be null"); + } + String user = (String) data[0]; + String deviceType = (String) data[1]; + String status = null; + if (data.length == 3) { + status = (String) data[2]; + } + + JSONArray deviceIds = new JSONArray(); + try { + DeviceManagementProviderService deviceManagementProviderService = DeviceUtils.getDeviceManagementProviderService(); + List devices = deviceManagementProviderService.getDevicesOfUser(user, deviceType, false); + for (Device device : devices) { + if (status == null || status.equalsIgnoreCase(device.getEnrolmentInfo().getStatus().toString())) { + deviceIds.put(device.getDeviceIdentifier()); + } + } + } catch (DeviceManagementException e) { + log.error("Error occurred while getting " + deviceType + " devices of user " + user + + ", with status " + status, e); + } + return deviceIds.toString(); + } + + @Override + protected Object execute(Object data) { + return null; //Since the getDevicesOfUser function takes in 2 or 3 parameters, this method does not get called. Hence,not implemented. + } + + @Override + public void start() { + //Nothing to start + } + + @Override + public void stop() { + //Nothing to stop + } + + @Override + public Attribute.Type getReturnType() { + return returnType; + } + + @Override + public Object[] currentState() { + return null; //No need to maintain a state. + } + + @Override + public void restoreState(Object[] state) { + //Since there's no need to maintain a state, nothing needs to be done here. + } +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfStatusFunctionExecutor.java b/src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfStatusFunctionExecutor.java new file mode 100644 index 000000000..944394a1b --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfStatusFunctionExecutor.java @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.common.Device; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.common.EnrolmentInfo; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.extension.siddhi.device.utils.DeviceUtils; +import org.wso2.siddhi.core.config.ExecutionPlanContext; +import org.wso2.siddhi.core.exception.ExecutionPlanRuntimeException; +import org.wso2.siddhi.core.executor.ExpressionExecutor; +import org.wso2.siddhi.core.executor.function.FunctionExecutor; +import org.wso2.siddhi.query.api.definition.Attribute; +import org.wso2.siddhi.query.api.exception.ExecutionPlanValidationException; + +import java.util.List; + +/** + * hasDevicesOfStatus(status [, deviceType]) + * Returns true if there are devices with specified status + * Accept Type(s): (STRING, STRING) + * Return Type(s): (BOOL) + */ +public class HasDevicesOfStatusFunctionExecutor extends FunctionExecutor { + + private static Log log = LogFactory.getLog(HasDevicesOfStatusFunctionExecutor.class); + private Attribute.Type returnType = Attribute.Type.BOOL; + + @Override + protected void init(ExpressionExecutor[] attributeExpressionExecutors, + ExecutionPlanContext executionPlanContext) { + if (attributeExpressionExecutors.length != 1 && attributeExpressionExecutors.length != 2) { + throw new ExecutionPlanValidationException( + "Invalid no of arguments passed to device:hasDevicesOfStatus() function, required 2 but found " + + attributeExpressionExecutors.length); + } + if (attributeExpressionExecutors[0].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the first argument (status) of device:hasDevicesOfStatus() " + + "function, required " + Attribute.Type.STRING + " as status, but found " + + attributeExpressionExecutors[0].getReturnType().toString()); + } + if (attributeExpressionExecutors.length == 2 + && attributeExpressionExecutors[1].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the second argument (device type) of device:hasDevicesOfStatus() " + + "function, required " + Attribute.Type.STRING + " as device type, but found " + + attributeExpressionExecutors[1].getReturnType().toString()); + } + } + + @Override + protected Object execute(Object[] data) { + if (data[0] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:hasDevicesOfStatus() function. " + + "First argument cannot be null"); + } + if (data.length == 2 && data[1] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:hasDevicesOfStatus() function. " + + "Second argument cannot be null"); + } + String status = (String) data[0]; + String deviceType = null; + if (data.length == 2) { + deviceType = (String) data[1]; + } + try { + DeviceManagementProviderService deviceManagementProviderService = DeviceUtils.getDeviceManagementProviderService(); + List devices = deviceManagementProviderService.getDevicesByStatus(EnrolmentInfo.Status.valueOf(status), false); + if (deviceType == null) { + return !devices.isEmpty(); + } else { + for (Device device : devices) { + if (deviceType.equalsIgnoreCase(device.getType())) { + return true; + } + } + return false; + } + } catch (DeviceManagementException e) { + log.error("Error occurred while getting devices with status " + status, e); + } + return false; + } + + @Override + protected Object execute(Object data) { + return execute(new Object[]{data}); + } + + @Override + public void start() { + //Nothing to start + } + + @Override + public void stop() { + //Nothing to stop + } + + @Override + public Attribute.Type getReturnType() { + return returnType; + } + + @Override + public Object[] currentState() { + return null; //No need to maintain a state. + } + + @Override + public void restoreState(Object[] state) { + //Since there's no need to maintain a state, nothing needs to be done here. + } +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfUserFunctionExecutor.java b/src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfUserFunctionExecutor.java new file mode 100644 index 000000000..ffb72c7f6 --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfUserFunctionExecutor.java @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.json.JSONArray; +import org.wso2.carbon.device.mgt.common.Device; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.extension.siddhi.device.utils.DeviceUtils; +import org.wso2.siddhi.core.config.ExecutionPlanContext; +import org.wso2.siddhi.core.exception.ExecutionPlanRuntimeException; +import org.wso2.siddhi.core.executor.ExpressionExecutor; +import org.wso2.siddhi.core.executor.function.FunctionExecutor; +import org.wso2.siddhi.query.api.definition.Attribute; +import org.wso2.siddhi.query.api.exception.ExecutionPlanValidationException; + +import java.util.List; + +/** + * hasDevicesOfUser(user , deviceType [, status]) + * Returns true if there are devices belonging to user + * Accept Type(s): (STRING, STRING, STRING) + * Return Type(s): (BOOL) + */ +public class HasDevicesOfUserFunctionExecutor extends FunctionExecutor { + + private static Log log = LogFactory.getLog(HasDevicesOfUserFunctionExecutor.class); + private Attribute.Type returnType = Attribute.Type.BOOL; + + @Override + protected void init(ExpressionExecutor[] attributeExpressionExecutors, + ExecutionPlanContext executionPlanContext) { + if (attributeExpressionExecutors.length != 2 && attributeExpressionExecutors.length != 3) { + throw new ExecutionPlanValidationException( + "Invalid no of arguments passed to device:getDevicesOfUser() function, minimum 2, or 3 with " + + "optional. but found " + attributeExpressionExecutors.length); + } + if (attributeExpressionExecutors[0].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the first argument (user) of device:getDevicesOfUser() " + + "function, required " + Attribute.Type.STRING + " as user, but found " + + attributeExpressionExecutors[0].getReturnType().toString()); + } + if (attributeExpressionExecutors[1].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the second argument (device type) of device:getDevicesOfUser() " + + "function, required " + Attribute.Type.STRING + " as device type, but found " + + attributeExpressionExecutors[1].getReturnType().toString()); + } + if (attributeExpressionExecutors.length == 3 + && attributeExpressionExecutors[2].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid optional parameter type found for the third argument (status) of " + + "device:getDevicesOfUser() function, required " + Attribute.Type.STRING + " as status, but found " + + attributeExpressionExecutors[2].getReturnType().toString()); + } + } + + @Override + protected Object execute(Object[] data) { + if (data[0] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:getDevicesOfUser() function. " + + "First argument cannot be null"); + } + if (data[1] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:getDevicesOfUser() function. " + + "Second argument cannot be null"); + } + if (data.length == 3 && data[2] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:getDevicesOfUser() function. " + + "Third argument cannot be null"); + } + String user = (String) data[0]; + String deviceType = (String) data[1]; + String status = null; + if (data.length == 3) { + status = (String) data[2]; + } + + try { + DeviceManagementProviderService deviceManagementProviderService = DeviceUtils.getDeviceManagementProviderService(); + List devices = deviceManagementProviderService.getDevicesOfUser(user, deviceType, false); + if (status == null) { + return !devices.isEmpty(); + } else { + for (Device device : devices) { + if (status.equalsIgnoreCase(device.getEnrolmentInfo().getStatus().toString())) { + return true; + } + } + return false; + } + } catch (DeviceManagementException e) { + log.error("Error occurred while getting " + deviceType + " devices of user " + user + + ", with status " + status, e); + } + return false; + } + + @Override + protected Object execute(Object data) { + return null; //Since the getDevicesOfUser function takes in 2 or 3 parameters, this method does not get called. Hence,not implemented. + } + + @Override + public void start() { + //Nothing to start + } + + @Override + public void stop() { + //Nothing to stop + } + + @Override + public Attribute.Type getReturnType() { + return returnType; + } + + @Override + public Object[] currentState() { + return null; //No need to maintain a state. + } + + @Override + public void restoreState(Object[] state) { + //Since there's no need to maintain a state, nothing needs to be done here. + } +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/IsEnrolledFunctionExecutor.java b/src/main/java/org/wso2/extension/siddhi/device/IsEnrolledFunctionExecutor.java new file mode 100644 index 000000000..f1893e33a --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/IsEnrolledFunctionExecutor.java @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService; +import org.wso2.extension.siddhi.device.utils.DeviceUtils; +import org.wso2.siddhi.core.config.ExecutionPlanContext; +import org.wso2.siddhi.core.exception.ExecutionPlanRuntimeException; +import org.wso2.siddhi.core.executor.ExpressionExecutor; +import org.wso2.siddhi.core.executor.function.FunctionExecutor; +import org.wso2.siddhi.query.api.definition.Attribute; +import org.wso2.siddhi.query.api.exception.ExecutionPlanValidationException; + +/** + * isEnrolled(deviceId, deviceType) + * Returns true if device enrolled. + * Accept Type(s): (STRING, STRING) + * Return Type(s): (BOOL) + */ +public class IsEnrolledFunctionExecutor extends FunctionExecutor { + + private static Log log = LogFactory.getLog(IsEnrolledFunctionExecutor.class); + private Attribute.Type returnType = Attribute.Type.BOOL; + + @Override + protected void init(ExpressionExecutor[] attributeExpressionExecutors, + ExecutionPlanContext executionPlanContext) { + if (attributeExpressionExecutors.length != 2) { + throw new ExecutionPlanValidationException( + "Invalid no of arguments passed to device:isEnrolled() function, required 2, but found " + + attributeExpressionExecutors.length); + } + if (attributeExpressionExecutors[0].getReturnType()!= Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the first argument (deviceId) of device:isEnrolled() " + + "function, required " + Attribute.Type.STRING + ", but found " + + attributeExpressionExecutors[0].getReturnType().toString()); + } + if (attributeExpressionExecutors[1].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the second argument (deviceType) of device:isEnrolled() " + + "function, required " + Attribute.Type.STRING + ", but found " + + attributeExpressionExecutors[1].getReturnType().toString()); + } + } + + @Override + protected Object execute(Object[] data) { + if (data[0] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:isEnrolled() function. " + + "First argument cannot be null"); + } + if (data[1] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:isEnrolled() function. " + + "Second argument cannot be null"); + } + + String deviceId = (String) data[0]; + String deviceType = (String) data[1]; + + DeviceIdentifier deviceIdentifier = new DeviceIdentifier(deviceId, deviceType); + try { + DeviceManagementProviderService deviceManagementService = DeviceUtils.getDeviceManagementProviderService(); + return deviceManagementService.isEnrolled(deviceIdentifier); + } catch (DeviceManagementException e) { + log.error("Error occurred while checking device is enrolled.", e); + } + return false; + } + + @Override + protected Object execute(Object data) { + return null; //Since the getDevicesOfUser function takes in 2 parameters, this method does not get called. Hence,not implemented. + } + + @Override + public void start() { + //Nothing to start + } + + @Override + public void stop() { + //Nothing to stop + } + + @Override + public Attribute.Type getReturnType() { + return returnType; + } + + @Override + public Object[] currentState() { + return null; //No need to maintain a state. + } + + @Override + public void restoreState(Object[] state) { + //Since there's no need to maintain a state, nothing needs to be done here. + } +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/IsInGroupFunctionExecutor.java b/src/main/java/org/wso2/extension/siddhi/device/IsInGroupFunctionExecutor.java new file mode 100644 index 000000000..56b52ef95 --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/IsInGroupFunctionExecutor.java @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; +import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException; +import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService; +import org.wso2.extension.siddhi.device.utils.DeviceUtils; +import org.wso2.siddhi.core.config.ExecutionPlanContext; +import org.wso2.siddhi.core.exception.ExecutionPlanRuntimeException; +import org.wso2.siddhi.core.executor.ExpressionExecutor; +import org.wso2.siddhi.core.executor.function.FunctionExecutor; +import org.wso2.siddhi.query.api.definition.Attribute; +import org.wso2.siddhi.query.api.exception.ExecutionPlanValidationException; + + +/** + * isInGroup(groupId, deviceId, deviceType) + * Returns true if device belongs to group, otherwise false. + * Accept Type(s): (INTEGER, STRING, STRING) + * Return Type(s): (BOOL) + */ +public class IsInGroupFunctionExecutor extends FunctionExecutor { + + private static Log log = LogFactory.getLog(IsInGroupFunctionExecutor.class); + private Attribute.Type returnType = Attribute.Type.BOOL; + + @Override + protected void init(ExpressionExecutor[] attributeExpressionExecutors, + ExecutionPlanContext executionPlanContext) { + if (attributeExpressionExecutors.length != 3) { + throw new ExecutionPlanValidationException( + "Invalid no of arguments passed to device:isInGroup() function, required 3, but found " + + attributeExpressionExecutors.length); + } + if (attributeExpressionExecutors[0].getReturnType()!= Attribute.Type.INT) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the first argument (group id) of device:isInGroup() " + + "function, required " + Attribute.Type.INT + ", but found " + + attributeExpressionExecutors[0].getReturnType().toString()); + } + if (attributeExpressionExecutors[1].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the second argument (device id) of device:isInGroup() " + + "function, required " + Attribute.Type.STRING + ", but found " + + attributeExpressionExecutors[1].getReturnType().toString()); + } + if (attributeExpressionExecutors[2].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the third argument (device type) of device:isInGroup() " + + "function, required " + Attribute.Type.STRING + ", but found " + + attributeExpressionExecutors[2].getReturnType().toString()); + } + } + + @Override + protected Object execute(Object[] data) { + if (data[0] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:isInGroup() function. " + + "First argument cannot be null"); + } + if (data[1] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:isInGroup() function. " + + "Second argument cannot be null"); + } + if (data[2] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:isInGroup() function. " + + "Third argument cannot be null"); + } + Integer groupId = (Integer) data[0]; + String deviceId = (String) data[1]; + String deviceType = (String) data[2]; + + DeviceIdentifier deviceIdentifier = new DeviceIdentifier(deviceId, deviceType); + GroupManagementProviderService groupManagementService = DeviceUtils.getGroupManagementProviderService(); + try { + return groupManagementService.isDeviceMappedToGroup(groupId, deviceIdentifier); + } catch (GroupManagementException e) { + log.error("Error occurred while checking device is belonging to group.", e); + } + return false; + } + + @Override + protected Object execute(Object data) { + return null; //Since the isInGroup function takes in 3 parameters, this method does not get called. Hence,not implemented. + } + + @Override + public void start() { + //Nothing to start + } + + @Override + public void stop() { + //Nothing to stop + } + + @Override + public Attribute.Type getReturnType() { + return returnType; + } + + @Override + public Object[] currentState() { + return null; //No need to maintain a state. + } + + @Override + public void restoreState(Object[] state) { + //Since there's no need to maintain a state, nothing needs to be done here. + } +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/utils/DeviceUtils.java b/src/main/java/org/wso2/extension/siddhi/device/utils/DeviceUtils.java new file mode 100644 index 000000000..897e026c6 --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/utils/DeviceUtils.java @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.wso2.extension.siddhi.device.utils; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.context.PrivilegedCarbonContext; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService; + +/** + * This class holds utility methods to retrieve data. + */ +public class DeviceUtils { + + private static Log log = LogFactory.getLog(DeviceUtils.class); + private static DeviceManagementProviderService deviceManagementProviderService; + private static GroupManagementProviderService groupManagementProviderService; + + private DeviceUtils(){ + } + + public static DeviceManagementProviderService getDeviceManagementProviderService() { + if (deviceManagementProviderService != null) { + return deviceManagementProviderService; + } + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + deviceManagementProviderService = + (DeviceManagementProviderService) ctx.getOSGiService(DeviceManagementProviderService.class, null); + if (deviceManagementProviderService == null) { + String msg = "Device Management service has not initialized."; + log.error(msg); + throw new IllegalStateException(msg); + } + return deviceManagementProviderService; + } + + public static GroupManagementProviderService getGroupManagementProviderService() { + if (groupManagementProviderService != null) { + return groupManagementProviderService; + } + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + groupManagementProviderService = + (GroupManagementProviderService) ctx.getOSGiService(GroupManagementProviderService.class, null); + if (groupManagementProviderService == null) { + String msg = "Group Management service has not initialized."; + log.error(msg); + throw new IllegalStateException(msg); + } + return groupManagementProviderService; + } +} diff --git a/src/main/resources/device.siddhiext b/src/main/resources/device.siddhiext new file mode 100644 index 000000000..84dd50b95 --- /dev/null +++ b/src/main/resources/device.siddhiext @@ -0,0 +1,24 @@ +# +# Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. +# +# WSO2 Inc. licenses this file to you under the Apache License, +# Version 2.0 (the "License"); you may not use this file except +# in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +isInGroup=org.wso2.extension.siddhi.device.IsInGroupFunctionExecutor +getDevicesOfUser=org.wso2.extension.siddhi.device.GetDevicesOfUserFunctionExecutor +hasDevicesOfUser=org.wso2.extension.siddhi.device.HasDevicesOfUserFunctionExecutor +getDevicesOfStatus=org.wso2.extension.siddhi.device.GetDevicesOfStatusFunctionExecutor +hasDevicesOfStatus=org.wso2.extension.siddhi.device.HasDevicesOfStatusFunctionExecutor +isEnrolled=org.wso2.extension.siddhi.device.IsEnrolledFunctionExecutor diff --git a/src/test/java/org/wso2/extension/siddhi/device/BaseDeviceManagementTest.java b/src/test/java/org/wso2/extension/siddhi/device/BaseDeviceManagementTest.java new file mode 100644 index 000000000..ce6130c06 --- /dev/null +++ b/src/test/java/org/wso2/extension/siddhi/device/BaseDeviceManagementTest.java @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.wso2.extension.siddhi.device; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.tomcat.jdbc.pool.PoolProperties; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeSuite; +import org.w3c.dom.Document; +import org.wso2.carbon.base.MultitenantConstants; +import org.wso2.carbon.context.PrivilegedCarbonContext; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory; +import org.wso2.carbon.device.mgt.core.dao.GroupManagementDAOFactory; +import org.wso2.carbon.device.mgt.core.notification.mgt.dao.NotificationManagementDAOFactory; +import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOFactory; +import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil; +import org.wso2.extension.siddhi.device.test.util.DataSourceConfig; +import org.wso2.extension.siddhi.device.test.util.TestUtils; + +import javax.sql.DataSource; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; +import java.io.File; +import java.sql.Connection; +import java.sql.Statement; + +public abstract class BaseDeviceManagementTest { + + private DataSource dataSource; + private static final Log log = LogFactory.getLog(BaseDeviceManagementTest.class); + + @BeforeSuite + public void setupDataSource() throws Exception { + this.initDataSource(); + this.initSQLScript(); + this.initializeCarbonContext(); + } + + protected void initDataSource() throws Exception { + this.dataSource = this.getDataSource(this.readDataSourceConfig()); + DeviceManagementDAOFactory.init(dataSource); + GroupManagementDAOFactory.init(dataSource); + OperationManagementDAOFactory.init(dataSource); + NotificationManagementDAOFactory.init(dataSource); + } + + @BeforeClass + public abstract void init() throws Exception; + + private DataSource getDataSource(DataSourceConfig config) { + PoolProperties properties = new PoolProperties(); + properties.setUrl(config.getUrl()); + properties.setDriverClassName(config.getDriverClassName()); + properties.setUsername(config.getUser()); + properties.setPassword(config.getPassword()); + return new org.apache.tomcat.jdbc.pool.DataSource(properties); + } + + private void initializeCarbonContext() { + + if (System.getProperty("carbon.home") == null) { + File file = new File("src/test/resources/carbon-home"); + if (file.exists()) { + System.setProperty("carbon.home", file.getAbsolutePath()); + } + file = new File("../resources/carbon-home"); + if (file.exists()) { + System.setProperty("carbon.home", file.getAbsolutePath()); + } + file = new File("../../resources/carbon-home"); + if (file.exists()) { + System.setProperty("carbon.home", file.getAbsolutePath()); + } + file = new File("../../../resources/carbon-home"); + if (file.exists()) { + System.setProperty("carbon.home", file.getAbsolutePath()); + } + } + + PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(MultitenantConstants + .SUPER_TENANT_DOMAIN_NAME); + PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(MultitenantConstants.SUPER_TENANT_ID); + } + + private DataSourceConfig readDataSourceConfig() throws DeviceManagementException { + try { + File file = new File("src/test/resources/config/datasource/data-source-config.xml"); + Document doc = DeviceManagerUtil.convertToDocument(file); + JAXBContext testDBContext = JAXBContext.newInstance(DataSourceConfig.class); + Unmarshaller unmarshaller = testDBContext.createUnmarshaller(); + return (DataSourceConfig) unmarshaller.unmarshal(doc); + } catch (JAXBException e) { + throw new DeviceManagementException("Error occurred while reading data source configuration", e); + } + } + + private void initSQLScript() throws Exception { + Connection conn = null; + Statement stmt = null; + try { + conn = this.getDataSource().getConnection(); + stmt = conn.createStatement(); + stmt.executeUpdate("RUNSCRIPT FROM './src/test/resources/sql/h2.sql'"); + } finally { + TestUtils.cleanupResources(conn, stmt, null); + } + } + + protected DataSource getDataSource() { + return dataSource; + } + +} diff --git a/src/test/java/org/wso2/extension/siddhi/device/ExtensionTestCase.java b/src/test/java/org/wso2/extension/siddhi/device/ExtensionTestCase.java new file mode 100644 index 000000000..801b9e93a --- /dev/null +++ b/src/test/java/org/wso2/extension/siddhi/device/ExtensionTestCase.java @@ -0,0 +1,281 @@ +/* + * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device; + +import org.apache.log4j.Logger; +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import org.wso2.carbon.device.mgt.common.Device; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.common.DeviceNotFoundException; +import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup; +import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyExistException; +import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException; +import org.wso2.carbon.device.mgt.core.authorization.DeviceAccessAuthorizationServiceImpl; +import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager; +import org.wso2.carbon.device.mgt.core.config.cache.DeviceCacheConfiguration; +import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder; +import org.wso2.carbon.device.mgt.core.internal.DeviceManagementServiceComponent; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl; +import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService; +import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderServiceImpl; +import org.wso2.carbon.registry.core.config.RegistryContext; +import org.wso2.carbon.registry.core.exceptions.RegistryException; +import org.wso2.carbon.registry.core.internal.RegistryDataHolder; +import org.wso2.carbon.registry.core.jdbc.realm.InMemoryRealmService; +import org.wso2.carbon.registry.core.service.RegistryService; +import org.wso2.carbon.user.core.UserStoreException; +import org.wso2.carbon.user.core.service.RealmService; +import org.wso2.carbon.utils.multitenancy.MultitenantConstants; +import org.wso2.extension.siddhi.device.test.util.SiddhiTestHelper; +import org.wso2.extension.siddhi.device.test.util.TestDataHolder; +import org.wso2.extension.siddhi.device.test.util.TestDeviceManagementService; +import org.wso2.extension.siddhi.device.test.util.TestUtils; +import org.wso2.extension.siddhi.device.utils.DeviceUtils; +import org.wso2.siddhi.core.ExecutionPlanRuntime; +import org.wso2.siddhi.core.SiddhiManager; +import org.wso2.siddhi.core.event.Event; +import org.wso2.siddhi.core.query.output.callback.QueryCallback; +import org.wso2.siddhi.core.stream.input.InputHandler; +import org.wso2.siddhi.core.util.EventPrinter; + +import java.io.InputStream; +import java.lang.reflect.Field; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +import static org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroupConstants.Permissions.DEFAULT_ADMIN_PERMISSIONS; +import static org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroupConstants.Roles.DEFAULT_ADMIN_ROLE; + +public class ExtensionTestCase extends BaseDeviceManagementTest { + private static final Logger log = Logger.getLogger(ExtensionTestCase.class); + + private AtomicInteger count = new AtomicInteger(0); + private volatile boolean eventArrived; + private GroupManagementProviderService groupManagementProviderService; + private DeviceManagementProviderService deviceManagementProviderService; + private static String DEVICE_TYPE = "Test"; + + private QueryCallback queryCallback = new QueryCallback() { + @Override + public void receive(long timeStamp, Event[] inEvents, Event[] removeEvents) { + EventPrinter.print(timeStamp, inEvents, removeEvents); + for (Event event : inEvents) { + count.incrementAndGet(); + eventArrived = true; + } + } + }; + + @BeforeClass + @Override + public void init() throws Exception { + log.info("Initializing"); + groupManagementProviderService = new GroupManagementProviderServiceImpl(); + deviceManagementProviderService = new DeviceManagementProviderServiceImpl(); + + DeviceManagementServiceComponent.notifyStartupListeners(); + DeviceManagementDataHolder.getInstance().setDeviceManagementProvider(deviceManagementProviderService); + DeviceManagementDataHolder.getInstance().setRegistryService(getRegistryService()); + DeviceManagementDataHolder.getInstance().setDeviceAccessAuthorizationService(new DeviceAccessAuthorizationServiceImpl()); + DeviceManagementDataHolder.getInstance().setGroupManagementProviderService(groupManagementProviderService); + DeviceManagementDataHolder.getInstance().setDeviceTaskManagerService(null); + deviceManagementProviderService.registerDeviceType( + new TestDeviceManagementService(DEVICE_TYPE, MultitenantConstants.SUPER_TENANT_DOMAIN_NAME)); + + Field deviceManagementProviderServiceField = DeviceUtils.class.getDeclaredField("deviceManagementProviderService"); + deviceManagementProviderServiceField.setAccessible(true); + deviceManagementProviderServiceField.set(null, deviceManagementProviderService); + + Field groupManagementProviderServiceField = DeviceUtils.class.getDeclaredField("groupManagementProviderService"); + groupManagementProviderServiceField.setAccessible(true); + groupManagementProviderServiceField.set(null, groupManagementProviderService); + } + + private RegistryService getRegistryService() throws RegistryException, UserStoreException, + DeviceManagementException { + RealmService realmService = new InMemoryRealmService(); + RegistryDataHolder.getInstance().setRealmService(realmService); + DeviceManagementDataHolder.getInstance().setRealmService(realmService); + realmService.getTenantManager().getSuperTenantDomain(); + DeviceConfigurationManager.getInstance().initConfig(); + + InputStream is = this.getClass().getClassLoader().getResourceAsStream("carbon-home/repository/conf/registry.xml"); + RegistryContext context = RegistryContext.getBaseInstance(is, realmService); + context.setSetup(true); + return context.getEmbeddedRegistryService(); + } + + @Test + public void createGroup() throws GroupManagementException, GroupAlreadyExistException { + groupManagementProviderService.createGroup(TestUtils.createDeviceGroup1(), DEFAULT_ADMIN_ROLE, DEFAULT_ADMIN_PERMISSIONS); + groupManagementProviderService.createGroup(TestUtils.createDeviceGroup2(), DEFAULT_ADMIN_ROLE, DEFAULT_ADMIN_PERMISSIONS); + } + + @Test + public void enrollDevice() { + Device device = TestDataHolder.generateDummyDeviceData(DEVICE_TYPE); + try { + boolean enrollmentStatus = deviceManagementProviderService.enrollDevice(device); + Assert.assertTrue(enrollmentStatus); + } catch (DeviceManagementException e) { + String msg = "Error Occurred while enrolling device"; + Assert.fail(msg, e); + } + } + + @Test(dependsOnMethods = {"createGroup", "enrollDevice"}) + public void addDevices() throws GroupManagementException, DeviceNotFoundException { + DeviceCacheConfiguration configuration = new DeviceCacheConfiguration(); + configuration.setEnabled(false); + + DeviceConfigurationManager.getInstance().getDeviceManagementConfig().setDeviceCacheConfiguration(configuration); + List list = TestUtils.getDeviceIdentifiersList(DEVICE_TYPE); + DeviceGroup deviceGroup = groupManagementProviderService.getGroup(TestUtils.createDeviceGroup1().getName()); + Assert.assertNotNull(deviceGroup); + groupManagementProviderService.addDevices(deviceGroup.getGroupId(), list); + } + + @Test(dependsOnMethods = {"addDevices"}) + public void testIsInGroupExtension() throws InterruptedException, GroupManagementException { + log.info("IsInGroup TestCase"); + SiddhiManager siddhiManager = new SiddhiManager(); + + count.set(0); + eventArrived = false; + + String inStreamDefinition = "define stream inputStream (groupId int, deviceId string, deviceType string);"; + String query = ("@info(name = 'query1') from inputStream[device:isInGroup(groupId, deviceId, deviceType)] " + + "select deviceId insert into outputStream;"); + ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); + executionPlanRuntime.addCallback("query1", queryCallback); + + InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); + executionPlanRuntime.start(); + DeviceIdentifier deviceIdentifier = TestUtils.getDeviceIdentifiersList(DEVICE_TYPE).get(0); + inputHandler.send(new Object[]{groupManagementProviderService.getGroup( + TestUtils.createDeviceGroup1().getName()).getGroupId(), deviceIdentifier.getId(), deviceIdentifier.getType()}); + inputHandler.send(new Object[]{groupManagementProviderService.getGroup( + TestUtils.createDeviceGroup2().getName()).getGroupId(), deviceIdentifier.getId(), deviceIdentifier.getType()}); + SiddhiTestHelper.waitForEvents(100, 1, count, 10000); + Assert.assertTrue(eventArrived); + Assert.assertEquals(1, count.get()); + executionPlanRuntime.shutdown(); + } + + @Test(dependsOnMethods = {"testIsInGroupExtension"}) + public void testGetDevicesOfUserFunctionExecutor() throws InterruptedException, GroupManagementException { + log.info("GetDevicesOfUser without status TestCase"); + SiddhiManager siddhiManager = new SiddhiManager(); + + count.set(0); + eventArrived = false; + + String inStreamDefinition = "define stream inputStream (user string, deviceType string);"; + String query = ("@info(name = 'query1') from inputStream[device:hasDevicesOfUser(user, deviceType)] " + + "select device:getDevicesOfUser(user, deviceType) as devices insert into outputStream;"); + ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); + executionPlanRuntime.addCallback("query1", queryCallback); + + InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); + executionPlanRuntime.start(); + Device device = TestDataHolder.generateDummyDeviceData(DEVICE_TYPE); + inputHandler.send(new Object[]{device.getEnrolmentInfo().getOwner(), device.getType()}); + SiddhiTestHelper.waitForEvents(100, 1, count, 10000); + Assert.assertTrue(eventArrived); + Assert.assertEquals(1, count.get()); + executionPlanRuntime.shutdown(); + } + + @Test(dependsOnMethods = {"testGetDevicesOfUserFunctionExecutor"}) + public void testGetDevicesOfUserWithStatusFunctionExecutor() throws InterruptedException, GroupManagementException { + log.info("GetDevicesOfUser with status TestCase"); + SiddhiManager siddhiManager = new SiddhiManager(); + + count.set(0); + eventArrived = false; + + String inStreamDefinition = "define stream inputStream (user string, deviceType string, status string);"; + String query = ("@info(name = 'query1') from inputStream[device:hasDevicesOfUser(user, deviceType, status)] " + + "select device:getDevicesOfUser(user, deviceType, status) as devices insert into outputStream;"); + ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); + executionPlanRuntime.addCallback("query1", queryCallback); + + InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); + executionPlanRuntime.start(); + Device device = TestDataHolder.generateDummyDeviceData(DEVICE_TYPE); + inputHandler.send(new Object[]{device.getEnrolmentInfo().getOwner(), device.getType(), + device.getEnrolmentInfo().getStatus().toString()}); + SiddhiTestHelper.waitForEvents(100, 1, count, 10000); + Assert.assertTrue(eventArrived); + Assert.assertEquals(1, count.get()); + executionPlanRuntime.shutdown(); + } + + @Test(dependsOnMethods = {"testGetDevicesOfUserWithStatusFunctionExecutor"}) + public void testGetDevicesOfStatusFunctionExecutor() throws InterruptedException, GroupManagementException { + log.info("GetDevicesOfStatus without deviceType TestCase"); + SiddhiManager siddhiManager = new SiddhiManager(); + + count.set(0); + eventArrived = false; + + String inStreamDefinition = "define stream inputStream (status string);"; + String query = ("@info(name = 'query1') from inputStream[device:hasDevicesOfStatus(status)] " + + "select device:getDevicesOfStatus(status) as devices insert into outputStream;"); + ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); + executionPlanRuntime.addCallback("query1", queryCallback); + + InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); + executionPlanRuntime.start(); + Device device = TestDataHolder.generateDummyDeviceData(DEVICE_TYPE); + inputHandler.send(new Object[]{device.getEnrolmentInfo().getStatus().toString()}); + SiddhiTestHelper.waitForEvents(100, 1, count, 10000); + Assert.assertTrue(eventArrived); + Assert.assertEquals(1, count.get()); + executionPlanRuntime.shutdown(); + } + + @Test(dependsOnMethods = {"testGetDevicesOfStatusFunctionExecutor"}) + public void testGetDevicesOfStatusWithTypeFunctionExecutor() throws InterruptedException, GroupManagementException { + log.info("GetDevicesOfStatus with deviceType TestCase"); + SiddhiManager siddhiManager = new SiddhiManager(); + + count.set(0); + eventArrived = false; + + String inStreamDefinition = "define stream inputStream (status string, deviceType string);"; + String query = ("@info(name = 'query1') from inputStream[device:hasDevicesOfStatus(status, deviceType)] " + + "select device:getDevicesOfStatus(status, deviceType) as devices insert into outputStream;"); + ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); + executionPlanRuntime.addCallback("query1", queryCallback); + + InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); + executionPlanRuntime.start(); + Device device = TestDataHolder.generateDummyDeviceData(DEVICE_TYPE); + inputHandler.send(new Object[]{device.getEnrolmentInfo().getStatus().toString(), device.getType()}); + SiddhiTestHelper.waitForEvents(100, 1, count, 10000); + Assert.assertTrue(eventArrived); + Assert.assertEquals(1, count.get()); + executionPlanRuntime.shutdown(); + } +} diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/DataSourceConfig.java b/src/test/java/org/wso2/extension/siddhi/device/test/util/DataSourceConfig.java new file mode 100644 index 000000000..f787d9b22 --- /dev/null +++ b/src/test/java/org/wso2/extension/siddhi/device/test/util/DataSourceConfig.java @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.wso2.extension.siddhi.device.test.util; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "DataSourceConfig") +public class DataSourceConfig { + + private String url; + private String driverClassName; + private String user; + private String password; + + @Override public String toString() { + return "DataSourceConfig[" + + " Url ='" + url + '\'' + + ", DriverClassName ='" + driverClassName + '\'' + + ", UserName ='" + user + '\'' + + ", Password ='" + password + '\'' + + "]"; + } + + @XmlElement(name = "Url", nillable = false) + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + @XmlElement(name = "DriverClassName", nillable = false) + public String getDriverClassName() { + return driverClassName; + } + + public void setDriverClassName(String driverClassName) { + this.driverClassName = driverClassName; + } + + @XmlElement(name = "User", nillable = false) + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + @XmlElement(name = "Password", nillable = false) + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + +} diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/SiddhiTestHelper.java b/src/test/java/org/wso2/extension/siddhi/device/test/util/SiddhiTestHelper.java new file mode 100644 index 000000000..820cbf154 --- /dev/null +++ b/src/test/java/org/wso2/extension/siddhi/device/test/util/SiddhiTestHelper.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device.test.util; + +import java.util.concurrent.atomic.AtomicInteger; + +public class SiddhiTestHelper { + public static void waitForEvents(long sleepTime, int expectedCount, AtomicInteger actualCount, long timeout) + throws InterruptedException { + long currentWaitTime = 0; + long startTime = System.currentTimeMillis(); + while ((actualCount.get() < expectedCount) && (currentWaitTime <= timeout)) { + Thread.sleep(sleepTime); + currentWaitTime = System.currentTimeMillis() - startTime; + } + } +} diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDataHolder.java b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDataHolder.java new file mode 100644 index 000000000..6c2fe832f --- /dev/null +++ b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDataHolder.java @@ -0,0 +1,127 @@ +/* +* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.wso2.extension.siddhi.device.test.util; + +import org.wso2.carbon.device.mgt.common.Device; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; +import org.wso2.carbon.device.mgt.common.EnrolmentInfo; +import org.wso2.carbon.device.mgt.common.app.mgt.Application; +import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup; +import org.wso2.carbon.device.mgt.common.notification.mgt.Notification; +import org.wso2.carbon.device.mgt.core.dto.DeviceType; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Properties; + +public class TestDataHolder { + + public final static String TEST_DEVICE_TYPE = "Test"; + public final static Integer SUPER_TENANT_ID = -1234; + public final static String SUPER_TENANT_DOMAIN = "carbon.super"; + public final static String initialDeviceIdentifier = "12345"; + public final static String OWNER = "admin"; + public static Device initialTestDevice; + public static DeviceType initialTestDeviceType; + + public static Device generateDummyDeviceData(String deviceType) { + Device device = new Device(); + EnrolmentInfo enrolmentInfo = new EnrolmentInfo(); + enrolmentInfo.setDateOfEnrolment(new Date().getTime()); + enrolmentInfo.setDateOfLastUpdate(new Date().getTime()); + enrolmentInfo.setOwner(OWNER); + enrolmentInfo.setOwnership(EnrolmentInfo.OwnerShip.BYOD); + enrolmentInfo.setStatus(EnrolmentInfo.Status.ACTIVE); + device.setEnrolmentInfo(enrolmentInfo); + device.setDescription("Test Description"); + device.setDeviceIdentifier(initialDeviceIdentifier); + device.setType(deviceType); + return device; + } + + public static Notification getNotification(int notificationId, String status, String deviceId, + String description, String deviceName, int operationId, + String deviceType) { + Notification notification = new Notification(); + notification.setNotificationId(notificationId); + notification.setStatus(status); + notification.setDeviceIdentifier(deviceId); + notification.setDescription(description); + notification.setDeviceName(deviceName); + notification.setOperationId(operationId); + notification.setDeviceType(deviceType); + return notification; + } + + public static Device generateDummyDeviceData(String deviceIdentifier, String deviceType, + EnrolmentInfo enrolmentInfo) { + Device device = new Device(); + device.setEnrolmentInfo(enrolmentInfo); + device.setDescription("Test Description"); + device.setDeviceIdentifier(deviceIdentifier); + device.setType(deviceType); + return device; + } + + public static List generateDummyDeviceData(List deviceIds) { + List devices = new ArrayList<>(); + for (DeviceIdentifier deviceId : deviceIds) { + Device device = new Device(); + EnrolmentInfo enrolmentInfo = new EnrolmentInfo(); + enrolmentInfo.setDateOfEnrolment(new Date().getTime()); + enrolmentInfo.setDateOfLastUpdate(new Date().getTime()); + enrolmentInfo.setOwner(OWNER); + enrolmentInfo.setOwnership(EnrolmentInfo.OwnerShip.BYOD); + enrolmentInfo.setStatus(EnrolmentInfo.Status.CREATED); + device.setEnrolmentInfo(enrolmentInfo); + device.setDescription("Test Description"); + device.setDeviceIdentifier(deviceId.getId()); + device.setType(deviceId.getType()); + devices.add(device); + } + return devices; + } + + public static DeviceType generateDeviceTypeData(String devTypeName) { + DeviceType deviceType = new DeviceType(); + deviceType.setName(devTypeName); + return deviceType; + } + + public static Application generateApplicationDummyData(String appIdentifier) { + Application application = new Application(); + Properties properties = new Properties(); + properties.setProperty("test1", "testVal"); + application.setName("SimpleCalculator"); + application.setCategory("TestCategory"); + application.setApplicationIdentifier(appIdentifier); + application.setType("TestType"); + application.setVersion("1.0.0"); + application.setImageUrl("http://test.org/image/"); + application.setLocationUrl("http://test.org/location/"); + application.setAppProperties(properties); + return application; + } + + public static DeviceGroup generateDummyGroupData() { + DeviceGroup deviceGroup = new DeviceGroup(); + deviceGroup.setName("Test device group"); + deviceGroup.setDescription("Test description"); + deviceGroup.setOwner(OWNER); + return deviceGroup; + } +} diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManagementService.java b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManagementService.java new file mode 100644 index 000000000..f1631b747 --- /dev/null +++ b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManagementService.java @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * you may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.wso2.extension.siddhi.device.test.util; + +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.common.DeviceManager; +import org.wso2.carbon.device.mgt.common.DeviceStatusTaskPluginConfig; +import org.wso2.carbon.device.mgt.common.InitialOperationConfig; +import org.wso2.carbon.device.mgt.common.MonitoringOperation; +import org.wso2.carbon.device.mgt.common.OperationMonitoringTaskConfig; +import org.wso2.carbon.device.mgt.common.ProvisioningConfig; +import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager; +import org.wso2.carbon.device.mgt.common.policy.mgt.PolicyMonitoringManager; +import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber; +import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig; +import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService; + +import java.util.ArrayList; +import java.util.List; + +public class TestDeviceManagementService implements DeviceManagementService { + + private String providerType; + private String tenantDomain; + + public TestDeviceManagementService(String deviceType, String tenantDomain) { + providerType = deviceType; + this.tenantDomain = tenantDomain; + } + + @Override + public String getType() { + return providerType; + } + + @Override + public OperationMonitoringTaskConfig getOperationMonitoringConfig() { + OperationMonitoringTaskConfig taskConfig = new OperationMonitoringTaskConfig(); + taskConfig.setEnabled(true); + taskConfig.setFrequency(3000); + List monitoringOperations = new ArrayList<>(); + for (int i = 0; i < 5; i++) { + MonitoringOperation monitoringOperation = new MonitoringOperation(); + monitoringOperation.setTaskName("OPERATION-" + i); + monitoringOperation.setRecurrentTimes(i); + monitoringOperations.add(monitoringOperation); + } + taskConfig.setMonitoringOperation(monitoringOperations); + return taskConfig; + } + + @Override + public void init() throws DeviceManagementException { + + } + + @Override + public DeviceManager getDeviceManager() { + return new TestDeviceManager(); + } + + @Override + public ApplicationManager getApplicationManager() { + return null; + } + + @Override + public ProvisioningConfig getProvisioningConfig() { + return new ProvisioningConfig(tenantDomain, false); + } + + @Override + public PushNotificationConfig getPushNotificationConfig() { + return null; + } + + @Override + public PolicyMonitoringManager getPolicyMonitoringManager() { + return null; + } + + @Override + public InitialOperationConfig getInitialOperationConfig() { + return null; + } + + @Override + public PullNotificationSubscriber getPullNotificationSubscriber() { + return null; + } + + @Override + public DeviceStatusTaskPluginConfig getDeviceStatusTaskPluginConfig() { + return null; + } +} diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManager.java b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManager.java new file mode 100644 index 000000000..7a152b9a3 --- /dev/null +++ b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManager.java @@ -0,0 +1,129 @@ +/* +* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.wso2.extension.siddhi.device.test.util; + +import org.wso2.carbon.device.mgt.common.Device; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.common.DeviceManager; +import org.wso2.carbon.device.mgt.common.EnrolmentInfo; +import org.wso2.carbon.device.mgt.common.FeatureManager; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; +import org.wso2.carbon.device.mgt.common.license.mgt.License; +import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException; + +import java.util.List; + +public class TestDeviceManager implements DeviceManager { + + public TestDeviceManager() { + + } + + @Override + public FeatureManager getFeatureManager() { + return null; + } + + @Override + public boolean saveConfiguration(PlatformConfiguration configuration) + throws DeviceManagementException { + return false; + } + + @Override public PlatformConfiguration getConfiguration() throws DeviceManagementException { + return null; + } + + @Override + public boolean enrollDevice(Device device) throws DeviceManagementException { + return true; + } + + @Override + public boolean modifyEnrollment(Device device) throws DeviceManagementException { + return true; + } + + @Override + public boolean disenrollDevice(DeviceIdentifier deviceId) throws DeviceManagementException { + return true; + } + + @Override + public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException { + return true; + } + + @Override + public boolean isActive(DeviceIdentifier deviceId) throws DeviceManagementException { + return true; + } + + @Override + public boolean setActive(DeviceIdentifier deviceId, boolean status) throws DeviceManagementException { + return false; + } + + @Override + public List getAllDevices() throws DeviceManagementException { + return null; + } + + @Override + public Device getDevice(DeviceIdentifier deviceId) throws DeviceManagementException { + return null; + } + + @Override + public boolean updateDeviceInfo(DeviceIdentifier deviceIdentifier, Device device) + throws DeviceManagementException { + return false; + } + + @Override + public boolean setOwnership(DeviceIdentifier deviceId, String ownershipType) + throws DeviceManagementException { + return false; + } + + @Override + public boolean isClaimable(DeviceIdentifier deviceId) throws DeviceManagementException { + return false; + } + + @Override + public boolean setStatus(DeviceIdentifier deviceId, String currentOwner, EnrolmentInfo.Status status) + throws DeviceManagementException { + return false; + } + + @Override + public License getLicense(String languageCode) throws LicenseManagementException { + return null; + } + + @Override + public void addLicense(License license) throws LicenseManagementException { + + } + + @Override + public boolean requireDeviceAuthorization() { + return false; + } + +} diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestUtils.java b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestUtils.java new file mode 100644 index 000000000..20ed04dae --- /dev/null +++ b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestUtils.java @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * you may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.wso2.extension.siddhi.device.test.util; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.common.Device; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; +import org.wso2.carbon.device.mgt.common.GroupPaginationRequest; +import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +public class TestUtils { + + private static final Log log = LogFactory.getLog(TestUtils.class); + + public static void cleanupResources(Connection conn, Statement stmt, ResultSet rs) { + if (rs != null) { + try { + rs.close(); + } catch (SQLException e) { + log.warn("Error occurred while closing result set", e); + } + } + if (stmt != null) { + try { + stmt.close(); + } catch (SQLException e) { + log.warn("Error occurred while closing prepared statement", e); + } + } + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + log.warn("Error occurred while closing database connection", e); + } + } + } + + + public static DeviceGroup createDeviceGroup1(){ + DeviceGroup group = new DeviceGroup(); + group.setName("TEST_GROUP_01"); + group.setDescription("TEST_GROUP_01 - Description"); + group.setOwner("admin"); + return group; + } + + + public static DeviceGroup createDeviceGroup2(){ + DeviceGroup group = new DeviceGroup(); + group.setName("TEST_GROUP_02"); + group.setDescription("TEST_GROUP_02 - Description"); + group.setOwner("admin"); + return group; + } + + public static List getDeviceIdentifiersList(String deviceType){ + + Device device = TestDataHolder.generateDummyDeviceData(deviceType); + DeviceIdentifier identifier = new DeviceIdentifier(); + identifier.setId(device.getDeviceIdentifier()); + identifier.setType(deviceType); + + List list = new ArrayList<>(); + list.add(identifier); + + return list; + } +} diff --git a/src/test/resources/carbon-home/dbscripts/h2.sql b/src/test/resources/carbon-home/dbscripts/h2.sql new file mode 100644 index 000000000..f6b31c78d --- /dev/null +++ b/src/test/resources/carbon-home/dbscripts/h2.sql @@ -0,0 +1,429 @@ +CREATE TABLE IF NOT EXISTS REG_CLUSTER_LOCK ( + REG_LOCK_NAME VARCHAR (20), + REG_LOCK_STATUS VARCHAR (20), + REG_LOCKED_TIME TIMESTAMP, + REG_TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (REG_LOCK_NAME) +); + +CREATE TABLE IF NOT EXISTS REG_LOG ( + REG_LOG_ID INTEGER AUTO_INCREMENT, + REG_PATH VARCHAR (2000), + REG_USER_ID VARCHAR (31) NOT NULL, + REG_LOGGED_TIME TIMESTAMP NOT NULL, + REG_ACTION INTEGER NOT NULL, + REG_ACTION_DATA VARCHAR (500), + REG_TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (REG_LOG_ID, REG_TENANT_ID) +); + +CREATE INDEX IF NOT EXISTS REG_LOG_IND_BY_REG_LOGTIME ON REG_LOG(REG_LOGGED_TIME, REG_TENANT_ID); + +CREATE TABLE IF NOT EXISTS REG_PATH( + REG_PATH_ID INTEGER NOT NULL AUTO_INCREMENT, + REG_PATH_VALUE VARCHAR(2000) NOT NULL, + REG_PATH_PARENT_ID INT, + REG_TENANT_ID INTEGER DEFAULT 0, + CONSTRAINT PK_REG_PATH PRIMARY KEY(REG_PATH_ID, REG_TENANT_ID) +); +CREATE INDEX IF NOT EXISTS REG_PATH_IND_BY_NAME ON REG_PATH(REG_PATH_VALUE, REG_TENANT_ID); +CREATE INDEX IF NOT EXISTS REG_PATH_IND_BY_PARENT_ID ON REG_PATH(REG_PATH_PARENT_ID, REG_TENANT_ID); + + +CREATE TABLE IF NOT EXISTS REG_CONTENT ( + REG_CONTENT_ID INTEGER NOT NULL AUTO_INCREMENT, + REG_CONTENT_DATA LONGBLOB, + REG_TENANT_ID INTEGER DEFAULT 0, + CONSTRAINT PK_REG_CONTENT PRIMARY KEY(REG_CONTENT_ID, REG_TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS REG_CONTENT_HISTORY ( + REG_CONTENT_ID INTEGER NOT NULL, + REG_CONTENT_DATA LONGBLOB, + REG_DELETED SMALLINT, + REG_TENANT_ID INTEGER DEFAULT 0, + CONSTRAINT PK_REG_CONTENT_HISTORY PRIMARY KEY(REG_CONTENT_ID, REG_TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS REG_RESOURCE ( + REG_PATH_ID INTEGER NOT NULL, + REG_NAME VARCHAR(256), + REG_VERSION INTEGER NOT NULL AUTO_INCREMENT, + REG_MEDIA_TYPE VARCHAR(500), + REG_CREATOR VARCHAR(31) NOT NULL, + REG_CREATED_TIME TIMESTAMP NOT NULL, + REG_LAST_UPDATOR VARCHAR(31), + REG_LAST_UPDATED_TIME TIMESTAMP NOT NULL, + REG_DESCRIPTION VARCHAR(1000), + REG_CONTENT_ID INTEGER, + REG_TENANT_ID INTEGER DEFAULT 0, + REG_UUID VARCHAR(100) NOT NULL, + CONSTRAINT PK_REG_RESOURCE PRIMARY KEY(REG_VERSION, REG_TENANT_ID) +); + +ALTER TABLE REG_RESOURCE ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID); +ALTER TABLE REG_RESOURCE ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_FK_BY_CONTENT_ID FOREIGN KEY (REG_CONTENT_ID, REG_TENANT_ID) REFERENCES REG_CONTENT (REG_CONTENT_ID, REG_TENANT_ID); +CREATE INDEX IF NOT EXISTS REG_RESOURCE_IND_BY_NAME ON REG_RESOURCE(REG_NAME, REG_TENANT_ID); +CREATE INDEX IF NOT EXISTS REG_RESOURCE_IND_BY_PATH_ID_NAME ON REG_RESOURCE(REG_PATH_ID, REG_NAME, REG_TENANT_ID); +CREATE INDEX IF NOT EXISTS REG_RESOURCE_IND_BY_UUID ON REG_RESOURCE(REG_UUID); +CREATE INDEX IF NOT EXISTS REG_RESOURCE_IND_BY_TENANT ON REG_RESOURCE(REG_TENANT_ID, REG_UUID); +CREATE INDEX IF NOT EXISTS REG_RESOURCE_IND_BY_TYPE ON REG_RESOURCE(REG_TENANT_ID, REG_MEDIA_TYPE); + +CREATE TABLE IF NOT EXISTS REG_RESOURCE_HISTORY ( + REG_PATH_ID INTEGER NOT NULL, + REG_NAME VARCHAR(256), + REG_VERSION INTEGER NOT NULL, + REG_MEDIA_TYPE VARCHAR(500), + REG_CREATOR VARCHAR(31) NOT NULL, + REG_CREATED_TIME TIMESTAMP NOT NULL, + REG_LAST_UPDATOR VARCHAR(31), + REG_LAST_UPDATED_TIME TIMESTAMP NOT NULL, + REG_DESCRIPTION VARCHAR(1000), + REG_CONTENT_ID INTEGER, + REG_DELETED SMALLINT, + REG_TENANT_ID INTEGER DEFAULT 0, + REG_UUID VARCHAR(100) NOT NULL, + CONSTRAINT PK_REG_RESOURCE_HISTORY PRIMARY KEY(REG_VERSION, REG_TENANT_ID) +); + +ALTER TABLE REG_RESOURCE_HISTORY ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_HIST_FK_BY_PATHID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID); +ALTER TABLE REG_RESOURCE_HISTORY ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_HIST_FK_BY_CONTENT_ID FOREIGN KEY (REG_CONTENT_ID, REG_TENANT_ID) REFERENCES REG_CONTENT_HISTORY (REG_CONTENT_ID, REG_TENANT_ID); +CREATE INDEX IF NOT EXISTS REG_RESOURCE_HISTORY_IND_BY_NAME ON REG_RESOURCE_HISTORY(REG_NAME, REG_TENANT_ID); +CREATE INDEX IF NOT EXISTS REG_RESOURCE_HISTORY_IND_BY_PATH_ID_NAME ON REG_RESOURCE(REG_PATH_ID, REG_NAME, REG_TENANT_ID); + +CREATE TABLE IF NOT EXISTS REG_COMMENT ( + REG_ID INTEGER NOT NULL AUTO_INCREMENT, + REG_COMMENT_TEXT VARCHAR(500) NOT NULL, + REG_USER_ID VARCHAR(31) NOT NULL, + REG_COMMENTED_TIME TIMESTAMP NOT NULL, + REG_TENANT_ID INTEGER DEFAULT 0, + CONSTRAINT PK_REG_COMMENT PRIMARY KEY(REG_ID, REG_TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS REG_RESOURCE_COMMENT ( + REG_COMMENT_ID INTEGER NOT NULL, + REG_VERSION INTEGER, + REG_PATH_ID INTEGER, + REG_RESOURCE_NAME VARCHAR(256), + REG_TENANT_ID INTEGER DEFAULT 0 +); + +ALTER TABLE REG_RESOURCE_COMMENT ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_COMMENT_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID); +ALTER TABLE REG_RESOURCE_COMMENT ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_COMMENT_FK_BY_COMMENT_ID FOREIGN KEY (REG_COMMENT_ID, REG_TENANT_ID) REFERENCES REG_COMMENT (REG_ID, REG_TENANT_ID); +CREATE INDEX IF NOT EXISTS REG_RESOURCE_COMMENT_IND_BY_PATH_ID_AND_RESOURCE_NAME ON REG_RESOURCE_COMMENT(REG_PATH_ID, REG_RESOURCE_NAME, REG_TENANT_ID); +CREATE INDEX IF NOT EXISTS REG_RESOURCE_COMMENT_IND_BY_VERSION ON REG_RESOURCE_COMMENT(REG_VERSION, REG_TENANT_ID); + +CREATE TABLE IF NOT EXISTS REG_RATING ( + REG_ID INTEGER NOT NULL AUTO_INCREMENT, + REG_RATING INTEGER NOT NULL, + REG_USER_ID VARCHAR(31) NOT NULL, + REG_RATED_TIME TIMESTAMP NOT NULL, + REG_TENANT_ID INTEGER DEFAULT 0, + CONSTRAINT PK_REG_RATING PRIMARY KEY(REG_ID, REG_TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS REG_RESOURCE_RATING ( + REG_RATING_ID INTEGER NOT NULL, + REG_VERSION INTEGER, + REG_PATH_ID INTEGER, + REG_RESOURCE_NAME VARCHAR(256), + REG_TENANT_ID INTEGER DEFAULT 0 +); + +ALTER TABLE REG_RESOURCE_RATING ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_RATING_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID); +ALTER TABLE REG_RESOURCE_RATING ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_RATING_FK_BY_RATING_ID FOREIGN KEY (REG_RATING_ID, REG_TENANT_ID) REFERENCES REG_RATING (REG_ID, REG_TENANT_ID); +CREATE INDEX IF NOT EXISTS REG_RESOURCE_RATING_IND_BY_PATH_ID_AND_RESOURCE_NAME ON REG_RESOURCE_RATING(REG_PATH_ID, REG_RESOURCE_NAME, REG_TENANT_ID); +CREATE INDEX IF NOT EXISTS REG_RESOURCE_RATING_IND_BY_VERSION ON REG_RESOURCE_RATING(REG_VERSION, REG_TENANT_ID); + + +CREATE TABLE IF NOT EXISTS REG_TAG ( + REG_ID INTEGER NOT NULL AUTO_INCREMENT, + REG_TAG_NAME VARCHAR(500) NOT NULL, + REG_USER_ID VARCHAR(31) NOT NULL, + REG_TAGGED_TIME TIMESTAMP NOT NULL, + REG_TENANT_ID INTEGER DEFAULT 0, + CONSTRAINT PK_REG_TAG PRIMARY KEY(REG_ID, REG_TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS REG_RESOURCE_TAG ( + REG_TAG_ID INTEGER NOT NULL, + REG_VERSION INTEGER, + REG_PATH_ID INTEGER, + REG_RESOURCE_NAME VARCHAR(256), + REG_TENANT_ID INTEGER DEFAULT 0 +); + +ALTER TABLE REG_RESOURCE_TAG ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_TAG_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID); +ALTER TABLE REG_RESOURCE_TAG ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_TAG_FK_BY_TAG_ID FOREIGN KEY (REG_TAG_ID, REG_TENANT_ID) REFERENCES REG_TAG (REG_ID, REG_TENANT_ID); +CREATE INDEX IF NOT EXISTS REG_RESOURCE_TAG_IND_BY_PATH_ID_AND_RESOURCE_NAME ON REG_RESOURCE_TAG(REG_PATH_ID, REG_RESOURCE_NAME, REG_TENANT_ID); +CREATE INDEX IF NOT EXISTS REG_RESOURCE_TAG_IND_BY_VERSION ON REG_RESOURCE_TAG(REG_VERSION, REG_TENANT_ID); + +CREATE TABLE IF NOT EXISTS REG_PROPERTY ( + REG_ID INTEGER NOT NULL AUTO_INCREMENT, + REG_NAME VARCHAR(100) NOT NULL, + REG_VALUE VARCHAR(1000), + REG_TENANT_ID INTEGER DEFAULT 0, + CONSTRAINT PK_REG_PROPERTY PRIMARY KEY(REG_ID, REG_TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS REG_RESOURCE_PROPERTY ( + REG_PROPERTY_ID INTEGER NOT NULL, + REG_VERSION INTEGER, + REG_PATH_ID INTEGER, + REG_RESOURCE_NAME VARCHAR(256), + REG_TENANT_ID INTEGER DEFAULT 0 +); + +ALTER TABLE REG_RESOURCE_PROPERTY ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_PROPERTY_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID); +ALTER TABLE REG_RESOURCE_PROPERTY ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_PROPERTY_FK_BY_TAG_ID FOREIGN KEY (REG_PROPERTY_ID, REG_TENANT_ID) REFERENCES REG_PROPERTY (REG_ID, REG_TENANT_ID); +CREATE INDEX IF NOT EXISTS REG_RESOURCE_PROPERTY_IND_BY_PATH_ID_AND_RESOURCE_NAME ON REG_RESOURCE_PROPERTY(REG_PATH_ID, REG_RESOURCE_NAME, REG_TENANT_ID); +CREATE INDEX IF NOT EXISTS REG_RESOURCE_PROPERTY_IND_BY_VERSION ON REG_RESOURCE_PROPERTY(REG_VERSION, REG_TENANT_ID); + +CREATE TABLE IF NOT EXISTS REG_ASSOCIATION ( + REG_ASSOCIATION_ID INTEGER AUTO_INCREMENT, + REG_SOURCEPATH VARCHAR (2000) NOT NULL, + REG_TARGETPATH VARCHAR (2000) NOT NULL, + REG_ASSOCIATION_TYPE VARCHAR (2000) NOT NULL, + REG_TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (REG_ASSOCIATION_ID, REG_TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS REG_SNAPSHOT ( + REG_SNAPSHOT_ID INTEGER NOT NULL AUTO_INCREMENT, + REG_PATH_ID INTEGER NOT NULL, + REG_RESOURCE_NAME VARCHAR (256), + REG_RESOURCE_VIDS LONGBLOB NOT NULL, + REG_TENANT_ID INTEGER DEFAULT 0, + CONSTRAINT PK_REG_SNAPSHOT PRIMARY KEY(REG_SNAPSHOT_ID, REG_TENANT_ID) +); + +ALTER TABLE REG_SNAPSHOT ADD CONSTRAINT IF NOT EXISTS REG_SNAPSHOT_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID); +CREATE INDEX IF NOT EXISTS REG_SNAPSHOT_IND_BY_PATH_ID_AND_RESOURCE_NAME ON REG_SNAPSHOT(REG_PATH_ID, REG_RESOURCE_NAME, REG_TENANT_ID); + +-- ################################ +-- USER MANAGER TABLES +-- ################################ + +CREATE TABLE IF NOT EXISTS UM_TENANT ( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_DOMAIN_NAME VARCHAR(255) NOT NULL, + UM_EMAIL VARCHAR(255), + UM_ACTIVE BOOLEAN DEFAULT FALSE, + UM_CREATED_DATE TIMESTAMP NOT NULL, + UM_USER_CONFIG LONGBLOB NOT NULL, + PRIMARY KEY (UM_ID), + UNIQUE(UM_DOMAIN_NAME)); + +CREATE TABLE IF NOT EXISTS UM_DOMAIN( + UM_DOMAIN_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_DOMAIN_NAME VARCHAR(255), + UM_TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (UM_DOMAIN_ID, UM_TENANT_ID) +); + +CREATE INDEX IF NOT EXISTS INDEX_UM_TENANT_UM_DOMAIN_NAME ON UM_TENANT (UM_DOMAIN_NAME); + +CREATE TABLE IF NOT EXISTS UM_USER ( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_USER_NAME VARCHAR(255) NOT NULL, + UM_USER_PASSWORD VARCHAR(255) NOT NULL, + UM_SALT_VALUE VARCHAR(31), + UM_REQUIRE_CHANGE BOOLEAN DEFAULT FALSE, + UM_CHANGED_TIME TIMESTAMP NOT NULL, + UM_TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (UM_ID, UM_TENANT_ID), + UNIQUE(UM_USER_NAME, UM_TENANT_ID)); + +CREATE TABLE IF NOT EXISTS UM_SYSTEM_USER ( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_USER_NAME VARCHAR(255) NOT NULL, + UM_USER_PASSWORD VARCHAR(255) NOT NULL, + UM_SALT_VALUE VARCHAR(31), + UM_REQUIRE_CHANGE BOOLEAN DEFAULT FALSE, + UM_CHANGED_TIME TIMESTAMP NOT NULL, + UM_TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (UM_ID, UM_TENANT_ID), + UNIQUE(UM_USER_NAME, UM_TENANT_ID)); + +CREATE TABLE IF NOT EXISTS UM_USER_ATTRIBUTE ( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_ATTR_NAME VARCHAR(255) NOT NULL, + UM_ATTR_VALUE VARCHAR(1024), + UM_PROFILE_ID VARCHAR(255), + UM_USER_ID INTEGER, + UM_TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (UM_ID, UM_TENANT_ID), + FOREIGN KEY (UM_USER_ID, UM_TENANT_ID) REFERENCES UM_USER(UM_ID, UM_TENANT_ID)); + +CREATE INDEX IF NOT EXISTS UM_USER_ID_INDEX ON UM_USER_ATTRIBUTE(UM_USER_ID); + +CREATE TABLE IF NOT EXISTS UM_ROLE ( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_ROLE_NAME VARCHAR(255) NOT NULL, + UM_TENANT_ID INTEGER DEFAULT 0, + UM_SHARED_ROLE BOOLEAN DEFAULT FALSE, + PRIMARY KEY (UM_ID, UM_TENANT_ID), + UNIQUE(UM_ROLE_NAME, UM_TENANT_ID)); + +CREATE TABLE IF NOT EXISTS UM_MODULE( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_MODULE_NAME VARCHAR(100), + UNIQUE(UM_MODULE_NAME), + PRIMARY KEY(UM_ID) +); + +CREATE TABLE IF NOT EXISTS UM_MODULE_ACTIONS( + UM_ACTION VARCHAR(255) NOT NULL, + UM_MODULE_ID INTEGER NOT NULL, + PRIMARY KEY(UM_ACTION, UM_MODULE_ID), + FOREIGN KEY (UM_MODULE_ID) REFERENCES UM_MODULE(UM_ID) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS UM_PERMISSION ( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_RESOURCE_ID VARCHAR(255) NOT NULL, + UM_ACTION VARCHAR(255) NOT NULL, + UM_TENANT_ID INTEGER DEFAULT 0, + UM_MODULE_ID INTEGER DEFAULT 0, + UNIQUE(UM_RESOURCE_ID,UM_ACTION, UM_TENANT_ID), + PRIMARY KEY (UM_ID, UM_TENANT_ID)); + +CREATE INDEX IF NOT EXISTS INDEX_UM_PERMISSION_UM_RESOURCE_ID_UM_ACTION ON UM_PERMISSION (UM_RESOURCE_ID, UM_ACTION, UM_TENANT_ID); + +CREATE TABLE IF NOT EXISTS UM_ROLE_PERMISSION ( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_PERMISSION_ID INTEGER NOT NULL, + UM_ROLE_NAME VARCHAR(255) NOT NULL, + UM_IS_ALLOWED SMALLINT NOT NULL, + UM_TENANT_ID INTEGER DEFAULT 0, + UM_DOMAIN_ID INTEGER, + FOREIGN KEY (UM_PERMISSION_ID, UM_TENANT_ID) REFERENCES UM_PERMISSION(UM_ID, UM_TENANT_ID) ON DELETE CASCADE, + FOREIGN KEY (UM_DOMAIN_ID, UM_TENANT_ID) REFERENCES UM_DOMAIN(UM_DOMAIN_ID, UM_TENANT_ID) ON DELETE CASCADE, + PRIMARY KEY (UM_ID, UM_TENANT_ID)); + +CREATE TABLE IF NOT EXISTS UM_USER_PERMISSION ( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_PERMISSION_ID INTEGER NOT NULL, + UM_USER_NAME VARCHAR(255) NOT NULL, + UM_IS_ALLOWED SMALLINT NOT NULL, + UNIQUE (UM_PERMISSION_ID, UM_USER_NAME, UM_TENANT_ID), + UM_TENANT_ID INTEGER DEFAULT 0, + FOREIGN KEY (UM_PERMISSION_ID, UM_TENANT_ID) REFERENCES UM_PERMISSION(UM_ID, UM_TENANT_ID) ON DELETE CASCADE, + PRIMARY KEY (UM_ID, UM_TENANT_ID)); + +CREATE TABLE IF NOT EXISTS UM_USER_ROLE ( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_ROLE_ID INTEGER NOT NULL, + UM_USER_ID INTEGER NOT NULL, + UM_TENANT_ID INTEGER DEFAULT 0, + UNIQUE (UM_USER_ID, UM_ROLE_ID, UM_TENANT_ID), + FOREIGN KEY (UM_ROLE_ID, UM_TENANT_ID) REFERENCES UM_ROLE(UM_ID, UM_TENANT_ID), + FOREIGN KEY (UM_USER_ID, UM_TENANT_ID) REFERENCES UM_USER(UM_ID, UM_TENANT_ID), + PRIMARY KEY (UM_ID, UM_TENANT_ID)); + + +CREATE TABLE IF NOT EXISTS UM_SHARED_USER_ROLE( + UM_ROLE_ID INTEGER NOT NULL, + UM_USER_ID INTEGER NOT NULL, + UM_USER_TENANT_ID INTEGER NOT NULL, + UM_ROLE_TENANT_ID INTEGER NOT NULL, + UNIQUE(UM_USER_ID,UM_ROLE_ID,UM_USER_TENANT_ID, UM_ROLE_TENANT_ID), + FOREIGN KEY(UM_ROLE_ID,UM_ROLE_TENANT_ID) REFERENCES UM_ROLE(UM_ID,UM_TENANT_ID) ON DELETE CASCADE , + FOREIGN KEY(UM_USER_ID,UM_USER_TENANT_ID) REFERENCES UM_USER(UM_ID,UM_TENANT_ID) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS UM_ACCOUNT_MAPPING( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_USER_NAME VARCHAR(255) NOT NULL, + UM_TENANT_ID INTEGER NOT NULL, + UM_USER_STORE_DOMAIN VARCHAR(100), + UM_ACC_LINK_ID INTEGER NOT NULL, + UNIQUE(UM_USER_NAME, UM_TENANT_ID, UM_USER_STORE_DOMAIN, UM_ACC_LINK_ID), + FOREIGN KEY (UM_TENANT_ID) REFERENCES UM_TENANT(UM_ID) ON DELETE CASCADE, + PRIMARY KEY (UM_ID) +); + + +CREATE TABLE IF NOT EXISTS UM_DIALECT( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_DIALECT_URI VARCHAR(255) NOT NULL, + UM_TENANT_ID INTEGER DEFAULT 0, + UNIQUE(UM_DIALECT_URI, UM_TENANT_ID), + PRIMARY KEY (UM_ID, UM_TENANT_ID) +); + + +CREATE TABLE IF NOT EXISTS UM_CLAIM( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_DIALECT_ID INTEGER NOT NULL, + UM_CLAIM_URI VARCHAR(255) NOT NULL, + UM_DISPLAY_TAG VARCHAR(255), + UM_DESCRIPTION VARCHAR(255), + UM_MAPPED_ATTRIBUTE_DOMAIN VARCHAR(255), + UM_MAPPED_ATTRIBUTE VARCHAR(255), + UM_REG_EX VARCHAR(255), + UM_SUPPORTED SMALLINT, + UM_REQUIRED SMALLINT, + UM_DISPLAY_ORDER INTEGER, + UM_CHECKED_ATTRIBUTE SMALLINT, + UM_READ_ONLY SMALLINT, + UM_TENANT_ID INTEGER DEFAULT 0, + UNIQUE(UM_DIALECT_ID, UM_CLAIM_URI,UM_MAPPED_ATTRIBUTE_DOMAIN, UM_TENANT_ID), + FOREIGN KEY(UM_DIALECT_ID, UM_TENANT_ID) REFERENCES UM_DIALECT(UM_ID, UM_TENANT_ID), + PRIMARY KEY (UM_ID, UM_TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS UM_PROFILE_CONFIG( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_DIALECT_ID INTEGER, + UM_PROFILE_NAME VARCHAR(255), + UM_TENANT_ID INTEGER DEFAULT 0, + FOREIGN KEY(UM_DIALECT_ID, UM_TENANT_ID) REFERENCES UM_DIALECT(UM_ID, UM_TENANT_ID), + PRIMARY KEY (UM_ID, UM_TENANT_ID) +); + + +CREATE TABLE IF NOT EXISTS UM_HYBRID_ROLE( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_ROLE_NAME VARCHAR(255), + UM_TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (UM_ID, UM_TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS UM_HYBRID_USER_ROLE( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_USER_NAME VARCHAR(255), + UM_ROLE_ID INTEGER NOT NULL, + UM_TENANT_ID INTEGER DEFAULT 0, + UM_DOMAIN_ID INTEGER, + UNIQUE (UM_USER_NAME, UM_ROLE_ID, UM_TENANT_ID,UM_DOMAIN_ID), + FOREIGN KEY (UM_ROLE_ID, UM_TENANT_ID) REFERENCES UM_HYBRID_ROLE(UM_ID, UM_TENANT_ID) ON DELETE CASCADE, + FOREIGN KEY (UM_DOMAIN_ID, UM_TENANT_ID) REFERENCES UM_DOMAIN(UM_DOMAIN_ID, UM_TENANT_ID) ON DELETE CASCADE, + PRIMARY KEY (UM_ID, UM_TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS UM_HYBRID_REMEMBER_ME ( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_USER_NAME VARCHAR(255) NOT NULL, + UM_COOKIE_VALUE VARCHAR(1024), + UM_CREATED_TIME TIMESTAMP, + UM_TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (UM_ID, UM_TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS UM_SYSTEM_ROLE( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_ROLE_NAME VARCHAR(255), + UM_TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (UM_ID, UM_TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS UM_SYSTEM_USER_ROLE( + UM_ID INTEGER NOT NULL AUTO_INCREMENT, + UM_USER_NAME VARCHAR(255), + UM_ROLE_ID INTEGER NOT NULL, + UM_TENANT_ID INTEGER DEFAULT 0, + UNIQUE (UM_USER_NAME, UM_ROLE_ID, UM_TENANT_ID), + FOREIGN KEY (UM_ROLE_ID, UM_TENANT_ID) REFERENCES UM_SYSTEM_ROLE(UM_ID, UM_TENANT_ID), + PRIMARY KEY (UM_ID, UM_TENANT_ID) +); diff --git a/src/test/resources/carbon-home/repository/conf/axis2/axis2.xml b/src/test/resources/carbon-home/repository/conf/axis2/axis2.xml new file mode 100644 index 000000000..fc5047f29 --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/axis2/axis2.xml @@ -0,0 +1,723 @@ + + + + + + + + + + + + + ${hotdeployment} + ${hotupdate} + optional + true + work/mtom + 4000 + + ${childfirstCL} + + + true + + + true + + + + false + + inmemory + + + + + + + services + + + axis2services + + + axis2modules + + + @product.name@-@product.version@ + + + @product.name@-@product.version@ + + + + + + + false + + + + + + false + + + true + + + repository/deployment/server/synapse-configs + + + . + + + . + + + WSO2 Carbon Server + + + + + + + ${jaxwsparam} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 9763 + + + + + + + + + + + + 9443 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + HTTP/1.1 + chunked + + true + + + HTTP/1.1 + chunked + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + multicast + + + + + wso2.carbon.domain + + + + + + 45564 + + 100 + + 60 + + + + + + 127.0.0.1 + + + + + + 4000 + + + + + + + + + + + + + + + + + + 127.0.0.1 + 4000 + + + + + + + + + diff --git a/src/test/resources/carbon-home/repository/conf/axis2/axis2_client.xml b/src/test/resources/carbon-home/repository/conf/axis2/axis2_client.xml new file mode 100644 index 000000000..40f3e07c3 --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/axis2/axis2_client.xml @@ -0,0 +1,300 @@ + + + + + + + true + false + false + + + 500 + + 15000 + + + false + + + + true + + + + + + false + + + admin + axis2 + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6071 + + + + + + + + + + + + + + + + + + + + + + HTTP/1.1 + chunked + 60000 + 60000 + + + HTTP/1.1 + chunked + 60000 + 60000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/carbon-home/repository/conf/axis2/tenant-axis2.xml b/src/test/resources/carbon-home/repository/conf/axis2/tenant-axis2.xml new file mode 100644 index 000000000..6f49f62ed --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/axis2/tenant-axis2.xml @@ -0,0 +1,285 @@ + + + + + + + + + true + true + optional + + + true + + + false + + + + true + + + + + + false + + + false + + + axis2services + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/carbon-home/repository/conf/carbon.xml b/src/test/resources/carbon-home/repository/conf/carbon.xml new file mode 100644 index 000000000..f24ee57be --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/carbon.xml @@ -0,0 +1,656 @@ + + + + + + + + + ${product.name} + + + ${product.key} + + + ${product.version} + + + + + + + + + local:/${carbon.context}/services/ + + + + + + + ${default.server.role} + + + + + + + org.wso2.carbon + + + / + + + + + + + + + 15 + + + + + + + + + 0 + + + + + 9999 + + 11111 + + + + + + 10389 + + 8000 + + + + + + 10500 + + + + + + + org.wso2.carbon.tomcat.jndi.CarbonJavaURLContextFactory + + + + + + + + + java + + + + + + + + + + false + + + false + + + 600 + + + + false + + + + + + + + 30 + + + + + + + + + 15 + + + + + + ${carbon.home}/repository/deployment/server/ + + + 15 + + + ${carbon.home}/repository/conf/axis2/axis2.xml + + + 30000 + + + ${carbon.home}/repository/deployment/client/ + + ${carbon.home}/repository/conf/axis2/axis2_client.xml + + true + + + + + + + + + + admin + Default Administrator Role + + + user + Default User Role + + + + + + + + + + + + ${carbon.home}/repository/resources/security/wso2carbon.jks + + JKS + + wso2carbon + + wso2carbon + + wso2carbon + + + + + + ${carbon.home}/repository/resources/security/client-truststore.jks + + JKS + + wso2carbon + + + + + + + + + + + + + + + + + + + UserManager + + + false + + + + + + + ${carbon.home}/tmp/work + + + + + + true + + + 10 + + + 30 + + + + + + 100 + + + + keystore + certificate + * + + org.wso2.carbon.ui.transports.fileupload.AnyFileUploadExecutor + + + + + jarZip + + org.wso2.carbon.ui.transports.fileupload.JarZipUploadExecutor + + + + dbs + + org.wso2.carbon.ui.transports.fileupload.DBSFileUploadExecutor + + + + tools + + org.wso2.carbon.ui.transports.fileupload.ToolsFileUploadExecutor + + + + toolsAny + + org.wso2.carbon.ui.transports.fileupload.ToolsAnyFileUploadExecutor + + + + + + + info + org.wso2.carbon.core.transports.util.InfoProcessor + + + wsdl + org.wso2.carbon.core.transports.util.Wsdl11Processor + + + wsdl2 + org.wso2.carbon.core.transports.util.Wsdl20Processor + + + xsd + org.wso2.carbon.core.transports.util.XsdProcessor + + + + + + false + false + true + svn + http://svnrepo.example.com/repos/ + username + password + true + + + + + + + + + + + + + + + ${require.carbon.servlet} + + + + + true + + + + + + + default repository + ${p2.repo.url} + + + + + + + + true + + + + + + true + + diff --git a/src/test/resources/carbon-home/repository/conf/cdm-config.xml b/src/test/resources/carbon-home/repository/conf/cdm-config.xml new file mode 100644 index 000000000..9097a645c --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/cdm-config.xml @@ -0,0 +1,96 @@ + + + + + + + + jdbc/DM_DS + + + + + 1000 + 60000 + 60000 + true + + org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.FCMBasedPushNotificationProvider + + org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.MQTTBasedPushNotificationProvider + org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.HTTPBasedPushNotificationProvider + org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.XMPPBasedPushNotificationProvider + + + + false + + + https://localhost:9443 + admin + admin + + + org.wso2.carbon.policy.mgt + true + 60000 + 5 + 8 + 20 + + + + Simple + + + + 20 + 20 + 20 + 20 + 20 + 20 + + + + true + + + + false + 600 + + 10000 + + + false + 86400 + + + false + false + + BYOD,COPE + + diff --git a/src/test/resources/carbon-home/repository/conf/datasources/master-datasources.xml b/src/test/resources/carbon-home/repository/conf/datasources/master-datasources.xml new file mode 100644 index 000000000..897e33581 --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/datasources/master-datasources.xml @@ -0,0 +1,68 @@ + + + + org.wso2.carbon.ndatasource.rdbms.RDBMSDataSourceReader + + + + + + WSO2_CARBON_DB + The datasource used for registry and user manager + + jdbc/WSO2CarbonDB + + + + jdbc:h2:repository/database/WSO2CARBON_DB;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=60000 + wso2carbon + wso2carbon + org.h2.Driver + 50 + 60000 + true + SELECT 1 + 30000 + false + + + + + + + + + + diff --git a/src/test/resources/carbon-home/repository/conf/etc/bundle-config/README.txt b/src/test/resources/carbon-home/repository/conf/etc/bundle-config/README.txt new file mode 100644 index 000000000..ffa7c7926 --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/etc/bundle-config/README.txt @@ -0,0 +1,12 @@ +This directory supports adding third-pary config files to specific bundles during runtime. + +Explanation: Each OSGi bundle has its own classLoader. Some thirdpary libs read configs from classPath. This scenario fails in OSGi runtime, since OSGi runtime does not share a common classPath for individual bundles. Bundling config files during the bundle creation process itself will solve the issue. However it limits the ability to edit the configs during restarts. + +Here we are providing a workaround for such scenarios. The given config file will get resolved to a fragment bundle and will get attached to the specified host bundle. The host bundle name(symbolic name) is resolved by looking at the directory structure. Hence host bundle name should be directory name of the config file directory. + + +Example: The bundle with symbolic name, 'org.foo.bar' expects a config file named 'foobar.properties' from its classPath. + +create a directory named 'org.foo.bar' inside 'repository/conf/etc/bundle-config' - (this directory) and place the foobar.properties file. + + diff --git a/src/test/resources/carbon-home/repository/conf/etc/carboncontext-osgi-services.properties b/src/test/resources/carbon-home/repository/conf/etc/carboncontext-osgi-services.properties new file mode 100644 index 000000000..f52d19400 --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/etc/carboncontext-osgi-services.properties @@ -0,0 +1,3 @@ +#osgi.service.1 = org.wso2.carbon.client.configcontext.provider.Axis2ClientConfigContextProvider +#osgi.service.2 = org.wso2.carbon.user.core.UserManager +#osgi.service.3 = org.wso2.carbon.user.api.UserRealmService \ No newline at end of file diff --git a/src/test/resources/carbon-home/repository/conf/etc/config-validation.xml b/src/test/resources/carbon-home/repository/conf/etc/config-validation.xml new file mode 100644 index 000000000..3b5b3484b --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/etc/config-validation.xml @@ -0,0 +1,37 @@ + + + + + + 800 + 2047 + 2047 + 1024 + 4096 + 02:FB:AA:5F:20:64:49:4A:27:29:55:71:83:F7:46:CD + + + 256 + 512 + 256 + + + carbon.home + carbon.config.dir.path + axis2.home + + + Linux + Unix + Mac OS + Windows Server 2003 + Windows XP + Windows Vista + Windows 7 + Mac OS X + Windows Server 2008 + Windows Server 2008 R2 + AIX + + + diff --git a/src/test/resources/carbon-home/repository/conf/etc/jmx.xml b/src/test/resources/carbon-home/repository/conf/etc/jmx.xml new file mode 100644 index 000000000..b2bb2ac7a --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/etc/jmx.xml @@ -0,0 +1,32 @@ + + + + + true + + + localhost + + + ${Ports.JMX.RMIRegistryPort} + + + ${Ports.JMX.RMIServerPort} + diff --git a/src/test/resources/carbon-home/repository/conf/etc/launch.ini b/src/test/resources/carbon-home/repository/conf/etc/launch.ini new file mode 100644 index 000000000..8b9f5ad19 --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/etc/launch.ini @@ -0,0 +1,258 @@ +# Eclipse Runtime Configuration Overrides +# These properties are loaded prior to starting the framework and can also be used to override System Properties +# @null is a special value used to override and clear the framework's copy of a System Property prior to starting the framework +# "*" can be used together with @null to clear System Properties that match a prefix name. + +osgi.*=@null +org.osgi.*=@null +eclipse.*=@null + +osgi.parentClassloader=app +osgi.contextClassLoaderParent=app + +# When osgi.clean is set to "true", any cached data used by the OSGi framework +# will be wiped clean. This will clean the caches used to store bundle +# dependency resolution and eclipse extension registry data. Using this +# option will force OSGi framework to reinitialize these caches. +# The following setting is put in place to get rid of the problems +# faced when re-starting the system. Please note that, when this setting is +# true, if you manually start a bundle, it would not be available when +# you re-start the system. To avid this, copy the bundle jar to the plugins +# folder, before you re-start the system. +osgi.clean=true + +# Uncomment the following line to turn on Eclipse Equinox debugging. +# You may also edit the osgi-debug.options file and fine tune the debugging +# options to suite your needs. +#osgi.debug=./repository/conf/osgi-debug.options + +# Following system property allows us to control the public JDK packages exported through the system bundle. +org.osgi.framework.system.packages=javax.accessibility,\ +javax.activity,\ +javax.crypto,\ +javax.crypto.interfaces,\ +javax.crypto.spec,\ +javax.imageio,\ +javax.imageio.event,\ +javax.imageio.metadata,\ +javax.imageio.plugins.bmp,\ +javax.imageio.plugins.jpeg,\ +javax.imageio.spi,\ +javax.imageio.stream,\ +javax.jms,\ +javax.management,\ +javax.management.loading,\ +javax.management.modelmbean,\ +javax.management.monitor,\ +javax.management.openmbean,\ +javax.management.relation,\ +javax.management.remote,\ +javax.management.remote.rmi,\ +javax.management.timer,\ +javax.naming,\ +javax.naming.directory,\ +javax.naming.event,\ +javax.naming.ldap,\ +javax.naming.spi,\ +javax.net,\ +javax.net.ssl,\ +javax.print,\ +javax.print.attribute,\ +javax.print.attribute.standard,\ +javax.print.event,\ +javax.rmi,\ +javax.rmi.CORBA,\ +javax.rmi.ssl,\ +javax.script,\ +javax.security.auth,\ +javax.security.auth.callback,\ +javax.security.auth.kerberos,\ +javax.security.auth.login,\ +javax.security.auth.spi,\ +javax.security.auth.x500,\ +javax.security.cert,\ +javax.security.sasl,\ +javax.sound.midi,\ +javax.sound.midi.spi,\ +javax.sound.sampled,\ +javax.sound.sampled.spi,\ +javax.sql,\ +javax.sql.rowset,\ +javax.sql.rowset.serial,\ +javax.sql.rowset.spi,\ +javax.swing,\ +javax.swing.border,\ +javax.swing.colorchooser,\ +javax.swing.event,\ +javax.swing.filechooser,\ +javax.swing.plaf,\ +javax.swing.plaf.basic,\ +javax.swing.plaf.metal,\ +javax.swing.plaf.multi,\ +javax.swing.plaf.synth,\ +javax.swing.table,\ +javax.swing.text,\ +javax.swing.text.html,\ +javax.swing.text.html.parser,\ +javax.swing.text.rtf,\ +javax.swing.tree,\ +javax.swing.undo,\ +javax.transaction,\ +javax.transaction.xa,\ +javax.xml.namespace,\ +javax.xml.parsers,\ +javax.xml.stream,\ +javax.xml.stream.events,\ +javax.xml.stream.util,\ +javax.xml.transform,\ +javax.xml.transform.stream,\ +javax.xml.transform.dom,\ +javax.xml.transform.sax,\ +javax.xml,\ +javax.xml.validation,\ +javax.xml.datatype,\ +javax.xml.xpath,\ +javax.activation,\ +com.sun.activation.registries,\ +com.sun.activation.viewers,\ +org.ietf.jgss,\ +org.omg.CORBA,\ +org.omg.CORBA_2_3,\ +org.omg.CORBA_2_3.portable,\ +org.omg.CORBA.DynAnyPackage,\ +org.omg.CORBA.ORBPackage,\ +org.omg.CORBA.portable,\ +org.omg.CORBA.TypeCodePackage,\ +org.omg.CosNaming,\ +org.omg.CosNaming.NamingContextExtPackage,\ +org.omg.CosNaming.NamingContextPackage,\ +org.omg.Dynamic,\ +org.omg.DynamicAny,\ +org.omg.DynamicAny.DynAnyFactoryPackage,\ +org.omg.DynamicAny.DynAnyPackage,\ +org.omg.IOP,\ +org.omg.IOP.CodecFactoryPackage,\ +org.omg.IOP.CodecPackage,\ +org.omg.Messaging,\ +org.omg.PortableInterceptor,\ +org.omg.PortableInterceptor.ORBInitInfoPackage,\ +org.omg.PortableServer,\ +org.omg.PortableServer.CurrentPackage,\ +org.omg.PortableServer.POAManagerPackage,\ +org.omg.PortableServer.POAPackage,\ +org.omg.PortableServer.portable,\ +org.omg.PortableServer.ServantLocatorPackage,\ +org.omg.SendingContext,\ +org.omg.stub.java.rmi,\ +org.w3c.dom,\ +org.w3c.dom.bootstrap,\ +org.w3c.dom.css,\ +org.w3c.dom.events,\ +org.w3c.dom.html,\ +org.w3c.dom.ls,\ +org.w3c.dom.ranges,\ +org.w3c.dom.stylesheets,\ +org.w3c.dom.traversal,\ +org.w3c.dom.views ,\ +org.xml.sax,\ +org.xml.sax.ext,\ +org.xml.sax.helpers,\ +org.apache.xerces.xpointer,\ +org.apache.xerces.xni.grammars,\ +org.apache.xerces.impl.xs.util,\ +org.apache.xerces.jaxp.validation,\ +org.apache.xerces.impl.dtd.models,\ +org.apache.xerces.impl.xpath,\ +org.apache.xerces.dom3.as,\ +org.apache.xerces.impl.dv.xs,\ +org.apache.xerces.util,\ +org.apache.xerces.impl.xs.identity,\ +org.apache.xerces.impl.xs.opti,\ +org.apache.xerces.jaxp,\ +org.apache.xerces.impl.dv,\ +org.apache.xerces.xs.datatypes,\ +org.apache.xerces.dom.events,\ +org.apache.xerces.impl.msg,\ +org.apache.xerces.xni,\ +org.apache.xerces.impl.xs,\ +org.apache.xerces.impl,\ +org.apache.xerces.impl.io,\ +org.apache.xerces.xinclude,\ +org.apache.xerces.jaxp.datatype,\ +org.apache.xerces.parsers,\ +org.apache.xerces.impl.dv.util,\ +org.apache.xerces.xni.parser,\ +org.apache.xerces.impl.xs.traversers,\ +org.apache.xerces.impl.dv.dtd,\ +org.apache.xerces.xs,\ +org.apache.xerces.impl.dtd,\ +org.apache.xerces.impl.validation,\ +org.apache.xerces.impl.xs.models,\ +org.apache.xerces.impl.xpath.regex,\ +org.apache.xml.serialize,\ +org.apache.xerces.dom,\ +org.apache.xalan,\ +org.apache.xalan.xslt,\ +org.apache.xalan.templates,\ +org.apache.xalan.xsltc,\ +org.apache.xalan.xsltc.cmdline,\ +org.apache.xalan.xsltc.cmdline.getopt,\ +org.apache.xalan.xsltc.trax,\ +org.apache.xalan.xsltc.dom,\ +org.apache.xalan.xsltc.runtime,\ +org.apache.xalan.xsltc.runtime.output,\ +org.apache.xalan.xsltc.util,\ +org.apache.xalan.xsltc.compiler,\ +org.apache.xalan.xsltc.compiler.util,\ +org.apache.xalan.serialize,\ +org.apache.xalan.client,\ +org.apache.xalan.res,\ +org.apache.xalan.transformer,\ +org.apache.xalan.extensions,\ +org.apache.xalan.lib,\ +org.apache.xalan.lib.sql,\ +org.apache.xalan.processor,\ +org.apache.xalan.trace,\ +org.apache.xml.dtm,\ +org.apache.xml.dtm.ref,\ +org.apache.xml.dtm.ref.sax2dtm,\ +org.apache.xml.dtm.ref.dom2dtm,\ +org.apache.xml.utils,\ +org.apache.xml.utils.res,\ +org.apache.xml.res,\ +org.apache.xml.serializer,\ +org.apache.xml.serializer.utils,\ +org.apache.xpath,\ +org.apache.xpath.domapi,\ +org.apache.xpath.objects,\ +org.apache.xpath.patterns,\ +org.apache.xpath.jaxp,\ +org.apache.xpath.res,\ +org.apache.xpath.operations,\ +org.apache.xpath.functions,\ +org.apache.xpath.axes,\ +org.apache.xpath.compiler,\ +org.apache.xml.resolver,\ +org.apache.xml.resolver.tools,\ +org.apache.xml.resolver.helpers,\ +org.apache.xml.resolver.readers,\ +org.apache.xml.resolver.etc,\ +org.apache.xml.resolver.apps,\ +javax.xml.ws,\ +javax.xml.ws.handler,\ +javax.xml.ws.handler.soap,\ +javax.xml.ws.http,\ +javax.xml.ws.soap,\ +javax.xml.ws.spi,\ +javax.xml.ws.spi.http,\ +javax.xml.ws.wsaddressing,\ +javax.xml.bind,\ +javax.xml.bind.annotation,\ +javax.xml.bind.annotation.adapters,\ +javax.annotation,\ +javax.jws,\ +javax.jws.soap,\ +com.sun.xml.internal.messaging.saaj.soap.ver1_1,\ +com.sun.xml.internal.messaging.saaj.soap,\ +com.sun.tools.internal.ws.spi,\ +org.wso2.carbon.bootstrap diff --git a/src/test/resources/carbon-home/repository/conf/etc/logging-bridge.properties b/src/test/resources/carbon-home/repository/conf/etc/logging-bridge.properties new file mode 100644 index 000000000..7b63190ae --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/etc/logging-bridge.properties @@ -0,0 +1,65 @@ +############################################################ +# Default Logging Configuration File +# +# You can use a different file by specifying a filename +# with the java.util.logging.config.file system property. +# For example java -Djava.util.logging.config.file=myfile +############################################################ + +############################################################ +# Global properties +# NOTE: this configuration file use to get the handler list, +# Properties(except level property) define for each handler +# may be not available because LogRecords handover to log4j +# appenders in runtime. +############################################################ + +# "handlers" specifies a comma separated list of log Handler +# classes. These handlers will be installed during VM startup. +# Note that these classes must be on the system classpath. +# By default we only configure a ConsoleHandler, which will only +# show messages at the INFO and above levels. +#handlers= java.util.logging.ConsoleHandler + +# To also add the FileHandler, use the following line instead. +#handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler +# Add org.wso2.carbon.bootstrap.logging.handlers.LogEventHandler to handlers if you need to push java logs to LOGEVENT appender + +handlers= org.wso2.carbon.bootstrap.logging.handlers.LoggingConsoleHandler, org.wso2.carbon.bootstrap.logging.handlers.LoggingFileHandler + +# Default global logging level. +# This specifies which kinds of events are logged across +# all loggers. For any given facility this global level +# can be overriden by a facility specific level +# Note that the ConsoleHandler also has a separate level +# setting to limit messages printed to the console. +.level= INFO + +############################################################ +# Handler specific properties. +# Describes specific configuration info for Handlers. +# + +############################################################ +# This FileHandler pushed LogRecords to a log4j FileAppander in runtime +org.wso2.carbon.bootstrap.logging.handlers.LoggingFileHandler.level = INFO +#org.wso2.carbon.bootstrap.logging.handlers.LoggingFileHandler.formatter = java.util.logging.SimpleFormatter + +# This ConsoleHandler pushed LogRecords to q log4j ConsoleAppander in runtime +org.wso2.carbon.bootstrap.logging.handlers.LoggingConsoleHandler.level = INFO +#org.wso2.carbon.bootstrap.logging.handlers.LoggingConsoleHandler.formatter = java.util.logging.SimpleFormatter + + +############################################################ +# Facility specific properties. +# Provides extra control for each logger. +############################################################ + +# For example, set the com.xyz.foo logger to only log SEVERE +# messages: +#com.xyz.foo.level = SEVERE +org.apache.coyote.level = SEVERE +org.apache.catalina.level = SEVERE +com.hazelcast.level = SEVERE + + diff --git a/src/test/resources/carbon-home/repository/conf/etc/mime.mappings b/src/test/resources/carbon-home/repository/conf/etc/mime.mappings new file mode 100755 index 000000000..97a5c5a5f --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/etc/mime.mappings @@ -0,0 +1,27 @@ +# +# Copyright 2005-2011 WSO2, Inc. (http://wso2.com) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# This file is to define the human readable media type for a mime type. +# Eg:- +# text/plain txt text +application/wsdl+xml WSDL +application/x-xsd+xml Schema +application/policy+xml Policy +application/vnd.wso2-service+xml Service +application/vnd.wso2-hyperlink Hyperlink +application/vnd.wso2.endpoint Endpoint +application/vnd.wso2-api+xml API +application/vnd.wso2-uri+xml URI diff --git a/src/test/resources/carbon-home/repository/conf/etc/mime.types b/src/test/resources/carbon-home/repository/conf/etc/mime.types new file mode 100644 index 000000000..21c386da0 --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/etc/mime.types @@ -0,0 +1,734 @@ +# +# Copyright 2005-2009 WSO2, Inc. (http://wso2.com) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Media type for wsdl files. This is not defined in the original mime.types file. +chemical/x-alchemy alc +application/andrew-inset ez +application/wsdl+xml wsdl +application/vnd.sun.wadl+xml wadl +application/activemessage +application/applefile +application/atomicmail +application/batch-SMTP +application/beep+xml +application/cals-1840 +application/commonground +application/cu-seeme cu +application/cybercash +application/dca-rft +application/dec-dx +application/docbook+xml +application/dsptype tsp +application/dvcs +application/edi-consent +application/edi-x12 +application/edifact +application/eshop +application/font-tdpfr +application/futuresplash spl +application/ghostview +application/hta hta +application/http +application/hyperstudio +application/iges +application/index +application/index.cmd +application/index.obj +application/index.response +application/index.vnd +application/iotp +application/ipp +application/isup +application/java-archive jar +application/java-serialized-object ser +application/java-vm class +application/mac-binhex40 hqx +application/mac-compactpro cpt +application/macwriteii +application/marc +application/mathematica nb +application/mathematica-old +application/msaccess mdb +application/msword doc dot +application/news-message-id +application/news-transmission +application/ocsp-request +application/ocsp-response +application/octet-stream bin +application/oda oda +application/ogg ogg +application/parityfec +application/pdf pdf +application/pgp-encrypted +application/pgp-keys key +application/pgp-signature pgp +application/pics-rules prf +application/pkcs10 +application/pkcs7-mime +application/pkcs7-signature +application/pkix-cert +application/pkix-crl +application/pkixcmp +application/policy+xml +application/postscript ps ai eps +application/prs.alvestrand.titrax-sheet +application/prs.cww +application/prs.nprend +application/qsig +application/rar rar +application/rdf+xml rdf +application/remote-printing +application/riscos +application/rss+xml rss +application/rtf +application/sdp +application/set-payment +application/set-payment-initiation +application/set-registration +application/set-registration-initiation +application/sgml +application/sgml-open-catalog +application/sieve +application/slate +application/smil smi smil +application/timestamp-query +application/timestamp-reply +application/vemmi +application/whoispp-query +application/whoispp-response +application/wita +application/wordperfect wpd +application/wordperfect5.1 wp5 +application/x400-bp +application/xhtml+xml xhtml xht +application/xml xml xsl xslt jrxml +application/xml-dtd +application/xml-external-parsed-entity +application/zip zip +application/vnd.3M.Post-it-Notes +application/vnd.accpac.simply.aso +application/vnd.accpac.simply.imp +application/vnd.acucobol +application/vnd.aether.imp +application/vnd.anser-web-certificate-issue-initiation +application/vnd.anser-web-funds-transfer-initiation +application/vnd.audiograph +application/vnd.bmi +application/vnd.businessobjects +application/vnd.canon-cpdl +application/vnd.canon-lips +application/vnd.cinderella cdy +application/vnd.claymore +application/vnd.commerce-battelle +application/vnd.commonspace +application/vnd.comsocaller +application/vnd.contact.cmsg +application/vnd.cosmocaller +application/vnd.ctc-posml +application/vnd.cups-postscript +application/vnd.cups-raster +application/vnd.cups-raw +application/vnd.cybank +application/vnd.dna +application/vnd.dpgraph +application/vnd.dxr +application/vnd.ecdis-update +application/vnd.ecowin.chart +application/vnd.ecowin.filerequest +application/vnd.ecowin.fileupdate +application/vnd.ecowin.series +application/vnd.ecowin.seriesrequest +application/vnd.ecowin.seriesupdate +application/vnd.enliven +application/vnd.epson.esf +application/vnd.epson.msf +application/vnd.epson.quickanime +application/vnd.epson.salt +application/vnd.epson.ssf +application/vnd.ericsson.quickcall +application/vnd.eudora.data +application/vnd.fdf +application/vnd.ffsns +application/vnd.flographit +application/vnd.framemaker +application/vnd.fsc.weblaunch +application/vnd.fujitsu.oasys +application/vnd.fujitsu.oasys2 +application/vnd.fujitsu.oasys3 +application/vnd.fujitsu.oasysgp +application/vnd.fujitsu.oasysprs +application/vnd.fujixerox.ddd +application/vnd.fujixerox.docuworks +application/vnd.fujixerox.docuworks.binder +application/vnd.fut-misnet +application/vnd.grafeq +application/vnd.groove-account +application/vnd.groove-identity-message +application/vnd.groove-injector +application/vnd.groove-tool-message +application/vnd.groove-tool-template +application/vnd.groove-vcard +application/vnd.hhe.lesson-player +application/vnd.hp-HPGL +application/vnd.hp-PCL +application/vnd.hp-PCLXL +application/vnd.hp-hpid +application/vnd.hp-hps +application/vnd.httphone +application/vnd.hzn-3d-crossword +application/vnd.ibm.MiniPay +application/vnd.ibm.afplinedata +application/vnd.ibm.modcap +application/vnd.informix-visionary +application/vnd.intercon.formnet +application/vnd.intertrust.digibox +application/vnd.intertrust.nncp +application/vnd.intu.qbo +application/vnd.intu.qfx +application/vnd.irepository.package+xml +application/vnd.is-xpr +application/vnd.japannet-directory-service +application/vnd.japannet-jpnstore-wakeup +application/vnd.japannet-payment-wakeup +application/vnd.japannet-registration +application/vnd.japannet-registration-wakeup +application/vnd.japannet-setstore-wakeup +application/vnd.japannet-verification +application/vnd.japannet-verification-wakeup +application/vnd.koan +application/vnd.lotus-1-2-3 +application/vnd.lotus-approach +application/vnd.lotus-freelance +application/vnd.lotus-notes +application/vnd.lotus-organizer +application/vnd.lotus-screencam +application/vnd.lotus-wordpro +application/vnd.mcd +application/vnd.mediastation.cdkey +application/vnd.meridian-slingshot +application/vnd.mif +application/vnd.minisoft-hp3000-save +application/vnd.mitsubishi.misty-guard.trustweb +application/vnd.mobius.daf +application/vnd.mobius.dis +application/vnd.mobius.msl +application/vnd.mobius.plc +application/vnd.mobius.txf +application/vnd.motorola.flexsuite +application/vnd.motorola.flexsuite.adsi +application/vnd.motorola.flexsuite.fis +application/vnd.motorola.flexsuite.gotap +application/vnd.motorola.flexsuite.kmr +application/vnd.motorola.flexsuite.ttc +application/vnd.motorola.flexsuite.wem +application/vnd.mozilla.xul+xml xul +application/vnd.ms-artgalry +application/vnd.ms-asf +application/vnd.ms-excel xls xlb xlt +application/vnd.ms-lrm +application/vnd.ms-pki.seccat cat +application/vnd.ms-pki.stl stl +application/vnd.ms-powerpoint ppt pps +application/vnd.ms-project +application/vnd.ms-tnef +application/vnd.ms-works +application/vnd.mseq +application/vnd.msign +application/vnd.music-niff +application/vnd.musician +application/vnd.netfpx +application/vnd.noblenet-directory +application/vnd.noblenet-sealer +application/vnd.noblenet-web +application/vnd.novadigm.EDM +application/vnd.novadigm.EDX +application/vnd.novadigm.EXT +application/vnd.oasis.opendocument.chart odc +application/vnd.oasis.opendocument.database odb +application/vnd.oasis.opendocument.formula odf +application/vnd.oasis.opendocument.graphics odg +application/vnd.oasis.opendocument.graphics-template otg +application/vnd.oasis.opendocument.image odi +application/vnd.oasis.opendocument.presentation odp +application/vnd.oasis.opendocument.presentation-template otp +application/vnd.oasis.opendocument.spreadsheet ods +application/vnd.oasis.opendocument.spreadsheet-template ots +application/vnd.oasis.opendocument.text odt +application/vnd.oasis.opendocument.text-master odm +application/vnd.oasis.opendocument.text-template ott +application/vnd.oasis.opendocument.text-web oth +application/vnd.osa.netdeploy +application/vnd.palm +application/vnd.pg.format +application/vnd.pg.osasli +application/vnd.powerbuilder6 +application/vnd.powerbuilder6-s +application/vnd.powerbuilder7 +application/vnd.powerbuilder7-s +application/vnd.powerbuilder75 +application/vnd.powerbuilder75-s +application/vnd.previewsystems.box +application/vnd.publishare-delta-tree +application/vnd.pvi.ptid1 +application/vnd.pwg-xhtml-print+xml +application/vnd.rapid +application/vnd.rim.cod cod +application/vnd.s3sms +application/vnd.seemail +application/vnd.shana.informed.formdata +application/vnd.shana.informed.formtemplate +application/vnd.shana.informed.interchange +application/vnd.shana.informed.package +application/vnd.smaf mmf +application/vnd.sss-cod +application/vnd.sss-dtf +application/vnd.sss-ntf +application/vnd.stardivision.calc sdc +application/vnd.stardivision.draw sda +application/vnd.stardivision.impress sdd sdp +application/vnd.stardivision.math smf +application/vnd.stardivision.writer sdw vor +application/vnd.stardivision.writer-global sgl +application/vnd.street-stream +application/vnd.sun.xml.calc sxc +application/vnd.sun.xml.calc.template stc +application/vnd.sun.xml.draw sxd +application/vnd.sun.xml.draw.template std +application/vnd.sun.xml.impress sxi +application/vnd.sun.xml.impress.template sti +application/vnd.sun.xml.math sxm +application/vnd.sun.xml.writer sxw +application/vnd.sun.xml.writer.global sxg +application/vnd.sun.xml.writer.template stw +application/vnd.svd +application/vnd.swiftview-ics +application/vnd.symbian.install sis +application/vnd.triscape.mxs +application/vnd.trueapp +application/vnd.truedoc +application/vnd.tve-trigger +application/vnd.ufdl +application/vnd.uplanet.alert +application/vnd.uplanet.alert-wbxml +application/vnd.uplanet.bearer-choice +application/vnd.uplanet.bearer-choice-wbxml +application/vnd.uplanet.cacheop +application/vnd.uplanet.cacheop-wbxml +application/vnd.uplanet.channel +application/vnd.uplanet.channel-wbxml +application/vnd.uplanet.list +application/vnd.uplanet.list-wbxml +application/vnd.uplanet.listcmd +application/vnd.uplanet.listcmd-wbxml +application/vnd.uplanet.signal +application/vnd.vcx +application/vnd.vectorworks +application/vnd.vidsoft.vidconference +application/vnd.visio vsd +application/vnd.vividence.scriptfile +application/vnd.wap.sic +application/vnd.wap.slc +application/vnd.wap.wbxml wbxml +application/vnd.wap.wmlc wmlc +application/vnd.wap.wmlscriptc wmlsc +application/vnd.webturbo +application/vnd.wrq-hp3000-labelled +application/vnd.wso2.bpel+xml bpel +application/vnd.wso2.bpmn+xml bpmn +application/vnd.wso2.endpoint +application/vnd.wso2.governance-archive gar +application/vnd.wso2-hyperlink +application/vnd.wso2.registry-ext-type+xml rxt +application/vnd.wso2-service+xml +application/vnd.wso2.xpdl+xml xpdl +application/vnd.wt.stf +application/vnd.xara +application/vnd.xfdl +application/vnd.yellowriver-custom-menu +application/x-123 wk +application/x-abiword abw +application/x-apple-diskimage dmg +application/x-bcpio bcpio +application/x-bittorrent torrent +application/x-cdf cdf +application/x-cdlink vcd +application/x-chess-pgn pgn +application/x-core +application/x-cpio cpio +application/x-csh csh +application/x-debian-package deb udeb +application/x-director dcr dir dxr +application/x-dms dms +application/x-doom wad +application/x-dvi dvi +application/x-executable +application/x-flac flac +application/x-font pfa pfb gsf pcf pcf.Z +application/x-freemind mm +application/x-futuresplash spl +application/x-gnumeric gnumeric +application/x-go-sgf sgf +application/x-graphing-calculator gcf +application/x-gtar gtar tgz taz +application/x-hdf hdf +application/x-httpd-php phtml pht php +application/x-httpd-php-source phps +application/x-httpd-php3 php3 +application/x-httpd-php3-preprocessed php3p +application/x-httpd-php4 php4 +application/x-httpd-eruby rhtml +application/x-ica ica +application/x-internet-signup ins isp +application/x-iphone iii +application/x-iso9660-image iso +application/x-java-applet +application/x-java-bean +application/x-java-jnlp-file jnlp +application/x-javascript js +application/x-jmol jmz +application/x-kchart chrt +application/x-kdelnk +application/x-killustrator kil +application/x-koan skp skd skt skm +application/x-kpresenter kpr kpt +application/x-kspread ksp +application/x-kword kwd kwt +application/x-latex latex +application/x-lha lha +application/x-lzh lzh +application/x-lzx lzx +application/x-maker frm maker frame fm fb book fbdoc +application/x-mif mif +application/x-ms-wmd wmd +application/x-ms-wmz wmz +application/x-msdos-program com exe bat dll +application/x-msi msi +application/x-netcdf nc +application/x-ns-proxy-autoconfig pac +application/x-nwc nwc +application/x-object o +application/x-oz-application oza +application/x-pkcs7-certreqresp p7r +application/x-pkcs7-crl crl +application/x-python-code pyc pyo +application/x-quicktimeplayer qtl +application/x-redhat-package-manager rpm +application/x-rx +application/x-sh sh +application/x-shar shar +application/x-shellscript +application/x-shockwave-flash swf swfl +application/x-stuffit sit +application/x-sv4cpio sv4cpio +application/x-sv4crc sv4crc +application/x-tar tar +application/x-tcl tcl +application/x-tex-gf gf +application/x-tex-pk pk +application/x-texinfo texinfo texi +application/x-trash ~ % bak old sik +application/x-troff t tr roff +application/x-troff-man man +application/x-troff-me me +application/x-troff-ms ms +application/x-ustar ustar +application/x-videolan +application/x-wais-source src +application/x-wingz wz +application/x-x509-ca-cert crt +application/x-xcf xcf +application/x-xfig fig +application/x-xpinstall xpi +application/x-xsd+xml xsd + +audio/32kadpcm +audio/basic au snd +audio/g.722.1 +audio/l16 +audio/midi mid midi kar +audio/mp4a-latm +audio/mpa-robust +audio/mpeg mpga mpega mp2 mp3 m4a +audio/mpegurl m3u +audio/parityfec +audio/prs.sid sid +audio/telephone-event +audio/tone +audio/vnd.cisco.nse +audio/vnd.cns.anp1 +audio/vnd.cns.inf1 +audio/vnd.digital-winds +audio/vnd.everad.plj +audio/vnd.lucent.voice +audio/vnd.nortel.vbk +audio/vnd.nuera.ecelp4800 +audio/vnd.nuera.ecelp7470 +audio/vnd.nuera.ecelp9600 +audio/vnd.octel.sbc +audio/vnd.qcelp +audio/vnd.rhetorex.32kadpcm +audio/vnd.vmx.cvsd +audio/x-aiff aif aiff aifc +audio/x-gsm gsm +audio/x-mpegurl m3u +audio/x-ms-wma wma +audio/x-ms-wax wax +audio/x-pn-realaudio-plugin +audio/x-pn-realaudio ra rm ram +audio/x-realaudio ra +audio/x-scpls pls +audio/x-sd2 sd2 +audio/x-wav wav + +chemical/x-alchemy alc +chemical/x-cache cac cache +chemical/x-cache-csf csf +chemical/x-cactvs-binary cbin cascii ctab +chemical/x-cdx cdx +chemical/x-cerius cer +chemical/x-chem3d c3d +chemical/x-chemdraw chm +chemical/x-cif cif +chemical/x-cmdf cmdf +chemical/x-cml cml +chemical/x-compass cpa +chemical/x-crossfire bsd +chemical/x-csml csml csm +chemical/x-ctx ctx +chemical/x-cxf cxf cef +#chemical/x-daylight-smiles smi +chemical/x-embl-dl-nucleotide emb embl +chemical/x-galactic-spc spc +chemical/x-gamess-input inp gam gamin +chemical/x-gaussian-checkpoint fch fchk +chemical/x-gaussian-cube cub +chemical/x-gaussian-input gau gjc gjf +chemical/x-gaussian-log gal +chemical/x-gcg8-sequence gcg +chemical/x-genbank gen +chemical/x-hin hin +chemical/x-isostar istr ist +chemical/x-jcamp-dx jdx dx +chemical/x-kinemage kin +chemical/x-macmolecule mcm +chemical/x-macromodel-input mmd mmod +chemical/x-mdl-molfile mol +chemical/x-mdl-rdfile rd +chemical/x-mdl-rxnfile rxn +chemical/x-mdl-sdfile sd sdf +chemical/x-mdl-tgf tgf +#chemical/x-mif mif +chemical/x-mmcif mcif +chemical/x-mol2 mol2 +chemical/x-molconn-Z b +chemical/x-mopac-graph gpt +chemical/x-mopac-input mop mopcrt mpc dat zmt +chemical/x-mopac-out moo +chemical/x-mopac-vib mvb +chemical/x-ncbi-asn1 asn +chemical/x-ncbi-asn1-ascii prt ent +chemical/x-ncbi-asn1-binary val aso +chemical/x-ncbi-asn1-spec asn +chemical/x-pdb pdb ent +chemical/x-rosdal ros +chemical/x-swissprot sw +chemical/x-vamas-iso14976 vms +chemical/x-vmd vmd +chemical/x-xtel xtel +chemical/x-xyz xyz + +image/cgm +image/g3fax +image/gif gif +image/ief ief +image/jpeg jpeg jpg jpe +image/naplps +image/pcx pcx +image/png png +image/prs.btif +image/prs.pti +image/svg+xml svg svgz +image/tiff tiff tif +image/vnd.cns.inf2 +image/vnd.djvu djvu djv +image/vnd.dwg +image/vnd.dxf +image/vnd.fastbidsheet +image/vnd.fpx +image/vnd.fst +image/vnd.fujixerox.edmics-mmr +image/vnd.fujixerox.edmics-rlc +image/vnd.mix +image/vnd.net-fpx +image/vnd.svf +image/vnd.wap.wbmp wbmp +image/vnd.xiff +image/x-cmu-raster ras +image/x-coreldraw cdr +image/x-coreldrawpattern pat +image/x-coreldrawtemplate cdt +image/x-corelphotopaint cpt +image/x-icon ico +image/x-jg art +image/x-jng jng +image/x-ms-bmp bmp +image/x-photoshop psd +image/x-portable-anymap pnm +image/x-portable-bitmap pbm +image/x-portable-graymap pgm +image/x-portable-pixmap ppm +image/x-rgb rgb +image/x-xbitmap xbm +image/x-xpixmap xpm +image/x-xwindowdump xwd + +inode/chardevice +inode/blockdevice +inode/directory-locked +inode/directory +inode/fifo +inode/socket + +message/delivery-status +message/disposition-notification +message/external-body +message/http +message/s-http +message/news +message/partial +message/rfc822 + +model/iges igs iges +model/mesh msh mesh silo +model/vnd.dwf +model/vnd.flatland.3dml +model/vnd.gdl +model/vnd.gs-gdl +model/vnd.gtw +model/vnd.mts +model/vnd.vtu +model/vrml wrl vrml + +multipart/alternative +multipart/appledouble +multipart/byteranges +multipart/digest +multipart/encrypted +multipart/form-data +multipart/header-set +multipart/mixed +multipart/parallel +multipart/related +multipart/report +multipart/signed +multipart/voice-message + +text/calendar ics icz +text/comma-separated-values csv +text/css css +text/directory +text/english +text/enriched +text/h323 323 +text/html html htm shtml +text/iuls uls +text/mathml mml +text/parityfec +text/plain asc txt text diff pot sql +text/prs.lines.tag +text/rfc822-headers +text/richtext rtx +text/rtf rtf +text/scriptlet sct wsc +text/t140 +text/texmacs tm ts +text/tab-separated-values tsv +text/uri-list +text/vnd.abc +text/vnd.curl +text/vnd.DMClientScript +text/vnd.flatland.3dml +text/vnd.fly +text/vnd.fmi.flexstor +text/vnd.in3d.3dml +text/vnd.in3d.spot +text/vnd.IPTC.NewsML +text/vnd.IPTC.NITF +text/vnd.latex-z +text/vnd.motorola.reflex +text/vnd.ms-mediapackage +text/vnd.sun.j2me.app-descriptor jad +text/vnd.wap.si +text/vnd.wap.sl +text/vnd.wap.wml wml +text/vnd.wap.wmlscript wmls +text/x-bibtex bib +text/x-boo boo +text/x-c++hdr h++ hpp hxx hh +text/x-c++src c++ cpp cxx cc +text/x-chdr h +text/x-component htc +text/x-crontab +text/x-csh csh +text/x-csrc c +text/x-dsrc d +text/x-haskell hs +text/x-java java +text/x-literate-haskell lhs +text/x-makefile +text/x-moc moc +text/x-pascal p pas +text/x-pcs-gcd gcd +text/x-perl pl pm +text/x-python py +text/x-server-parsed-html +text/x-setext etx +text/x-sh sh +text/x-tcl tcl tk +text/x-tex tex ltx sty cls +text/x-vcalendar vcs +text/x-vcard vcf + +video/dl dl +video/dv dif dv +video/fli fli +video/gl gl +video/mpeg mpeg mpg mpe +video/mp4 mp4 +video/quicktime qt mov +video/mp4v-es +video/parityfec +video/pointer +video/vnd.fvt +video/vnd.motorola.video +video/vnd.motorola.videop +video/vnd.mpegurl mxu +video/vnd.mts +video/vnd.nokia.interleaved-multimedia +video/vnd.vivo +video/x-la-asf lsf lsx +video/x-mng mng +video/x-ms-asf asf asx +video/x-ms-wm wm +video/x-ms-wmv wmv +video/x-ms-wmx wmx +video/x-ms-wvx wvx +video/x-msvideo avi +video/x-sgi-movie movie + +x-conference/x-cooltalk ice + +x-world/x-vrml vrm vrml wrl diff --git a/src/test/resources/carbon-home/repository/conf/etc/osgi-debug.options b/src/test/resources/carbon-home/repository/conf/etc/osgi-debug.options new file mode 100644 index 000000000..32ffd8739 --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/etc/osgi-debug.options @@ -0,0 +1,95 @@ +#### Debugging options for org.eclipse.osgi + +# Turn on general debugging for org.eclipse.osgi +org.eclipse.osgi/debug=true +# Prints out class loading debug information +org.eclipse.osgi/debug/loader=false +# Prints out event (FrameworkEvent/BundleEvent/ServiceEvent) and listener debug information +org.eclipse.osgi/debug/events=false +# Prints out OSGi service debug information (registration/getting/ungetting etc.) +org.eclipse.osgi/debug/services=false +# Prints out bundle manifest parsing debug information +org.eclipse.osgi/debug/manifest=false +# Prints out LDAP filter debug information +org.eclipse.osgi/debug/filter=false +# Prints out security (PermissionAdmin service) debug information +org.eclipse.osgi/debug/security=false +# Prints out start level service debug information +org.eclipse.osgi/debug/startlevel=true +# Prints out package admin service debug information +org.eclipse.osgi/debug/packageadmin=false +# Prints out timing information for bundle activation +org.eclipse.osgi/debug/bundleTime=false +# Debug the loading of message bundles +org.eclipse.osgi/debug/messageBundles=false + +# Eclipse adaptor options +org.eclipse.osgi/eclipseadaptor/debug = false +org.eclipse.osgi/eclipseadaptor/debug/location = false +org.eclipse.osgi/eclipseadaptor/debug/platformadmin=false +org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver=false +org.eclipse.osgi/eclipseadaptor/converter/debug = false + +### OSGi resolver options +# Turns on debugging for the resolver +org.eclipse.osgi/resolver/debug = false +# Prints out wiring information after the resolver has completed the resolve process +org.eclipse.osgi/resolver/wiring = false +# Prints out Import-Package information +org.eclipse.osgi/resolver/imports = false +# Prints out Require-Bundle information +org.eclipse.osgi/resolver/requires = false +# Prints out package grouping information form the "uses" clause +org.eclipse.osgi/resolver/grouping = false +# Prints out cycle information +org.eclipse.osgi/resolver/cycles = false +# Prints out Eclipse-GenericRequire information +org.eclipse.osgi/resolver/generics = false + +#### Profile settings +org.eclipse.osgi/profile/startup = false +org.eclipse.osgi/profile/benchmark = false +org.eclipse.osgi/profile/debug = true + +# Override the default implemenation +org.eclipse.osgi/profile/impl = org.eclipse.osgi.internal.profile.DefaultProfileLogger + +# Append all profile messages to the filename specified +org.eclipse.osgi/defaultprofile/logfilename = + +# Output all profile log messages synchronously to the jvm console. +# By default, all log messages are cached until the log buffer is +# requested. +org.eclipse.osgi/defaultprofile/logsynchronously = false + +# Specify the size of the default profile implementation log buffer. +org.eclipse.osgi/defaultprofile/buffersize = 256 + +#### Monitoring settings +# monitor class loading +org.eclipse.osgi/monitor/classes=false + +# monitor bundle activation +org.eclipse.osgi/monitor/activation=false + +# monitor resource bundle (*.properties) loading +org.eclipse.osgi/monitor/resources=false + + +#### Trace settings +# trace class loading - snapshot the execution stack when a class is loaded +org.eclipse.osgi/trace/classLoading=false + +# trace location - file in which execution traces are written +org.eclipse.osgi/trace/filename=runtime.traces + +# trace filters - Java properties file defining which classes should +# be traced (if trace/classLoading is true) +# File format: +# plugins= +# packages= +# Note that there may be many 'plugins' and 'packages' lines in one file. +org.eclipse.osgi/trace/filters=trace.properties + +# trace bundle activation - snapshot the execution stack when a bundle is activated +org.eclipse.osgi/trace/activation=false diff --git a/src/test/resources/carbon-home/repository/conf/log4j.properties b/src/test/resources/carbon-home/repository/conf/log4j.properties new file mode 100644 index 000000000..9cff0ddf7 --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/log4j.properties @@ -0,0 +1,165 @@ +# +# Copyright 2009 WSO2, Inc. (http://wso2.com) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# +# This is the log4j configuration file used by WSO2 Carbon +# +# IMPORTANT : Please do not remove or change the names of any +# of the Appenders defined here. The layout pattern & log file +# can be changed using the WSO2 Carbon Management Console, and those +# settings will override the settings in this file. +# + +log4j.rootLogger=INFO, CARBON_CONSOLE, CARBON_LOGFILE, CARBON_MEMORY, CARBON_SYS_LOG + +log4j.logger.AUDIT_LOG=INFO, AUDIT_LOGFILE +log4j.logger.org.apache.axis2.wsdl.codegen.writer.PrettyPrinter=ERROR, CARBON_LOGFILE, CARBON_MEMORY +log4j.logger.org.apache.axis2.clustering=INFO, CARBON_CONSOLE, CARBON_LOGFILE +log4j.logger.org.apache=INFO, CARBON_LOGFILE, CARBON_MEMORY +log4j.logger.org.apache.catalina=WARN +log4j.logger.org.apache.tomcat=WARN +log4j.logger.org.wso2.carbon.apacheds=WARN +log4j.logger.org.apache.directory.server.ldap=ERROR +log4j.logger.org.apache.directory.server.core.event=WARN +log4j.logger.com.atomikos=INFO,ATOMIKOS +log4j.logger.org.quartz=WARN +log4j.logger.org.apache.jackrabbit.webdav=WARN +log4j.logger.org.apache.juddi=ERROR +log4j.logger.org.apache.commons.digester.Digester=WARN +log4j.logger.org.apache.jasper.compiler.TldLocationsCache=WARN +log4j.logger.org.apache.qpid=WARN +log4j.logger.org.apache.qpid.server.Main=INFO +log4j.logger.qpid.message=WARN +log4j.logger.qpid.message.broker.listening=INFO +log4j.logger.org.apache.tiles=WARN +log4j.logger.org.apache.commons.httpclient=ERROR +log4j.logger.org.apache.coyote=WARN +log4j.logger.org.apache.solr=ERROR +log4j.logger.me.prettyprint.cassandra.hector.TimingLogger=ERROR +log4j.logger.org.wso2=INFO +log4j.logger.org.apache.axis2.enterprise=FATAL, CARBON_LOGFILE, CARBON_MEMORY +log4j.logger.org.opensaml.xml=WARN, CARBON_LOGFILE, CARBON_MEMORY +log4j.logger.org.apache.directory.shared.ldap=WARN, CARBON_LOGFILE, CARBON_MEMORY +log4j.logger.org.apache.directory.server.ldap.handlers=WARN, CARBON_LOGFILE, CARBON_MEMORY +#Following are to remove false error messages from startup (IS) +log4j.logger.org.apache.directory.shared.ldap.entry.DefaultServerAttribute=FATAL, CARBON_LOGFILE, CARBON_MEMORY +log4j.logger.org.apache.directory.server.core.DefaultDirectoryService=ERROR, CARBON_LOGFILE, CARBON_MEMORY +log4j.logger.org.apache.directory.shared.ldap.ldif.LdifReader=ERROR, CARBON_LOGFILE, CARBON_MEMORY +log4j.logger.org.apache.directory.server.ldap.LdapProtocolHandler=ERROR, CARBON_LOGFILE, CARBON_MEMORY +log4j.logger.org.apache.directory.server.core=ERROR, CARBON_LOGFILE, CARBON_MEMORY +log4j.logger.org.apache.directory.server.ldap.LdapSession=ERROR, CARBON_LOGFILE, CARBON_MEMORY +#Hive Related Log configurations +log4j.logger.DataNucleus=ERROR +log4j.logger.Datastore=ERROR +log4j.logger.Datastore.Schema=ERROR +log4j.logger.JPOX.Datastore=ERROR +log4j.logger.JPOX.Plugin=ERROR +log4j.logger.JPOX.MetaData=ERROR +log4j.logger.JPOX.Query=ERROR +log4j.logger.JPOX.General=ERROR +log4j.logger.JPOX.Enhancer=ERROR +log4j.logger.org.apache.hadoop.hive=WARN +log4j.logger.hive=WARN +log4j.logger.ExecMapper=WARN +log4j.logger.ExecReducer=WARN +log4j.logger.net.sf.ehcache.config.ConfigurationFactory=ERROR + +log4j.logger.trace.messages=TRACE,CARBON_TRACE_LOGFILE + +log4j.additivity.org.apache.axis2.clustering=false +log4j.additivity.com.atomikos=false +log4j.additivity.org.apache=false + +# CARBON_CONSOLE is set to be a ConsoleAppender using a PatternLayout. +log4j.appender.CARBON_CONSOLE=org.wso2.carbon.utils.logging.appenders.CarbonConsoleAppender +log4j.appender.CARBON_CONSOLE.layout=org.wso2.carbon.utils.logging.TenantAwarePatternLayout +# ConversionPattern will be overridden by the configuration setting in the DB +log4j.appender.CARBON_CONSOLE.layout.ConversionPattern=[%d] %P%5p {%c} - %x %m%n +log4j.appender.CARBON_CONSOLE.layout.TenantPattern=%U%@%D[%T] +log4j.appender.CARBON_CONSOLE.threshold=DEBUG + +# CARBON_MEMORY is set to be a MemoryAppender using a PatternLayout. +log4j.appender.CARBON_MEMORY=org.wso2.carbon.utils.logging.appenders.MemoryAppender +log4j.appender.CARBON_MEMORY.layout=org.apache.log4j.PatternLayout +log4j.appender.CARBON_MEMORY.bufferSize=200 +# ConversionPattern will be overridden by the configuration setting in the DB +#log4j.appender.CARBON_MEMORY.layout.ConversionPattern=[%d] %5p - %x %m {%c}%n +log4j.appender.CARBON_MEMORY.layout.ConversionPattern=[%d] %5p {%c} - %x %m %n +log4j.appender.CARBON_MEMORY.threshold=DEBUG + + +# CARBON_LOGFILE is set to be a DailyRollingFileAppender using a PatternLayout. +log4j.appender.CARBON_LOGFILE=org.wso2.carbon.utils.logging.appenders.CarbonDailyRollingFileAppender +# Log file will be overridden by the configuration setting in the DB +# This path should be relative to WSO2 Carbon Home +log4j.appender.CARBON_LOGFILE.File=${carbon.home}/repository/logs/${instance.log}/wso2carbon${instance.log}.log +log4j.appender.CARBON_LOGFILE.Append=true +log4j.appender.CARBON_LOGFILE.layout=org.wso2.carbon.utils.logging.TenantAwarePatternLayout +# ConversionPattern will be overridden by the configuration setting in the DB +log4j.appender.CARBON_LOGFILE.layout.ConversionPattern=TID: [%T] [%S] [%d] %P%5p {%c} - %x %m %n +log4j.appender.CARBON_LOGFILE.layout.TenantPattern=%U%@%D [%T] [%S] +log4j.appender.CARBON_LOGFILE.threshold=DEBUG + +log4j.appender.CARBON_SYS_LOG = org.apache.log4j.net.SyslogAppender +log4j.appender.CARBON_SYS_LOG.layout=org.apache.log4j.PatternLayout +log4j.appender.CARBON_SYS_LOG.layout.ConversionPattern=[%d] %5p {%c} - %x %m %n +log4j.appender.CARBON_SYS_LOG.SyslogHost=localhost +log4j.appender.CARBON_SYS_LOG.Facility=USER +log4j.appender.CARBON_SYS_LOG.threshold=DEBUG + +# LOGEVENT is set to be a LogEventAppender using a PatternLayout to send logs to LOGEVENT +log4j.appender.LOGEVENT=org.wso2.carbon.logging.service.appender.LogEventAppender +log4j.appender.LOGEVENT.url=tcp://10.100.3.103:7611 +log4j.appender.LOGEVENT.layout=org.wso2.carbon.utils.logging.TenantAwarePatternLayout +log4j.appender.LOGEVENT.columnList=%T,%S,%A,%d,%c,%p,%m,%H,%I,%Stacktrace +log4j.appender.LOGEVENT.userName=admin +log4j.appender.LOGEVENT.password=admin +#log4j.appender.LOGEVENT.password=secretAlias:Log4j.Appender.LOGEVENT.Password + +# Appender config to CARBON_TRACE_LOGFILE +log4j.appender.CARBON_TRACE_LOGFILE=org.apache.log4j.DailyRollingFileAppender +log4j.appender.CARBON_TRACE_LOGFILE.File=${carbon.home}/repository/logs/${instance.log}/wso2carbon-trace-messages${instance.log}.log +log4j.appender.CARBON_TRACE_LOGFILE.Append=true +log4j.appender.CARBON_TRACE_LOGFILE.layout=org.wso2.carbon.utils.logging.TenantAwarePatternLayout +log4j.appender.CARBON_TRACE_LOGFILE.layout.ConversionPattern=[%d] %P%5p {%c} - %x %m %n +log4j.appender.CARBON_TRACE_LOGFILE.layout.TenantPattern=%U%@%D [%T] [%S] +log4j.appender.CARBON_TRACE_LOGFILE.threshold=TRACE +log4j.additivity.trace.messages=false + +# Appender config to AUDIT_LOGFILE +log4j.appender.AUDIT_LOGFILE=org.apache.log4j.DailyRollingFileAppender +log4j.appender.AUDIT_LOGFILE.File=${carbon.home}/repository/logs/audit.log +log4j.appender.AUDIT_LOGFILE.Append=true +log4j.appender.AUDIT_LOGFILE.layout=org.wso2.carbon.utils.logging.TenantAwarePatternLayout +log4j.appender.AUDIT_LOGFILE.layout.ConversionPattern=[%d] %P%5p {%c}- %x %m %n +log4j.appender.AUDIT_LOGFILE.layout.TenantPattern=%U%@%D [%T] [%S] +log4j.appender.AUDIT_LOGFILE.threshold=INFO +log4j.additivity.AUDIT_LOG=false + +# Appender config to send Atomikos transaction logs to new log file tm.out. +log4j.appender.ATOMIKOS = org.apache.log4j.RollingFileAppender +log4j.appender.ATOMIKOS.File = repository/logs/tm.out +log4j.appender.ATOMIKOS.Append = true +log4j.appender.ATOMIKOS.layout = org.apache.log4j.PatternLayout +log4j.appender.ATOMIKOS.layout.ConversionPattern=%p %t %c - %m%n + +# This file is used to override the default logger settings, and is used to remove unwanted logs from Shindig appearing on the console. + +# Specification of Handler used by Console Logger +handlers=java.util.logging.ConsoleHandler + +# Replacing default INFO level with SEVERE +java.util.logging.ConsoleHandler.level=SEVERE diff --git a/src/test/resources/carbon-home/repository/conf/registry.xml b/src/test/resources/carbon-home/repository/conf/registry.xml new file mode 100644 index 000000000..c16502090 --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/registry.xml @@ -0,0 +1,106 @@ + + + + + + + + wso2registry + false + true + / + + + jdbc:h2:./target/databasetest/CARBON_TEST + + org.h2.Driver + 80 + 60000 + 5 + + + + + + + + + + + + false + + + + true + true + true + true + + diff --git a/src/test/resources/carbon-home/repository/conf/security/authenticators.xml b/src/test/resources/carbon-home/repository/conf/security/authenticators.xml new file mode 100644 index 000000000..01cd4c98c --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/security/authenticators.xml @@ -0,0 +1,73 @@ + + + + + + + + + + 5 + + + + + 10 + + /carbon/admin/login.jsp + carbonServer + https://localhost:9443/samlsso + urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/carbon-home/repository/conf/tomcat/carbon/META-INF/context.xml b/src/test/resources/carbon-home/repository/conf/tomcat/carbon/META-INF/context.xml new file mode 100644 index 000000000..04f622e3e --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/tomcat/carbon/META-INF/context.xml @@ -0,0 +1,31 @@ + + + + + + + WEB-INF/web.xml + + + + + + + + + + diff --git a/src/test/resources/carbon-home/repository/conf/tomcat/carbon/WEB-INF/web.xml b/src/test/resources/carbon-home/repository/conf/tomcat/carbon/WEB-INF/web.xml new file mode 100644 index 000000000..52f88eb30 --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/tomcat/carbon/WEB-INF/web.xml @@ -0,0 +1,61 @@ + + + + + + + bridgeservlet + Carbon Bridge Servlet + Carbon Bridge Servlet + org.wso2.carbon.tomcat.ext.servlet.DelegationServlet + + 1 + + + bridgeservlet + /* + + + + bridgeservlet + *.jsp + + + + + CharsetFilter + org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter + + requestEncoding + UTF-8 + + + + + CharsetFilter + /* + + + + 15 + + diff --git a/src/test/resources/carbon-home/repository/conf/tomcat/catalina-server.xml b/src/test/resources/carbon-home/repository/conf/tomcat/catalina-server.xml new file mode 100644 index 000000000..834792930 --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/tomcat/catalina-server.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/carbon-home/repository/conf/tomcat/tomcat-users.xml b/src/test/resources/carbon-home/repository/conf/tomcat/tomcat-users.xml new file mode 100644 index 000000000..7ef7dbb0a --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/tomcat/tomcat-users.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/carbon-home/repository/conf/tomcat/web.xml b/src/test/resources/carbon-home/repository/conf/tomcat/web.xml new file mode 100644 index 000000000..765865b47 --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/tomcat/web.xml @@ -0,0 +1,1220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + org.apache.catalina.servlets.DefaultServlet + + debug + 0 + + + sendfileSize + -1 + + + listings + false + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jsp + org.apache.jasper.servlet.JspServlet + + fork + false + + + xpoweredBy + false + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jsp + *.jsp + + + + jsp + *.jspx + + + + default + / + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 30 + + + + + + + + + + + + abs + audio/x-mpeg + + + ai + application/postscript + + + aif + audio/x-aiff + + + aifc + audio/x-aiff + + + aiff + audio/x-aiff + + + aim + application/x-aim + + + art + image/x-jg + + + asf + video/x-ms-asf + + + asx + video/x-ms-asf + + + au + audio/basic + + + avi + video/x-msvideo + + + avx + video/x-rad-screenplay + + + bcpio + application/x-bcpio + + + bin + application/octet-stream + + + bmp + image/bmp + + + body + text/html + + + cdf + application/x-cdf + + + cer + application/x-x509-ca-cert + + + class + application/java + + + cpio + application/x-cpio + + + csh + application/x-csh + + + css + text/css + + + dib + image/bmp + + + doc + application/msword + + + dtd + application/xml-dtd + + + dv + video/x-dv + + + dvi + application/x-dvi + + + eps + application/postscript + + + etx + text/x-setext + + + exe + application/octet-stream + + + gif + image/gif + + + gtar + application/x-gtar + + + gz + application/x-gzip + + + hdf + application/x-hdf + + + hqx + application/mac-binhex40 + + + htc + text/x-component + + + htm + text/html + + + html + text/html + + + ief + image/ief + + + jad + text/vnd.sun.j2me.app-descriptor + + + jar + application/java-archive + + + java + text/plain + + + jnlp + application/x-java-jnlp-file + + + jpe + image/jpeg + + + jpeg + image/jpeg + + + jpg + image/jpeg + + + js + application/javascript + + + jsf + text/plain + + + jspf + text/plain + + + kar + audio/x-midi + + + latex + application/x-latex + + + m3u + audio/x-mpegurl + + + mac + image/x-macpaint + + + man + application/x-troff-man + + + mathml + application/mathml+xml + + + me + application/x-troff-me + + + mid + audio/x-midi + + + midi + audio/x-midi + + + mif + application/x-mif + + + mov + video/quicktime + + + movie + video/x-sgi-movie + + + mp1 + audio/x-mpeg + + + mp2 + audio/x-mpeg + + + mp3 + audio/x-mpeg + + + mp4 + video/mp4 + + + mpa + audio/x-mpeg + + + mpe + video/mpeg + + + mpeg + video/mpeg + + + mpega + audio/x-mpeg + + + mpg + video/mpeg + + + mpv2 + video/mpeg2 + + + ms + application/x-wais-source + + + nc + application/x-netcdf + + + oda + application/oda + + + + odb + application/vnd.oasis.opendocument.database + + + + odc + application/vnd.oasis.opendocument.chart + + + + odf + application/vnd.oasis.opendocument.formula + + + + odg + application/vnd.oasis.opendocument.graphics + + + + odi + application/vnd.oasis.opendocument.image + + + + odm + application/vnd.oasis.opendocument.text-master + + + + odp + application/vnd.oasis.opendocument.presentation + + + + ods + application/vnd.oasis.opendocument.spreadsheet + + + + odt + application/vnd.oasis.opendocument.text + + + + otg + application/vnd.oasis.opendocument.graphics-template + + + + oth + application/vnd.oasis.opendocument.text-web + + + + otp + application/vnd.oasis.opendocument.presentation-template + + + + ots + application/vnd.oasis.opendocument.spreadsheet-template + + + + ott + application/vnd.oasis.opendocument.text-template + + + + ogx + application/ogg + + + ogv + video/ogg + + + oga + audio/ogg + + + ogg + audio/ogg + + + spx + audio/ogg + + + flac + audio/flac + + + anx + application/annodex + + + axa + audio/annodex + + + axv + video/annodex + + + xspf + application/xspf+xml + + + pbm + image/x-portable-bitmap + + + pct + image/pict + + + pdf + application/pdf + + + pgm + image/x-portable-graymap + + + pic + image/pict + + + pict + image/pict + + + pls + audio/x-scpls + + + png + image/png + + + pnm + image/x-portable-anymap + + + pnt + image/x-macpaint + + + ppm + image/x-portable-pixmap + + + ppt + application/vnd.ms-powerpoint + + + pps + application/vnd.ms-powerpoint + + + ps + application/postscript + + + psd + image/x-photoshop + + + qt + video/quicktime + + + qti + image/x-quicktime + + + qtif + image/x-quicktime + + + ras + image/x-cmu-raster + + + rdf + application/rdf+xml + + + rgb + image/x-rgb + + + rm + application/vnd.rn-realmedia + + + roff + application/x-troff + + + rtf + application/rtf + + + rtx + text/richtext + + + sh + application/x-sh + + + shar + application/x-shar + + + + smf + audio/x-midi + + + sit + application/x-stuffit + + + snd + audio/basic + + + src + application/x-wais-source + + + sv4cpio + application/x-sv4cpio + + + sv4crc + application/x-sv4crc + + + svg + image/svg+xml + + + svgz + image/svg+xml + + + swf + application/x-shockwave-flash + + + t + application/x-troff + + + tar + application/x-tar + + + tcl + application/x-tcl + + + tex + application/x-tex + + + texi + application/x-texinfo + + + texinfo + application/x-texinfo + + + tif + image/tiff + + + tiff + image/tiff + + + tr + application/x-troff + + + tsv + text/tab-separated-values + + + txt + text/plain + + + ulw + audio/basic + + + ustar + application/x-ustar + + + vxml + application/voicexml+xml + + + xbm + image/x-xbitmap + + + xht + application/xhtml+xml + + + xhtml + application/xhtml+xml + + + xls + application/vnd.ms-excel + + + xml + application/xml + + + xpm + image/x-xpixmap + + + xsl + application/xml + + + xslt + application/xslt+xml + + + xul + application/vnd.mozilla.xul+xml + + + xwd + image/x-xwindowdump + + + vsd + application/x-visio + + + wav + audio/x-wav + + + + wbmp + image/vnd.wap.wbmp + + + + wml + text/vnd.wap.wml + + + + wmlc + application/vnd.wap.wmlc + + + + wmls + text/vnd.wap.wmlscript + + + + wmlscriptc + application/vnd.wap.wmlscriptc + + + wmv + video/x-ms-wmv + + + wrl + x-world/x-vrml + + + wspolicy + application/wspolicy+xml + + + Z + application/x-compress + + + z + application/x-compress + + + zip + application/zip + + + + + + + + + + + + + + + + + + index.html + index.htm + index.jsp + + + \ No newline at end of file diff --git a/src/test/resources/carbon-home/repository/conf/user-mgt.xml b/src/test/resources/carbon-home/repository/conf/user-mgt.xml new file mode 100644 index 000000000..7be83118a --- /dev/null +++ b/src/test/resources/carbon-home/repository/conf/user-mgt.xml @@ -0,0 +1,380 @@ + + + + + + true + admin + + admin + admin + + everyone + jdbc/WSO2CarbonDB + + + + + + + org.wso2.carbon.user.core.tenant.JDBCTenantManager + false + 100 + false + default + SHA-256 + true + true + true + false + ^[\S]{5,30}$ + Password length should be between 5 to 30 characters + + ^[\S]{5,30}$ + [a-zA-Z0-9._-|//]{3,30}$ + ^[\S]{3,30}$ + ^[^~!#$;%^*+={}\\|\\\\<>,\'\"]{3,30}$ + ^[\S]{3,30}$ + true + 100 + 100 + false + false + true + , + true + + + + + + + + + + + + + + + + + + + /permission + true + true + + + + + diff --git a/src/test/resources/config/datasource/data-source-config.xml b/src/test/resources/config/datasource/data-source-config.xml new file mode 100644 index 000000000..93253751a --- /dev/null +++ b/src/test/resources/config/datasource/data-source-config.xml @@ -0,0 +1,25 @@ + + + + + jdbc:h2:mem:cdm-test-db;DB_CLOSE_ON_EXIT=FALSE;MVCC=true + org.h2.Driver + wso2carbon + wso2carbon + diff --git a/src/test/resources/log4j.properties b/src/test/resources/log4j.properties new file mode 100644 index 000000000..96c79e944 --- /dev/null +++ b/src/test/resources/log4j.properties @@ -0,0 +1,36 @@ +# +# Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. +# +# WSO2 Inc. licenses this file to you under the Apache License, +# Version 2.0 (the "License"); you may not use this file except +# in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + + +# For the general syntax of property based configuration files see the +# documenation of org.apache.log4j.PropertyConfigurator. + +# The root category uses the appender called A1. Since no priority is +# specified, the root category assumes the default priority for root +# which is DEBUG in log4j. The root category is the only category that +# has a default priority. All other categories need not be assigned a +# priority in which case they inherit their priority from the +# hierarchy. + +#log4j.rootLogger=DEBUG, stdout +log4j.rootLogger=INFO, stdout + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%m%n +#log4j.appender.stdout.layout.ConversionPattern=[%t] %-5p %c %x - %m%n diff --git a/src/test/resources/sql/h2.sql b/src/test/resources/sql/h2.sql new file mode 100644 index 000000000..686d0a6b3 --- /dev/null +++ b/src/test/resources/sql/h2.sql @@ -0,0 +1,531 @@ +CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE ( + ID INT AUTO_INCREMENT NOT NULL, + NAME VARCHAR(300) NULL DEFAULT NULL, + DEVICE_TYPE_META VARCHAR(20000) NULL DEFAULT NULL, + LAST_UPDATED_TIMESTAMP TIMESTAMP NOT NULL, + PROVIDER_TENANT_ID INTEGER DEFAULT 0, + SHARED_WITH_ALL_TENANTS BOOLEAN NOT NULL DEFAULT FALSE, + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_GROUP ( + ID INTEGER AUTO_INCREMENT NOT NULL, + GROUP_NAME VARCHAR(100) DEFAULT NULL, + DESCRIPTION TEXT DEFAULT NULL, + OWNER VARCHAR(45) DEFAULT NULL, + TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_ROLE_GROUP_MAP ( + ID INTEGER AUTO_INCREMENT NOT NULL, + GROUP_ID INTEGER DEFAULT NULL, + ROLE VARCHAR(45) DEFAULT NULL, + TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (ID), + CONSTRAINT fk_DM_ROLE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID) + REFERENCES DM_GROUP (ID) ON DELETE CASCADE ON UPDATE CASCADE +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE ( + ID INTEGER auto_increment NOT NULL, + DESCRIPTION TEXT DEFAULT NULL, + NAME VARCHAR(100) DEFAULT NULL, + DEVICE_TYPE_ID INT(11) DEFAULT NULL, + DEVICE_IDENTIFICATION VARCHAR(300) DEFAULT NULL, + LAST_UPDATED_TIMESTAMP TIMESTAMP NOT NULL, + TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (ID), + CONSTRAINT fk_DM_DEVICE_DM_DEVICE_TYPE2 FOREIGN KEY (DEVICE_TYPE_ID) + REFERENCES DM_DEVICE_TYPE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT uk_DM_DEVICE UNIQUE (NAME, DEVICE_TYPE_ID, DEVICE_IDENTIFICATION, TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_PROPERTIES ( + DEVICE_TYPE_NAME VARCHAR(300) NOT NULL, + DEVICE_IDENTIFICATION VARCHAR(300) NOT NULL, + PROPERTY_NAME VARCHAR(100) DEFAULT 0, + PROPERTY_VALUE VARCHAR(100) DEFAULT NULL, + TENANT_ID VARCHAR(100), + PRIMARY KEY (DEVICE_TYPE_NAME, DEVICE_IDENTIFICATION, PROPERTY_NAME, TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_MAP ( + ID INTEGER AUTO_INCREMENT NOT NULL, + DEVICE_ID INTEGER DEFAULT NULL, + GROUP_ID INTEGER DEFAULT NULL, + TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (ID), + CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_DEVICE2 FOREIGN KEY (DEVICE_ID) + REFERENCES DM_DEVICE (ID) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID) + REFERENCES DM_GROUP (ID) ON DELETE CASCADE ON UPDATE CASCADE +); + +CREATE TABLE IF NOT EXISTS DM_OPERATION ( + ID INTEGER AUTO_INCREMENT NOT NULL, + TYPE VARCHAR(50) NOT NULL, + CREATED_TIMESTAMP TIMESTAMP NOT NULL, + RECEIVED_TIMESTAMP TIMESTAMP NULL, + OPERATION_CODE VARCHAR(1000) NOT NULL, + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_CONFIG_OPERATION ( + OPERATION_ID INTEGER NOT NULL, + OPERATION_CONFIG BLOB DEFAULT NULL, + ENABLED BOOLEAN NOT NULL DEFAULT FALSE, + PRIMARY KEY (OPERATION_ID), + CONSTRAINT fk_dm_operation_config FOREIGN KEY (OPERATION_ID) REFERENCES + DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_COMMAND_OPERATION ( + OPERATION_ID INTEGER NOT NULL, + ENABLED BOOLEAN NOT NULL DEFAULT FALSE, + PRIMARY KEY (OPERATION_ID), + CONSTRAINT fk_dm_operation_command FOREIGN KEY (OPERATION_ID) REFERENCES + DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_POLICY_OPERATION ( + OPERATION_ID INTEGER NOT NULL, + ENABLED INTEGER NOT NULL DEFAULT 0, + OPERATION_DETAILS BLOB DEFAULT NULL, + PRIMARY KEY (OPERATION_ID), + CONSTRAINT fk_dm_operation_policy FOREIGN KEY (OPERATION_ID) REFERENCES + DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_PROFILE_OPERATION ( + OPERATION_ID INTEGER NOT NULL, + ENABLED INTEGER NOT NULL DEFAULT 0, + OPERATION_DETAILS BLOB DEFAULT NULL, + PRIMARY KEY (OPERATION_ID), + CONSTRAINT fk_dm_operation_profile FOREIGN KEY (OPERATION_ID) REFERENCES + DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_ENROLMENT ( + ID INTEGER AUTO_INCREMENT NOT NULL, + DEVICE_ID INTEGER NOT NULL, + OWNER VARCHAR(50) NOT NULL, + OWNERSHIP VARCHAR(45) DEFAULT NULL, + STATUS VARCHAR(50) NULL, + DATE_OF_ENROLMENT TIMESTAMP DEFAULT NULL, + DATE_OF_LAST_UPDATE TIMESTAMP DEFAULT NULL, + TENANT_ID INT NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT fk_dm_device_enrolment FOREIGN KEY (DEVICE_ID) REFERENCES + DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT uk_dm_device_enrolment UNIQUE (DEVICE_ID, OWNER, OWNERSHIP, TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS DM_ENROLMENT_OP_MAPPING ( + ID INTEGER AUTO_INCREMENT NOT NULL, + ENROLMENT_ID INTEGER NOT NULL, + OPERATION_ID INTEGER NOT NULL, + STATUS VARCHAR(50) NULL, + PUSH_NOTIFICATION_STATUS VARCHAR(50) NULL, + CREATED_TIMESTAMP INT NOT NULL, + UPDATED_TIMESTAMP INT NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT fk_dm_device_operation_mapping_device FOREIGN KEY (ENROLMENT_ID) REFERENCES + DM_ENROLMENT (ID) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT fk_dm_device_operation_mapping_operation FOREIGN KEY (OPERATION_ID) REFERENCES + DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_OPERATION_RESPONSE ( + ID INTEGER AUTO_INCREMENT NOT NULL, + ENROLMENT_ID INTEGER NOT NULL, + OPERATION_ID INTEGER NOT NULL, + EN_OP_MAP_ID INTEGER NOT NULL, + OPERATION_RESPONSE LONGBLOB DEFAULT NULL, + RECEIVED_TIMESTAMP TIMESTAMP NULL, + PRIMARY KEY (ID), + CONSTRAINT fk_dm_device_operation_response_enrollment FOREIGN KEY (ENROLMENT_ID) REFERENCES + DM_ENROLMENT (ID) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT fk_dm_device_operation_response_operation FOREIGN KEY (OPERATION_ID) REFERENCES + DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT fk_dm_en_op_map_response FOREIGN KEY (EN_OP_MAP_ID) REFERENCES + DM_ENROLMENT_OP_MAPPING (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); + +-- POLICY RELATED TABLES -- + +CREATE TABLE IF NOT EXISTS DM_PROFILE ( + ID INT NOT NULL AUTO_INCREMENT , + PROFILE_NAME VARCHAR(45) NOT NULL , + TENANT_ID INT NOT NULL , + DEVICE_TYPE VARCHAR(300) NOT NULL , + CREATED_TIME DATETIME NOT NULL , + UPDATED_TIME DATETIME NOT NULL , + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_POLICY ( + ID INT(11) NOT NULL AUTO_INCREMENT , + NAME VARCHAR(45) DEFAULT NULL , + DESCRIPTION VARCHAR(1000) NULL, + TENANT_ID INT(11) NOT NULL , + PROFILE_ID INT(11) NOT NULL , + OWNERSHIP_TYPE VARCHAR(45) NULL, + COMPLIANCE VARCHAR(100) NULL, + PRIORITY INT NOT NULL, + ACTIVE INT(2) NOT NULL, + UPDATED INT(1) NULL, + PRIMARY KEY (ID) , + CONSTRAINT FK_DM_PROFILE_DM_POLICY + FOREIGN KEY (PROFILE_ID ) + REFERENCES DM_PROFILE (ID ) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_POLICY ( + ID INT(11) NOT NULL AUTO_INCREMENT , + DEVICE_ID INT(11) NOT NULL , + ENROLMENT_ID INT(11) NOT NULL, + DEVICE BLOB NOT NULL, + POLICY_ID INT(11) NOT NULL , + PRIMARY KEY (ID) , + CONSTRAINT FK_POLICY_DEVICE_POLICY + FOREIGN KEY (POLICY_ID ) + REFERENCES DM_POLICY (ID ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT FK_DEVICE_DEVICE_POLICY + FOREIGN KEY (DEVICE_ID ) + REFERENCES DM_DEVICE (ID ) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE_POLICY ( + ID INT(11) NOT NULL , + DEVICE_TYPE VARCHAR(300) NOT NULL , + POLICY_ID INT(11) NOT NULL , + PRIMARY KEY (ID) , + CONSTRAINT FK_DEVICE_TYPE_POLICY + FOREIGN KEY (POLICY_ID ) + REFERENCES DM_POLICY (ID ) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_PROFILE_FEATURES ( + ID INT(11) NOT NULL AUTO_INCREMENT, + PROFILE_ID INT(11) NOT NULL, + FEATURE_CODE VARCHAR(100) NOT NULL, + DEVICE_TYPE VARCHAR(300) NOT NULL, + TENANT_ID INT(11) NOT NULL , + CONTENT BLOB NULL DEFAULT NULL, + PRIMARY KEY (ID), + CONSTRAINT FK_DM_PROFILE_DM_POLICY_FEATURES + FOREIGN KEY (PROFILE_ID) + REFERENCES DM_PROFILE (ID) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_ROLE_POLICY ( + ID INT(11) NOT NULL AUTO_INCREMENT , + ROLE_NAME VARCHAR(45) NOT NULL , + POLICY_ID INT(11) NOT NULL , + PRIMARY KEY (ID) , + CONSTRAINT FK_ROLE_POLICY_POLICY + FOREIGN KEY (POLICY_ID ) + REFERENCES DM_POLICY (ID ) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_USER_POLICY ( + ID INT NOT NULL AUTO_INCREMENT , + POLICY_ID INT NOT NULL , + USERNAME VARCHAR(45) NOT NULL , + PRIMARY KEY (ID) , + CONSTRAINT DM_POLICY_USER_POLICY + FOREIGN KEY (POLICY_ID ) + REFERENCES DM_POLICY (ID ) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_POLICY_APPLIED ( + ID INT NOT NULL AUTO_INCREMENT , + DEVICE_ID INT NOT NULL , + ENROLMENT_ID INT(11) NOT NULL, + POLICY_ID INT NOT NULL , + POLICY_CONTENT BLOB NULL , + TENANT_ID INT NOT NULL, + APPLIED TINYINT(1) NULL , + CREATED_TIME TIMESTAMP NULL , + UPDATED_TIME TIMESTAMP NULL , + APPLIED_TIME TIMESTAMP NULL , + PRIMARY KEY (ID) , + CONSTRAINT FK_DM_POLICY_DEVCIE_APPLIED + FOREIGN KEY (DEVICE_ID ) + REFERENCES DM_DEVICE (ID ) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_CRITERIA ( + ID INT NOT NULL AUTO_INCREMENT, + TENANT_ID INT NOT NULL, + NAME VARCHAR(50) NULL, + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_POLICY_CRITERIA ( + ID INT NOT NULL AUTO_INCREMENT, + CRITERIA_ID INT NOT NULL, + POLICY_ID INT NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT FK_CRITERIA_POLICY_CRITERIA + FOREIGN KEY (CRITERIA_ID) + REFERENCES DM_CRITERIA (ID) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT FK_POLICY_POLICY_CRITERIA + FOREIGN KEY (POLICY_ID) + REFERENCES DM_POLICY (ID) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_POLICY_CRITERIA_PROPERTIES ( + ID INT NOT NULL AUTO_INCREMENT, + POLICY_CRITERION_ID INT NOT NULL, + PROP_KEY VARCHAR(45) NULL, + PROP_VALUE VARCHAR(100) NULL, + CONTENT BLOB NULL COMMENT 'This is used to ', + PRIMARY KEY (ID), + CONSTRAINT FK_POLICY_CRITERIA_PROPERTIES + FOREIGN KEY (POLICY_CRITERION_ID) + REFERENCES DM_POLICY_CRITERIA (ID) + ON DELETE CASCADE + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_POLICY_COMPLIANCE_STATUS ( + ID INT NOT NULL AUTO_INCREMENT, + DEVICE_ID INT NOT NULL, + ENROLMENT_ID INT(11) NOT NULL, + POLICY_ID INT NOT NULL, + TENANT_ID INT NOT NULL, + STATUS INT NULL, + LAST_SUCCESS_TIME TIMESTAMP NULL, + LAST_REQUESTED_TIME TIMESTAMP NULL, + LAST_FAILED_TIME TIMESTAMP NULL, + ATTEMPTS INT NULL, + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_POLICY_CHANGE_MGT ( + ID INT NOT NULL AUTO_INCREMENT, + POLICY_ID INT NOT NULL, + DEVICE_TYPE VARCHAR(300) NOT NULL , + TENANT_ID INT(11) NOT NULL, + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_POLICY_COMPLIANCE_FEATURES ( + ID INT NOT NULL AUTO_INCREMENT, + COMPLIANCE_STATUS_ID INT NOT NULL, + TENANT_ID INT NOT NULL, + FEATURE_CODE VARCHAR(100) NOT NULL, + STATUS INT NULL, + PRIMARY KEY (ID), + CONSTRAINT FK_COMPLIANCE_FEATURES_STATUS + FOREIGN KEY (COMPLIANCE_STATUS_ID) + REFERENCES DM_POLICY_COMPLIANCE_STATUS (ID) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_APPLICATION ( + ID INTEGER AUTO_INCREMENT NOT NULL, + NAME VARCHAR(150) NOT NULL, + APP_IDENTIFIER VARCHAR(150) NOT NULL, + PLATFORM VARCHAR(50) DEFAULT NULL, + CATEGORY VARCHAR(50) NULL, + VERSION VARCHAR(50) NULL, + TYPE VARCHAR(50) NULL, + LOCATION_URL VARCHAR(100) DEFAULT NULL, + IMAGE_URL VARCHAR(100) DEFAULT NULL, + APP_PROPERTIES BLOB NULL, + MEMORY_USAGE INTEGER(10) NULL, + IS_ACTIVE BOOLEAN NOT NULL DEFAULT FALSE, + TENANT_ID INTEGER NOT NULL, + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_APPLICATION_MAPPING ( + ID INTEGER AUTO_INCREMENT NOT NULL, + DEVICE_ID INTEGER NOT NULL, + APPLICATION_ID INTEGER NOT NULL, + TENANT_ID INTEGER NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT fk_dm_device FOREIGN KEY (DEVICE_ID) REFERENCES + DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT fk_dm_application FOREIGN KEY (APPLICATION_ID) REFERENCES + DM_APPLICATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); + +-- POLICY RELATED TABLES FINISHED -- + +-- NOTIFICATION TABLE -- +CREATE TABLE IF NOT EXISTS DM_NOTIFICATION ( + NOTIFICATION_ID INTEGER AUTO_INCREMENT NOT NULL, + DEVICE_ID INTEGER NOT NULL, + OPERATION_ID INTEGER NOT NULL, + TENANT_ID INTEGER NOT NULL, + STATUS VARCHAR(10) NULL, + DESCRIPTION VARCHAR(1000) NULL, + PRIMARY KEY (NOTIFICATION_ID), + CONSTRAINT fk_dm_device_notification FOREIGN KEY (DEVICE_ID) REFERENCES + DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT fk_dm_operation_notification FOREIGN KEY (OPERATION_ID) REFERENCES + DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); +-- NOTIFICATION TABLE END -- + +CREATE TABLE IF NOT EXISTS DM_DEVICE_INFO ( + ID INTEGER AUTO_INCREMENT NOT NULL, + DEVICE_ID INT NULL, + KEY_FIELD VARCHAR(45) NULL, + VALUE_FIELD VARCHAR(100) NULL, + PRIMARY KEY (ID), + CONSTRAINT DM_DEVICE_INFO_DEVICE + FOREIGN KEY (DEVICE_ID) + REFERENCES DM_DEVICE (ID) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_LOCATION ( + ID INTEGER AUTO_INCREMENT NOT NULL, + DEVICE_ID INT NULL, + LATITUDE DOUBLE NULL, + LONGITUDE DOUBLE NULL, + STREET1 VARCHAR(255) NULL, + STREET2 VARCHAR(45) NULL, + CITY VARCHAR(45) NULL, + ZIP VARCHAR(10) NULL, + STATE VARCHAR(45) NULL, + COUNTRY VARCHAR(45) NULL, + UPDATE_TIMESTAMP BIGINT(15) NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT DM_DEVICE_LOCATION_DEVICE + FOREIGN KEY (DEVICE_ID) + REFERENCES DM_DEVICE (ID) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_DETAIL ( + ID INT NOT NULL AUTO_INCREMENT, + DEVICE_ID INT NOT NULL, + DEVICE_MODEL VARCHAR(45) NULL, + VENDOR VARCHAR(45) NULL, + OS_VERSION VARCHAR(45) NULL, + OS_BUILD_DATE VARCHAR(100) NULL, + BATTERY_LEVEL DECIMAL(4) NULL, + INTERNAL_TOTAL_MEMORY DECIMAL(30,3) NULL, + INTERNAL_AVAILABLE_MEMORY DECIMAL(30,3) NULL, + EXTERNAL_TOTAL_MEMORY DECIMAL(30,3) NULL, + EXTERNAL_AVAILABLE_MEMORY DECIMAL(30,3) NULL, + CONNECTION_TYPE VARCHAR(50) NULL, + SSID VARCHAR(45) NULL, + CPU_USAGE DECIMAL(5) NULL, + TOTAL_RAM_MEMORY DECIMAL(30,3) NULL, + AVAILABLE_RAM_MEMORY DECIMAL(30,3) NULL, + PLUGGED_IN INT(1) NULL, + UPDATE_TIMESTAMP BIGINT(15) NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT FK_DM_DEVICE_DETAILS_DEVICE + FOREIGN KEY (DEVICE_ID) + REFERENCES DM_DEVICE (ID) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +-- POLICY AND DEVICE GROUP MAPPING -- +CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_POLICY ( + ID INT NOT NULL AUTO_INCREMENT, + DEVICE_GROUP_ID INT NOT NULL, + POLICY_ID INT NOT NULL, + TENANT_ID INT NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT FK_DM_DEVICE_GROUP_POLICY + FOREIGN KEY (DEVICE_GROUP_ID) + REFERENCES DM_GROUP (ID) + ON DELETE CASCADE + ON UPDATE CASCADE , + CONSTRAINT FK_DM_DEVICE_GROUP_DM_POLICY + FOREIGN KEY (POLICY_ID) + REFERENCES DM_POLICY (ID) + ON DELETE CASCADE + ON UPDATE CASCADE +); +-- END OF POLICY AND DEVICE GROUP MAPPING -- + +-- DASHBOARD RELATED VIEWS -- +CREATE VIEW POLICY_COMPLIANCE_INFO AS +SELECT +DEVICE_INFO.DEVICE_ID, +DEVICE_INFO.DEVICE_IDENTIFICATION, +DEVICE_INFO.PLATFORM, +DEVICE_INFO.OWNERSHIP, +DEVICE_INFO.CONNECTIVITY_STATUS, +IFNULL(DEVICE_WITH_POLICY_INFO.POLICY_ID, -1) AS POLICY_ID, +IFNULL(DEVICE_WITH_POLICY_INFO.IS_COMPLIANT, -1) AS IS_COMPLIANT, +DEVICE_INFO.TENANT_ID +FROM +(SELECT +DM_DEVICE.ID AS DEVICE_ID, +DM_DEVICE.DEVICE_IDENTIFICATION, +DM_DEVICE_TYPE.NAME AS PLATFORM, +DM_ENROLMENT.OWNERSHIP, +DM_ENROLMENT.STATUS AS CONNECTIVITY_STATUS, +DM_DEVICE.TENANT_ID +FROM DM_DEVICE, DM_DEVICE_TYPE, DM_ENROLMENT +WHERE DM_DEVICE.DEVICE_TYPE_ID = DM_DEVICE_TYPE.ID AND DM_DEVICE.ID = DM_ENROLMENT.DEVICE_ID) DEVICE_INFO +LEFT JOIN +(SELECT +DEVICE_ID, +POLICY_ID, +STATUS AS IS_COMPLIANT +FROM DM_POLICY_COMPLIANCE_STATUS) DEVICE_WITH_POLICY_INFO +ON DEVICE_INFO.DEVICE_ID = DEVICE_WITH_POLICY_INFO.DEVICE_ID +ORDER BY DEVICE_INFO.DEVICE_ID; + +CREATE VIEW FEATURE_NON_COMPLIANCE_INFO AS +SELECT +DM_DEVICE.ID AS DEVICE_ID, +DM_DEVICE.DEVICE_IDENTIFICATION, +DM_DEVICE_DETAIL.DEVICE_MODEL, +DM_DEVICE_DETAIL.VENDOR, +DM_DEVICE_DETAIL.OS_VERSION, +DM_ENROLMENT.OWNERSHIP, +DM_ENROLMENT.OWNER, +DM_ENROLMENT.STATUS AS CONNECTIVITY_STATUS, +DM_POLICY_COMPLIANCE_STATUS.POLICY_ID, +DM_DEVICE_TYPE.NAME AS PLATFORM, +DM_POLICY_COMPLIANCE_FEATURES.FEATURE_CODE, +DM_POLICY_COMPLIANCE_FEATURES.STATUS AS IS_COMPLAINT, +DM_DEVICE.TENANT_ID +FROM +DM_POLICY_COMPLIANCE_FEATURES, DM_POLICY_COMPLIANCE_STATUS, DM_ENROLMENT, DM_DEVICE, DM_DEVICE_TYPE, DM_DEVICE_DETAIL +WHERE +DM_POLICY_COMPLIANCE_FEATURES.COMPLIANCE_STATUS_ID = DM_POLICY_COMPLIANCE_STATUS.ID AND +DM_POLICY_COMPLIANCE_STATUS.ENROLMENT_ID = DM_ENROLMENT.ID AND +DM_POLICY_COMPLIANCE_STATUS.DEVICE_ID = DM_DEVICE.ID AND +DM_DEVICE.DEVICE_TYPE_ID = DM_DEVICE_TYPE.ID AND +DM_DEVICE.ID = DM_DEVICE_DETAIL.DEVICE_ID +ORDER BY TENANT_ID, DEVICE_ID; + +-- END OF DASHBOARD RELATED VIEWS -- diff --git a/src/test/resources/testng.xml b/src/test/resources/testng.xml new file mode 100644 index 000000000..a2e39e52e --- /dev/null +++ b/src/test/resources/testng.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + diff --git a/src/test/resources/user-test/user-mgt-registry-test.xml b/src/test/resources/user-test/user-mgt-registry-test.xml new file mode 100644 index 000000000..d7468d13c --- /dev/null +++ b/src/test/resources/user-test/user-mgt-registry-test.xml @@ -0,0 +1,101 @@ + + + + + true + admin + + admin + admin + + everyone + false + 500 + jdbc:h2:target/databasetest/CARBON_TEST + org.h2.Driver + 50 + 60000 + 5 + + + [\S]{5,30}$ + [\\S]{5,30} + SELECT * FROM UM_USER WHERE UM_USER_NAME=? AND UM_TENANT_ID=? + + + + + + + + + + + + + + + + SHA-256 + true + false + false + wso2.com + true + 100 + + + INSERT INTO UM_ROLE (UM_ROLE_NAME, UM_TENANT_ID) VALUES (?, ?) + + + + + + + + + + + + + + + + + org.wso2.carbon.user.core.tenant.JDBCTenantManager + + + true + + + + login + manage-configuration + manage-security + upload-services + manage-services + manage-lc-configuration + manage-mediation + monitor-system + delegate-identity + + + From be373accec40b40569037725d06fe07a455b1c1c Mon Sep 17 00:00:00 2001 From: charitha Date: Thu, 16 Nov 2017 21:13:22 +0530 Subject: [PATCH 002/135] Merge branch 'master' of https://github.com/wso2/carbon-device-mgt-plugins # Conflicts: # components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/pom.xml --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 996094ec1..dec60bc1a 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.91-SNAPSHOT + 4.0.93-SNAPSHOT ../pom.xml From 2139a91c054116a12718e2cb70fbe281539d46ba Mon Sep 17 00:00:00 2001 From: charitha Date: Fri, 17 Nov 2017 12:58:35 +0530 Subject: [PATCH 003/135] Merge branch 'master' of https://github.com/wso2/carbon-device-mgt-plugins # Conflicts: # components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/pom.xml --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index dec60bc1a..0b6d4bb58 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.93-SNAPSHOT + 4.0.94-SNAPSHOT ../pom.xml From 5f27c2de70ffe4bd99f9b929ade28e9ad9df117a Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 17 Nov 2017 09:07:04 +0000 Subject: [PATCH 004/135] [WSO2 Release] [Jenkins #3055] [Release 4.0.94] prepare release v4.0.94 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0b6d4bb58..1c99f108f 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.94-SNAPSHOT + 4.0.94 ../pom.xml From 215e27ee3c20e3b28126badb4ce850a1623bfff3 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 17 Nov 2017 09:07:21 +0000 Subject: [PATCH 005/135] [WSO2 Release] [Jenkins #3055] [Release 4.0.94] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1c99f108f..14cbf0233 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.94 + 4.0.95-SNAPSHOT ../pom.xml From b5c095bb67a71fecdb5de240dfbc222fe72750c3 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 17 Nov 2017 09:43:56 +0000 Subject: [PATCH 006/135] [WSO2 Release] [Jenkins #3056] [Release 4.0.95] prepare release v4.0.95 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 14cbf0233..86d38843f 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.95-SNAPSHOT + 4.0.95 ../pom.xml From 7bcb776f3ac8cb4fc32edd367f3b857057f58ac0 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 17 Nov 2017 09:44:11 +0000 Subject: [PATCH 007/135] [WSO2 Release] [Jenkins #3056] [Release 4.0.95] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 86d38843f..906d3b9c4 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.95 + 4.0.96-SNAPSHOT ../pom.xml From 3e4288e5e16598b0858e58cbeba2544282e36c80 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 17 Nov 2017 10:55:43 +0000 Subject: [PATCH 008/135] [WSO2 Release] [Jenkins #3058] [Release 4.0.96] prepare release v4.0.96 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 906d3b9c4..5a9c7bd8a 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.96-SNAPSHOT + 4.0.96 ../pom.xml From 783fab0ccef34de13823fdcd13c4a6b6ee3e62df Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 17 Nov 2017 10:55:56 +0000 Subject: [PATCH 009/135] [WSO2 Release] [Jenkins #3058] [Release 4.0.96] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5a9c7bd8a..cfe6b5ad6 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.96 + 4.0.97-SNAPSHOT ../pom.xml From 05b7e9fe6f1a3cdda10d633dd37077d0aa73a09c Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 17 Nov 2017 13:02:44 +0000 Subject: [PATCH 010/135] [WSO2 Release] [Jenkins #3060] [Release 4.0.97] prepare release v4.0.97 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cfe6b5ad6..fda87700c 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.97-SNAPSHOT + 4.0.97 ../pom.xml From 59f468e58500e78050fdc06e924deb8b8c8983b2 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 17 Nov 2017 13:02:58 +0000 Subject: [PATCH 011/135] [WSO2 Release] [Jenkins #3060] [Release 4.0.97] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fda87700c..fd48e3a9a 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.97 + 4.0.98-SNAPSHOT ../pom.xml From 86ce1475e2caac6de3fe9cd6da559432b06b7e9e Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 23 Nov 2017 12:30:02 +0000 Subject: [PATCH 012/135] [WSO2 Release] [Jenkins #3064] [Release 4.0.98] prepare release v4.0.98 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fd48e3a9a..e4c767b98 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.98-SNAPSHOT + 4.0.98 ../pom.xml From b1210c65462a60519641e34f67b2030ceb2146e6 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 23 Nov 2017 12:30:19 +0000 Subject: [PATCH 013/135] [WSO2 Release] [Jenkins #3064] [Release 4.0.98] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e4c767b98..c43f7c161 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.98 + 4.0.99-SNAPSHOT ../pom.xml From 11fb75ac26c402a6610f72e77916e31e88dec0dc Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 23 Nov 2017 14:37:32 +0000 Subject: [PATCH 014/135] [WSO2 Release] [Jenkins #3066] [Release 4.0.99] prepare release v4.0.99 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c43f7c161..42d979c81 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.99-SNAPSHOT + 4.0.99 ../pom.xml From b81ebfa9778686e87bbc5eba1a92dd103f86a361 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 23 Nov 2017 14:37:47 +0000 Subject: [PATCH 015/135] [WSO2 Release] [Jenkins #3066] [Release 4.0.99] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 42d979c81..b6f55e1a3 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.99 + 4.0.100-SNAPSHOT ../pom.xml From 67fdf0e4d3a5176bec926e867f608ef749971d95 Mon Sep 17 00:00:00 2001 From: charitha Date: Wed, 29 Nov 2017 21:30:04 +0530 Subject: [PATCH 016/135] Improve testing --- pom.xml | 26 ++++++ .../siddhi/device/ExtensionTestCase.java | 44 ++++++++-- .../device/test/util/TestDataHolder.java | 85 +++---------------- .../siddhi/device/test/util/TestUtils.java | 31 ------- src/test/resources/testng.xml | 2 +- 5 files changed, 76 insertions(+), 112 deletions(-) diff --git a/pom.xml b/pom.xml index b6f55e1a3..18ddcde60 100644 --- a/pom.xml +++ b/pom.xml @@ -148,6 +148,32 @@ + + org.jacoco + jacoco-maven-plugin + + ${basedir}/target/coverage-reports/jacoco-unit.exec + + + + jacoco-initialize + + prepare-agent + + + + jacoco-site + test + + report + + + ${basedir}/target/coverage-reports/jacoco-unit.exec + ${basedir}/target/coverage-reports/site + + + + \ No newline at end of file diff --git a/src/test/java/org/wso2/extension/siddhi/device/ExtensionTestCase.java b/src/test/java/org/wso2/extension/siddhi/device/ExtensionTestCase.java index 801b9e93a..607fcb537 100644 --- a/src/test/java/org/wso2/extension/siddhi/device/ExtensionTestCase.java +++ b/src/test/java/org/wso2/extension/siddhi/device/ExtensionTestCase.java @@ -49,7 +49,6 @@ import org.wso2.carbon.utils.multitenancy.MultitenantConstants; import org.wso2.extension.siddhi.device.test.util.SiddhiTestHelper; import org.wso2.extension.siddhi.device.test.util.TestDataHolder; import org.wso2.extension.siddhi.device.test.util.TestDeviceManagementService; -import org.wso2.extension.siddhi.device.test.util.TestUtils; import org.wso2.extension.siddhi.device.utils.DeviceUtils; import org.wso2.siddhi.core.ExecutionPlanRuntime; import org.wso2.siddhi.core.SiddhiManager; @@ -79,7 +78,7 @@ public class ExtensionTestCase extends BaseDeviceManagementTest { @Override public void receive(long timeStamp, Event[] inEvents, Event[] removeEvents) { EventPrinter.print(timeStamp, inEvents, removeEvents); - for (Event event : inEvents) { + for (Event ignored : inEvents) { count.incrementAndGet(); eventArrived = true; } @@ -127,8 +126,10 @@ public class ExtensionTestCase extends BaseDeviceManagementTest { @Test public void createGroup() throws GroupManagementException, GroupAlreadyExistException { - groupManagementProviderService.createGroup(TestUtils.createDeviceGroup1(), DEFAULT_ADMIN_ROLE, DEFAULT_ADMIN_PERMISSIONS); - groupManagementProviderService.createGroup(TestUtils.createDeviceGroup2(), DEFAULT_ADMIN_ROLE, DEFAULT_ADMIN_PERMISSIONS); + groupManagementProviderService.createGroup(TestDataHolder.generateDummyGroupData(1), + DEFAULT_ADMIN_ROLE, DEFAULT_ADMIN_PERMISSIONS); + groupManagementProviderService.createGroup(TestDataHolder.generateDummyGroupData(2), + DEFAULT_ADMIN_ROLE, DEFAULT_ADMIN_PERMISSIONS); } @Test @@ -149,13 +150,38 @@ public class ExtensionTestCase extends BaseDeviceManagementTest { configuration.setEnabled(false); DeviceConfigurationManager.getInstance().getDeviceManagementConfig().setDeviceCacheConfiguration(configuration); - List list = TestUtils.getDeviceIdentifiersList(DEVICE_TYPE); - DeviceGroup deviceGroup = groupManagementProviderService.getGroup(TestUtils.createDeviceGroup1().getName()); + List list = TestDataHolder.getDeviceIdentifiersList(DEVICE_TYPE); + DeviceGroup deviceGroup = groupManagementProviderService.getGroup(TestDataHolder.generateDummyGroupData(1).getName()); Assert.assertNotNull(deviceGroup); groupManagementProviderService.addDevices(deviceGroup.getGroupId(), list); } @Test(dependsOnMethods = {"addDevices"}) + public void testIsEnrolledExtension() throws InterruptedException, GroupManagementException { + log.info("IsEnrolled TestCase"); + SiddhiManager siddhiManager = new SiddhiManager(); + + count.set(0); + eventArrived = false; + + String inStreamDefinition = "define stream inputStream (deviceId string, deviceType string);"; + String query = ("@info(name = 'query1') from inputStream[device:isEnrolled(deviceId, deviceType)] " + + "select deviceId insert into outputStream;"); + ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(inStreamDefinition + query); + executionPlanRuntime.addCallback("query1", queryCallback); + + InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); + executionPlanRuntime.start(); + DeviceIdentifier deviceIdentifier = TestDataHolder.getDeviceIdentifiersList(DEVICE_TYPE).get(0); + inputHandler.send(new Object[]{deviceIdentifier.getId(), deviceIdentifier.getType()}); + inputHandler.send(new Object[]{"99999", deviceIdentifier.getType()}); + SiddhiTestHelper.waitForEvents(100, 1, count, 10000); + Assert.assertTrue(eventArrived); + Assert.assertEquals(1, count.get()); + executionPlanRuntime.shutdown(); + } + + @Test(dependsOnMethods = {"testIsEnrolledExtension"}) public void testIsInGroupExtension() throws InterruptedException, GroupManagementException { log.info("IsInGroup TestCase"); SiddhiManager siddhiManager = new SiddhiManager(); @@ -171,11 +197,11 @@ public class ExtensionTestCase extends BaseDeviceManagementTest { InputHandler inputHandler = executionPlanRuntime.getInputHandler("inputStream"); executionPlanRuntime.start(); - DeviceIdentifier deviceIdentifier = TestUtils.getDeviceIdentifiersList(DEVICE_TYPE).get(0); + DeviceIdentifier deviceIdentifier = TestDataHolder.getDeviceIdentifiersList(DEVICE_TYPE).get(0); inputHandler.send(new Object[]{groupManagementProviderService.getGroup( - TestUtils.createDeviceGroup1().getName()).getGroupId(), deviceIdentifier.getId(), deviceIdentifier.getType()}); + TestDataHolder.generateDummyGroupData(1).getName()).getGroupId(), deviceIdentifier.getId(), deviceIdentifier.getType()}); inputHandler.send(new Object[]{groupManagementProviderService.getGroup( - TestUtils.createDeviceGroup2().getName()).getGroupId(), deviceIdentifier.getId(), deviceIdentifier.getType()}); + TestDataHolder.generateDummyGroupData(2).getName()).getGroupId(), deviceIdentifier.getId(), deviceIdentifier.getType()}); SiddhiTestHelper.waitForEvents(100, 1, count, 10000); Assert.assertTrue(eventArrived); Assert.assertEquals(1, count.get()); diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDataHolder.java b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDataHolder.java index 6c2fe832f..6b482abcb 100644 --- a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDataHolder.java +++ b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDataHolder.java @@ -30,13 +30,8 @@ import java.util.Properties; public class TestDataHolder { - public final static String TEST_DEVICE_TYPE = "Test"; - public final static Integer SUPER_TENANT_ID = -1234; - public final static String SUPER_TENANT_DOMAIN = "carbon.super"; public final static String initialDeviceIdentifier = "12345"; public final static String OWNER = "admin"; - public static Device initialTestDevice; - public static DeviceType initialTestDeviceType; public static Device generateDummyDeviceData(String deviceType) { Device device = new Device(); @@ -53,75 +48,23 @@ public class TestDataHolder { return device; } - public static Notification getNotification(int notificationId, String status, String deviceId, - String description, String deviceName, int operationId, - String deviceType) { - Notification notification = new Notification(); - notification.setNotificationId(notificationId); - notification.setStatus(status); - notification.setDeviceIdentifier(deviceId); - notification.setDescription(description); - notification.setDeviceName(deviceName); - notification.setOperationId(operationId); - notification.setDeviceType(deviceType); - return notification; - } - - public static Device generateDummyDeviceData(String deviceIdentifier, String deviceType, - EnrolmentInfo enrolmentInfo) { - Device device = new Device(); - device.setEnrolmentInfo(enrolmentInfo); - device.setDescription("Test Description"); - device.setDeviceIdentifier(deviceIdentifier); - device.setType(deviceType); - return device; - } - - public static List generateDummyDeviceData(List deviceIds) { - List devices = new ArrayList<>(); - for (DeviceIdentifier deviceId : deviceIds) { - Device device = new Device(); - EnrolmentInfo enrolmentInfo = new EnrolmentInfo(); - enrolmentInfo.setDateOfEnrolment(new Date().getTime()); - enrolmentInfo.setDateOfLastUpdate(new Date().getTime()); - enrolmentInfo.setOwner(OWNER); - enrolmentInfo.setOwnership(EnrolmentInfo.OwnerShip.BYOD); - enrolmentInfo.setStatus(EnrolmentInfo.Status.CREATED); - device.setEnrolmentInfo(enrolmentInfo); - device.setDescription("Test Description"); - device.setDeviceIdentifier(deviceId.getId()); - device.setType(deviceId.getType()); - devices.add(device); - } - return devices; + public static DeviceGroup generateDummyGroupData(int testId) { + DeviceGroup deviceGroup = new DeviceGroup(); + deviceGroup.setName("Test" + testId); + deviceGroup.setDescription("Test description " + testId); + deviceGroup.setOwner(OWNER); + return deviceGroup; } - public static DeviceType generateDeviceTypeData(String devTypeName) { - DeviceType deviceType = new DeviceType(); - deviceType.setName(devTypeName); - return deviceType; - } + public static List getDeviceIdentifiersList(String deviceType){ + Device device = generateDummyDeviceData(deviceType); + DeviceIdentifier identifier = new DeviceIdentifier(); + identifier.setId(device.getDeviceIdentifier()); + identifier.setType(deviceType); - public static Application generateApplicationDummyData(String appIdentifier) { - Application application = new Application(); - Properties properties = new Properties(); - properties.setProperty("test1", "testVal"); - application.setName("SimpleCalculator"); - application.setCategory("TestCategory"); - application.setApplicationIdentifier(appIdentifier); - application.setType("TestType"); - application.setVersion("1.0.0"); - application.setImageUrl("http://test.org/image/"); - application.setLocationUrl("http://test.org/location/"); - application.setAppProperties(properties); - return application; - } + List list = new ArrayList<>(); + list.add(identifier); - public static DeviceGroup generateDummyGroupData() { - DeviceGroup deviceGroup = new DeviceGroup(); - deviceGroup.setName("Test device group"); - deviceGroup.setDescription("Test description"); - deviceGroup.setOwner(OWNER); - return deviceGroup; + return list; } } diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestUtils.java b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestUtils.java index 20ed04dae..673b2b521 100644 --- a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestUtils.java +++ b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestUtils.java @@ -58,35 +58,4 @@ public class TestUtils { } } } - - - public static DeviceGroup createDeviceGroup1(){ - DeviceGroup group = new DeviceGroup(); - group.setName("TEST_GROUP_01"); - group.setDescription("TEST_GROUP_01 - Description"); - group.setOwner("admin"); - return group; - } - - - public static DeviceGroup createDeviceGroup2(){ - DeviceGroup group = new DeviceGroup(); - group.setName("TEST_GROUP_02"); - group.setDescription("TEST_GROUP_02 - Description"); - group.setOwner("admin"); - return group; - } - - public static List getDeviceIdentifiersList(String deviceType){ - - Device device = TestDataHolder.generateDummyDeviceData(deviceType); - DeviceIdentifier identifier = new DeviceIdentifier(); - identifier.setId(device.getDeviceIdentifier()); - identifier.setType(deviceType); - - List list = new ArrayList<>(); - list.add(identifier); - - return list; - } } diff --git a/src/test/resources/testng.xml b/src/test/resources/testng.xml index a2e39e52e..2f25f2a58 100644 --- a/src/test/resources/testng.xml +++ b/src/test/resources/testng.xml @@ -19,7 +19,7 @@ - + From e54739f1e96ee2369d2d1018e13dca4eaf1f1f06 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 29 Nov 2017 16:30:29 +0000 Subject: [PATCH 017/135] [WSO2 Release] [Jenkins #3068] [Release 4.0.100] prepare release v4.0.100 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 18ddcde60..ead960a61 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.100-SNAPSHOT + 4.0.100 ../pom.xml From f6150f3fda5ac9bb35861e1ac135257cd8e4910b Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 29 Nov 2017 16:30:44 +0000 Subject: [PATCH 018/135] [WSO2 Release] [Jenkins #3068] [Release 4.0.100] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ead960a61..e4409332a 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.100 + 4.0.101-SNAPSHOT ../pom.xml From a084af918d681e9f1ddf31fd724b7df80fc207a3 Mon Sep 17 00:00:00 2001 From: Ace Date: Thu, 30 Nov 2017 10:52:30 +0530 Subject: [PATCH 019/135] Bumping cdmf version and updating unit tests --- .../extension/siddhi/device/test/util/TestDeviceManager.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManager.java b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManager.java index 7a152b9a3..78197c0ce 100644 --- a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManager.java +++ b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManager.java @@ -88,6 +88,11 @@ public class TestDeviceManager implements DeviceManager { return null; } + @Override + public boolean updateDeviceProperties(DeviceIdentifier deviceIdentifier, List list) throws DeviceManagementException { + return false; + } + @Override public boolean updateDeviceInfo(DeviceIdentifier deviceIdentifier, Device device) throws DeviceManagementException { From 68034d69fde8ab858c9cece11750a7c0444e7e73 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 30 Nov 2017 06:01:18 +0000 Subject: [PATCH 020/135] [WSO2 Release] [Jenkins #3070] [Release 4.0.101] prepare release v4.0.101 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e4409332a..e70c18dbf 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.101-SNAPSHOT + 4.0.101 ../pom.xml From 27e940fd8c7e0fb7089784ff184b323b82ad2060 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 30 Nov 2017 06:01:33 +0000 Subject: [PATCH 021/135] [WSO2 Release] [Jenkins #3070] [Release 4.0.101] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e70c18dbf..aa365855e 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.101 + 4.0.102-SNAPSHOT ../pom.xml From 1e44e662802a8b5c3f30e5d6d02855906c66768e Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 13 Dec 2017 03:58:06 +0000 Subject: [PATCH 022/135] [WSO2 Release] [Jenkins #3072] [Release 4.0.102] prepare release v4.0.102 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index aa365855e..b2475f012 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.102-SNAPSHOT + 4.0.102 ../pom.xml From 23b2c50d8ec6557d9f78df66e9b08b43a15154ec Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 13 Dec 2017 03:58:20 +0000 Subject: [PATCH 023/135] [WSO2 Release] [Jenkins #3072] [Release 4.0.102] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b2475f012..8f0df6dab 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.102 + 4.0.103-SNAPSHOT ../pom.xml From a3095faff6eafd35752aed97696723b87d516140 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 13 Dec 2017 07:06:19 +0000 Subject: [PATCH 024/135] [WSO2 Release] [Jenkins #3074] [Release 4.0.103] prepare release v4.0.103 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8f0df6dab..7ab16a764 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.103-SNAPSHOT + 4.0.103 ../pom.xml From 1864cebd405bad5a1c8ce18c3bacd899bccac725 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 13 Dec 2017 07:06:33 +0000 Subject: [PATCH 025/135] [WSO2 Release] [Jenkins #3074] [Release 4.0.103] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7ab16a764..ba0c097a4 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.103 + 4.0.104-SNAPSHOT ../pom.xml From 75d2f3f42c89e77d30149be973bc554a70565bfb Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 14 Dec 2017 09:24:58 +0000 Subject: [PATCH 026/135] [WSO2 Release] [Jenkins #3076] [Release 4.0.104] prepare release v4.0.104 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ba0c097a4..edbd5d765 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.104-SNAPSHOT + 4.0.104 ../pom.xml From 1cb5d1e3a8245bb3c248e0103b6a9f651f763129 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 14 Dec 2017 09:25:13 +0000 Subject: [PATCH 027/135] [WSO2 Release] [Jenkins #3076] [Release 4.0.104] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index edbd5d765..7aad555c5 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.104 + 4.0.105-SNAPSHOT ../pom.xml From 41198ea821e59a2693fa4118df5b4a4017e21f61 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 15 Dec 2017 13:48:13 +0000 Subject: [PATCH 028/135] [WSO2 Release] [Jenkins #3079] [Release 4.0.105] prepare release v4.0.105 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7aad555c5..c538a6476 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.105-SNAPSHOT + 4.0.105 ../pom.xml From 0ad3b4c320d3aaada72e3c7a1822e61ead8ae30c Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 15 Dec 2017 13:48:28 +0000 Subject: [PATCH 029/135] [WSO2 Release] [Jenkins #3079] [Release 4.0.105] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c538a6476..f6f63f228 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.105 + 4.0.106-SNAPSHOT ../pom.xml From 93f07ba24b8adcda6809efbfc21faefe7e7e1a07 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 15 Dec 2017 16:06:38 +0000 Subject: [PATCH 030/135] [WSO2 Release] [Jenkins #3081] [Release 4.0.106] prepare release v4.0.106 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f6f63f228..a5962688b 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.106-SNAPSHOT + 4.0.106 ../pom.xml From e5cd7a724c077b46fdf628322064ce42dfa06d9a Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 15 Dec 2017 16:06:54 +0000 Subject: [PATCH 031/135] [WSO2 Release] [Jenkins #3081] [Release 4.0.106] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a5962688b..7f99d7876 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.106 + 4.0.107-SNAPSHOT ../pom.xml From 25b3700149c7c1e715225c981fe00873f0d7d058 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sun, 24 Dec 2017 17:28:12 +0000 Subject: [PATCH 032/135] [WSO2 Release] [Jenkins #3084] [Release 4.0.107] prepare release v4.0.107 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7f99d7876..aaf692c7a 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.107-SNAPSHOT + 4.0.107 ../pom.xml From 8be342caf65166159d490c7e435cbdb941ea15a0 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sun, 24 Dec 2017 17:28:29 +0000 Subject: [PATCH 033/135] [WSO2 Release] [Jenkins #3084] [Release 4.0.107] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index aaf692c7a..5869e1043 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.107 + 4.0.108-SNAPSHOT ../pom.xml From 80537c657adba021879da28afa0650106a05a264 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 10 Jan 2018 02:17:00 +0000 Subject: [PATCH 034/135] [WSO2 Release] [Jenkins #3086] [Release 4.0.108] prepare release v4.0.108 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5869e1043..b21f42321 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.108-SNAPSHOT + 4.0.108 ../pom.xml From 3147e7813cfd2778c1d6c3b41cfc1397e18d409f Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 10 Jan 2018 02:17:15 +0000 Subject: [PATCH 035/135] [WSO2 Release] [Jenkins #3086] [Release 4.0.108] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b21f42321..f7cdea73f 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.108 + 4.0.109-SNAPSHOT ../pom.xml From 284b93bd869e8c46a9308e4e7a17eacf92ab1835 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 10 Jan 2018 05:58:20 +0000 Subject: [PATCH 036/135] [WSO2 Release] [Jenkins #3088] [Release 4.0.109] prepare release v4.0.109 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f7cdea73f..b1dd70849 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.109-SNAPSHOT + 4.0.109 ../pom.xml From 9050950f2ab16dc844c267a6067a4fad477c9b97 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 10 Jan 2018 05:58:33 +0000 Subject: [PATCH 037/135] [WSO2 Release] [Jenkins #3088] [Release 4.0.109] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b1dd70849..322e14d82 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.109 + 4.0.110-SNAPSHOT ../pom.xml From 940b7726d2001e0c851a9d23a8db59ec2cbe1eb4 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 11 Jan 2018 04:58:23 +0000 Subject: [PATCH 038/135] [WSO2 Release] [Jenkins #3090] [Release 4.0.110] prepare release v4.0.110 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 322e14d82..55cdab731 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.110-SNAPSHOT + 4.0.110 ../pom.xml From 150940791eb4177c5d70ff1ec94acd768d23c159 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 11 Jan 2018 04:58:39 +0000 Subject: [PATCH 039/135] [WSO2 Release] [Jenkins #3090] [Release 4.0.110] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 55cdab731..42cedca2d 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.110 + 4.0.111-SNAPSHOT ../pom.xml From e76b823e3dd21d735464cebb12a71126adab7cae Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 11 Jan 2018 07:41:36 +0000 Subject: [PATCH 040/135] [WSO2 Release] [Jenkins #3092] [Release 4.0.111] prepare release v4.0.111 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 42cedca2d..53dd000d2 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.111-SNAPSHOT + 4.0.111 ../pom.xml From c97fb052b900f838af9a4a9274bf22b723d7be06 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 11 Jan 2018 07:41:52 +0000 Subject: [PATCH 041/135] [WSO2 Release] [Jenkins #3092] [Release 4.0.111] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 53dd000d2..7105351f9 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.111 + 4.0.112-SNAPSHOT ../pom.xml From 8b26d00aca17791dd16e640a337e733dfd0277dc Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 19 Jan 2018 09:02:58 +0000 Subject: [PATCH 042/135] [WSO2 Release] [Jenkins #3094] [Release 4.0.112] prepare release v4.0.112 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7105351f9..51b137af8 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.112-SNAPSHOT + 4.0.112 ../pom.xml From 0db1fc72b586a2bfa029e336c700cd85a160450b Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 19 Jan 2018 09:03:13 +0000 Subject: [PATCH 043/135] [WSO2 Release] [Jenkins #3094] [Release 4.0.112] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 51b137af8..e7e1527d8 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.112 + 4.0.113-SNAPSHOT ../pom.xml From b7771f427cea3e8f3c93f15d28dc507624b45366 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 19 Jan 2018 14:20:44 +0000 Subject: [PATCH 044/135] [WSO2 Release] [Jenkins #3096] [Release 4.0.113] prepare release v4.0.113 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e7e1527d8..f232b3525 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.113-SNAPSHOT + 4.0.113 ../pom.xml From 9fc1b0da9d916f5916bab40d6f86b37838272e47 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 19 Jan 2018 14:21:00 +0000 Subject: [PATCH 045/135] [WSO2 Release] [Jenkins #3096] [Release 4.0.113] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f232b3525..b459eef81 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.113 + 4.0.114-SNAPSHOT ../pom.xml From 34515ccc41ba2933325308d565fe2d26976f2c77 Mon Sep 17 00:00:00 2001 From: geethkokila Date: Mon, 22 Jan 2018 17:29:44 +0530 Subject: [PATCH 046/135] Updating the carbon-device-mgt version This upgrade has api changes due to fixes to the policy monitoring --- .../device/test/util/TestDeviceManagementService.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManagementService.java b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManagementService.java index f1631b747..504f1b252 100644 --- a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManagementService.java +++ b/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManagementService.java @@ -25,6 +25,7 @@ import org.wso2.carbon.device.mgt.common.MonitoringOperation; import org.wso2.carbon.device.mgt.common.OperationMonitoringTaskConfig; import org.wso2.carbon.device.mgt.common.ProvisioningConfig; import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager; +import org.wso2.carbon.device.mgt.common.general.GeneralConfig; import org.wso2.carbon.device.mgt.common.policy.mgt.PolicyMonitoringManager; import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber; import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig; @@ -108,4 +109,9 @@ public class TestDeviceManagementService implements DeviceManagementService { public DeviceStatusTaskPluginConfig getDeviceStatusTaskPluginConfig() { return null; } + + @Override + public GeneralConfig getGeneralConfig() { + return null; + } } From 95d4dd76e00199370910f0dde09ebf3769866b56 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Tue, 23 Jan 2018 03:03:34 +0000 Subject: [PATCH 047/135] [WSO2 Release] [Jenkins #3098] [Release 4.0.114] prepare release v4.0.114 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b459eef81..e6f0a2392 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.114-SNAPSHOT + 4.0.114 ../pom.xml From 92972db3dd383fc20411946075ea86166037ed78 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Tue, 23 Jan 2018 03:03:47 +0000 Subject: [PATCH 048/135] [WSO2 Release] [Jenkins #3098] [Release 4.0.114] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e6f0a2392..2b27a40a4 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.114 + 4.0.115-SNAPSHOT ../pom.xml From d63d3456eb9e0ecb48b59772cb363eafc9a0203f Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Tue, 23 Jan 2018 12:42:41 +0000 Subject: [PATCH 049/135] [WSO2 Release] [Jenkins #3100] [Release 4.0.115] prepare release v4.0.115 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2b27a40a4..4241d9229 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.115-SNAPSHOT + 4.0.115 ../pom.xml From 96e9dffaf12abb57f820b0fbbba27b3733f0686f Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Tue, 23 Jan 2018 12:42:55 +0000 Subject: [PATCH 050/135] [WSO2 Release] [Jenkins #3100] [Release 4.0.115] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4241d9229..e554b09f6 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.115 + 4.0.116-SNAPSHOT ../pom.xml From 68f69278a514556ff5337414e92e6406377fbca9 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Tue, 23 Jan 2018 13:23:47 +0000 Subject: [PATCH 051/135] [WSO2 Release] [Jenkins #3102] [Release 4.0.116] prepare release v4.0.116 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e554b09f6..b9080e046 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.116-SNAPSHOT + 4.0.116 ../pom.xml From f3aed2e753f51316314fe7a096b52154c4906c5c Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Tue, 23 Jan 2018 13:24:02 +0000 Subject: [PATCH 052/135] [WSO2 Release] [Jenkins #3102] [Release 4.0.116] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b9080e046..f79d36c7b 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.116 + 4.0.117-SNAPSHOT ../pom.xml From 4eac83d88a8ad98e432f8c46798bcf274ecc7db2 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 24 Jan 2018 05:49:01 +0000 Subject: [PATCH 053/135] [WSO2 Release] [Jenkins #3104] [Release 4.0.117] prepare release v4.0.117 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f79d36c7b..8a13ca713 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.117-SNAPSHOT + 4.0.117 ../pom.xml From 3e21b29dbe901708539d49a13072241a153d080b Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 24 Jan 2018 05:49:15 +0000 Subject: [PATCH 054/135] [WSO2 Release] [Jenkins #3104] [Release 4.0.117] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8a13ca713..d2b392d7e 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.117 + 4.0.118-SNAPSHOT ../pom.xml From 5b9738d8d3df2873b8efb30d9de31c3d5ceec359 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 26 Jan 2018 08:59:09 +0000 Subject: [PATCH 055/135] [WSO2 Release] [Jenkins #3106] [Release 4.0.118] prepare release v4.0.118 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d2b392d7e..024f329ab 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.118-SNAPSHOT + 4.0.118 ../pom.xml From 9569a150ec2ec1a113aa9dfaf96f8735d831ad0d Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 26 Jan 2018 08:59:23 +0000 Subject: [PATCH 056/135] [WSO2 Release] [Jenkins #3106] [Release 4.0.118] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 024f329ab..f1d568c7f 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.118 + 4.0.119-SNAPSHOT ../pom.xml From fc767cb43d284ab051ade45e1a47a7acba54fd29 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sat, 27 Jan 2018 04:33:26 +0000 Subject: [PATCH 057/135] [WSO2 Release] [Jenkins #3108] [Release 4.0.119] prepare release v4.0.119 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f1d568c7f..3ee11dd26 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.119-SNAPSHOT + 4.0.119 ../pom.xml From ca7448c68559604612ee67e2363b4be62dcd19cb Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sat, 27 Jan 2018 04:33:41 +0000 Subject: [PATCH 058/135] [WSO2 Release] [Jenkins #3108] [Release 4.0.119] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ee11dd26..4863e59ce 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.119 + 4.0.120-SNAPSHOT ../pom.xml From c4d82e0d23a3b9dd19593818873838ce6c543d93 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sun, 28 Jan 2018 15:29:10 +0000 Subject: [PATCH 059/135] [WSO2 Release] [Jenkins #3110] [Release 4.0.120] prepare release v4.0.120 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4863e59ce..55a840970 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.120-SNAPSHOT + 4.0.120 ../pom.xml From 842e669720c864c3998eda61b453c177f7acadf5 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sun, 28 Jan 2018 15:29:25 +0000 Subject: [PATCH 060/135] [WSO2 Release] [Jenkins #3110] [Release 4.0.120] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 55a840970..4afec8c81 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.120 + 4.0.121-SNAPSHOT ../pom.xml From 938cb19f88f25f04bc2017267631b650f475fc34 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 29 Jan 2018 05:35:54 +0000 Subject: [PATCH 061/135] [WSO2 Release] [Jenkins #3112] [Release 4.0.121] prepare release v4.0.121 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4afec8c81..4c949f778 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.121-SNAPSHOT + 4.0.121 ../pom.xml From 2a5f6c3a380310cadeae1ccee9ec9405ee5ab9d9 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 29 Jan 2018 05:36:09 +0000 Subject: [PATCH 062/135] [WSO2 Release] [Jenkins #3112] [Release 4.0.121] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4c949f778..5d67988b4 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.121 + 4.0.122-SNAPSHOT ../pom.xml From a72bcb52e9004889eb017a675955e4fc1f58fca5 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 29 Jan 2018 11:24:07 +0000 Subject: [PATCH 063/135] [WSO2 Release] [Jenkins #3114] [Release 4.0.122] prepare release v4.0.122 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5d67988b4..42bb82954 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.122-SNAPSHOT + 4.0.122 ../pom.xml From 8ce1389895c895a05313fa65a9700b9b0bbc8f5a Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 29 Jan 2018 11:24:22 +0000 Subject: [PATCH 064/135] [WSO2 Release] [Jenkins #3114] [Release 4.0.122] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 42bb82954..db1c2ba7f 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.122 + 4.0.123-SNAPSHOT ../pom.xml From d91736f339afd48f4141a793089879841a8b722f Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 29 Jan 2018 11:53:19 +0000 Subject: [PATCH 065/135] [WSO2 Release] [Jenkins #3116] [Release 4.0.123] prepare release v4.0.123 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index db1c2ba7f..e7b682a5a 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.123-SNAPSHOT + 4.0.123 ../pom.xml From febeb0c255820566552648844b364be47916820f Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 29 Jan 2018 11:53:35 +0000 Subject: [PATCH 066/135] [WSO2 Release] [Jenkins #3116] [Release 4.0.123] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e7b682a5a..3cde11aa8 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.123 + 4.0.124-SNAPSHOT ../pom.xml From a34b9e2e2bd55f7136110d047d1b6243cb055a4d Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 29 Jan 2018 12:43:38 +0000 Subject: [PATCH 067/135] [WSO2 Release] [Jenkins #3118] [Release 4.0.124] prepare release v4.0.124 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3cde11aa8..d879cae26 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.124-SNAPSHOT + 4.0.124 ../pom.xml From 7e8121cceea9e831815523e6ff6be996b747ff6f Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 29 Jan 2018 12:43:53 +0000 Subject: [PATCH 068/135] [WSO2 Release] [Jenkins #3118] [Release 4.0.124] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d879cae26..a1d9e41c7 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.124 + 4.0.125-SNAPSHOT ../pom.xml From df049049deb405fccf3ecf4c391c993fcc23ca34 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 1 Feb 2018 06:16:37 +0000 Subject: [PATCH 069/135] [WSO2 Release] [Jenkins #3120] [Release 4.0.125] prepare release v4.0.125 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a1d9e41c7..82c365fb6 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.125-SNAPSHOT + 4.0.125 ../pom.xml From 0dc193d2f998aa872e8797d09a32a397cde52866 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 1 Feb 2018 06:16:51 +0000 Subject: [PATCH 070/135] [WSO2 Release] [Jenkins #3120] [Release 4.0.125] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 82c365fb6..67ca20d3d 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.125 + 4.0.126-SNAPSHOT ../pom.xml From 115001e7988f2b24ecf2276a37dc4933befc8085 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Tue, 6 Feb 2018 15:10:14 +0000 Subject: [PATCH 071/135] [WSO2 Release] [Jenkins #3122] [Release 4.0.126] prepare release v4.0.126 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 67ca20d3d..f6da927b5 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.126-SNAPSHOT + 4.0.126 ../pom.xml From 7e24741a4ffee5f5947252c0b2776ec0d6c88814 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Tue, 6 Feb 2018 15:10:29 +0000 Subject: [PATCH 072/135] [WSO2 Release] [Jenkins #3122] [Release 4.0.126] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f6da927b5..038075988 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.126 + 4.0.127-SNAPSHOT ../pom.xml From f685c47bb74f53c2466dcf21a79acd681692ac78 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 12 Feb 2018 04:00:36 +0000 Subject: [PATCH 073/135] [WSO2 Release] [Jenkins #3124] [Release 4.0.127] prepare release v4.0.127 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 038075988..29a13b883 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.127-SNAPSHOT + 4.0.127 ../pom.xml From b5610173d6d8c90ebf81ef82f2508fc1d5b6c85f Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 12 Feb 2018 04:00:51 +0000 Subject: [PATCH 074/135] [WSO2 Release] [Jenkins #3124] [Release 4.0.127] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 29a13b883..4b99bf0d5 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.127 + 4.0.128-SNAPSHOT ../pom.xml From 331396529760177cc4bb16301e7406c4773556ed Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sun, 18 Feb 2018 07:19:52 +0000 Subject: [PATCH 075/135] [WSO2 Release] [Jenkins #3126] [Release 4.0.128] prepare release v4.0.128 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4b99bf0d5..5f1aca8af 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.128-SNAPSHOT + 4.0.128 ../pom.xml From 8fffa4bb25f69b3840340eabb23733f73243726c Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sun, 18 Feb 2018 07:20:07 +0000 Subject: [PATCH 076/135] [WSO2 Release] [Jenkins #3126] [Release 4.0.128] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5f1aca8af..2040310fc 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.128 + 4.0.129-SNAPSHOT ../pom.xml From 183e01520cf7a4610eb64e416fb8a78c404658e3 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 22 Feb 2018 10:24:10 +0000 Subject: [PATCH 077/135] [WSO2 Release] [Jenkins #3128] [Release 4.0.129] prepare release v4.0.129 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2040310fc..a53ee005c 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.129-SNAPSHOT + 4.0.129 ../pom.xml From fb534d576fcd02dfdde0fc96ab5db2957fd4118f Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 22 Feb 2018 10:24:20 +0000 Subject: [PATCH 078/135] [WSO2 Release] [Jenkins #3128] [Release 4.0.129] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a53ee005c..cb45fc1f4 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.129 + 4.0.130-SNAPSHOT ../pom.xml From 239df66cf261fc6886354f8979dd2ca36d6639a8 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sat, 24 Feb 2018 03:44:11 +0000 Subject: [PATCH 079/135] [WSO2 Release] [Jenkins #3130] [Release 4.0.130] prepare release v4.0.130 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cb45fc1f4..e845f8b9b 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.130-SNAPSHOT + 4.0.130 ../pom.xml From e41ebe392d6d648fc0160dddf8c1d229589867c5 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sat, 24 Feb 2018 03:44:21 +0000 Subject: [PATCH 080/135] [WSO2 Release] [Jenkins #3130] [Release 4.0.130] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e845f8b9b..fdd6b49cc 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.130 + 4.0.131-SNAPSHOT ../pom.xml From 6bab4e8893cd9c67b8764bcb122dc9133af4592a Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sun, 25 Feb 2018 11:03:00 +0000 Subject: [PATCH 081/135] [WSO2 Release] [Jenkins #3132] [Release 4.0.131] prepare release v4.0.131 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fdd6b49cc..4b5f9c52e 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.131-SNAPSHOT + 4.0.131 ../pom.xml From 1d9481a0084e1d629b70a683fa69617ad4e93f1a Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sun, 25 Feb 2018 11:03:12 +0000 Subject: [PATCH 082/135] [WSO2 Release] [Jenkins #3132] [Release 4.0.131] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4b5f9c52e..c97f050f4 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.131 + 4.0.132-SNAPSHOT ../pom.xml From bc93b8bfd412c64240a43ed4803df303b56dbac1 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 28 Feb 2018 14:30:43 +0000 Subject: [PATCH 083/135] [WSO2 Release] [Jenkins #3134] [Release 4.0.132] prepare release v4.0.132 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c97f050f4..fd7a2d4ac 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.132-SNAPSHOT + 4.0.132 ../pom.xml From 41ce49e0efcf7386e7daaf5d9763d4680839d84b Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 28 Feb 2018 14:30:53 +0000 Subject: [PATCH 084/135] [WSO2 Release] [Jenkins #3134] [Release 4.0.132] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fd7a2d4ac..3d7e884b0 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.132 + 4.0.133-SNAPSHOT ../pom.xml From 2d38279b9f5ba502cfad32738be2d14e65522090 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 28 Feb 2018 17:49:43 +0000 Subject: [PATCH 085/135] [WSO2 Release] [Jenkins #3136] [Release 4.0.133] prepare release v4.0.133 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3d7e884b0..b1e197ecd 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.133-SNAPSHOT + 4.0.133 ../pom.xml From 805ef2777a420f76e00f22dd418e7fdc204e94af Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 28 Feb 2018 17:49:53 +0000 Subject: [PATCH 086/135] [WSO2 Release] [Jenkins #3136] [Release 4.0.133] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b1e197ecd..146ee977c 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.133 + 4.0.134-SNAPSHOT ../pom.xml From 48beb8862389d010027602cc9601c432d5bba865 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 1 Mar 2018 18:27:51 +0000 Subject: [PATCH 087/135] [WSO2 Release] [Jenkins #3138] [Release 4.0.134] prepare release v4.0.134 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 146ee977c..1d79e0212 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.134-SNAPSHOT + 4.0.134 ../pom.xml From 785daabc5268855aef7c229c45ce071d56f95cf1 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 1 Mar 2018 18:28:02 +0000 Subject: [PATCH 088/135] [WSO2 Release] [Jenkins #3138] [Release 4.0.134] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1d79e0212..4c163bf7d 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.134 + 4.0.135-SNAPSHOT ../pom.xml From d580d80611ee93222f3942e6ccf52f66bdd005d8 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sat, 3 Mar 2018 16:48:22 +0000 Subject: [PATCH 089/135] [WSO2 Release] [Jenkins #3140] [Release 4.0.135] prepare release v4.0.135 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4c163bf7d..a129d4412 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.135-SNAPSHOT + 4.0.135 ../pom.xml From ad32465897781a02deb39828b08330e4c26e8bec Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sat, 3 Mar 2018 16:48:32 +0000 Subject: [PATCH 090/135] [WSO2 Release] [Jenkins #3140] [Release 4.0.135] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a129d4412..3fe7d6c1e 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.135 + 4.0.136-SNAPSHOT ../pom.xml From dbb7b66cbfdaf8fba86b9b75eb2b328af9dbb9cd Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sat, 3 Mar 2018 20:26:23 +0000 Subject: [PATCH 091/135] [WSO2 Release] [Jenkins #3142] [Release 4.0.136] prepare release v4.0.136 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3fe7d6c1e..c7ebcecac 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.136-SNAPSHOT + 4.0.136 ../pom.xml From 708f6ca7de303833141ff6b4234e9daf01663207 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Sat, 3 Mar 2018 20:26:33 +0000 Subject: [PATCH 092/135] [WSO2 Release] [Jenkins #3142] [Release 4.0.136] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c7ebcecac..a8ca78fe6 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.136 + 4.0.137-SNAPSHOT ../pom.xml From 2c97c2fdf37047929432989a272c9507f65dff5e Mon Sep 17 00:00:00 2001 From: geethkokila Date: Mon, 12 Mar 2018 16:28:28 +0530 Subject: [PATCH 093/135] Updating the version to 4.1.0 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index a8ca78fe6..4be11550d 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.0.137-SNAPSHOT + 4.1.0-SNAPSHOT ../pom.xml @@ -176,4 +176,4 @@ - \ No newline at end of file + From 2f9fe42f63a18d1168ba618bba605a217975da52 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 12 Mar 2018 11:34:53 +0000 Subject: [PATCH 094/135] [WSO2 Release] [Jenkins #3144] [Release 4.1.0] prepare release v4.1.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4be11550d..4d13e3c92 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.0-SNAPSHOT + 4.1.0 ../pom.xml From 10d45b85579d36ad892ffae012155157bb3b9e2b Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 12 Mar 2018 11:35:05 +0000 Subject: [PATCH 095/135] [WSO2 Release] [Jenkins #3144] [Release 4.1.0] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4d13e3c92..59d44e19e 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.0 + 4.1.1-SNAPSHOT ../pom.xml From 144a01970d69edf39c1e05796f2899f299cd4411 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Tue, 13 Mar 2018 05:46:38 +0000 Subject: [PATCH 096/135] [WSO2 Release] [Jenkins #3146] [Release 4.1.1] prepare release v4.1.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 59d44e19e..c0bab2da8 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.1-SNAPSHOT + 4.1.1 ../pom.xml From 677a00f17dcb33a62515ec77b0d5dbc0731753f0 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Tue, 13 Mar 2018 05:46:49 +0000 Subject: [PATCH 097/135] [WSO2 Release] [Jenkins #3146] [Release 4.1.1] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c0bab2da8..f7c7c1c68 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.1 + 4.1.2-SNAPSHOT ../pom.xml From dc4e2d0ba3a79216f5535c6749c45e36c7b21976 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 14 Mar 2018 07:59:38 +0000 Subject: [PATCH 098/135] [WSO2 Release] [Jenkins #3148] [Release 4.1.2] prepare release v4.1.2 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f7c7c1c68..fedccfcd1 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.2-SNAPSHOT + 4.1.2 ../pom.xml From 434f94e61abd7e12fb22829273e9cf3b97a07b00 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 14 Mar 2018 07:59:49 +0000 Subject: [PATCH 099/135] [WSO2 Release] [Jenkins #3148] [Release 4.1.2] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fedccfcd1..bbc6b1ab9 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.2 + 4.1.3-SNAPSHOT ../pom.xml From d64615475ef38c51552de3bd72fa6184a36a471a Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 15 Mar 2018 09:05:24 +0000 Subject: [PATCH 100/135] [WSO2 Release] [Jenkins #3150] [Release 4.1.3] prepare release v4.1.3 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bbc6b1ab9..63b6c397d 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.3-SNAPSHOT + 4.1.3 ../pom.xml From c761837f93b30bbabbf684d80a736cdc345cb4cf Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 15 Mar 2018 09:05:34 +0000 Subject: [PATCH 101/135] [WSO2 Release] [Jenkins #3150] [Release 4.1.3] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 63b6c397d..5c597c29e 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.3 + 4.1.4-SNAPSHOT ../pom.xml From 296998e67606b85428500bee342329e216d9ecb9 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 16 Mar 2018 12:06:49 +0000 Subject: [PATCH 102/135] [WSO2 Release] [Jenkins #3152] [Release 4.1.4] prepare release v4.1.4 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5c597c29e..16b3f6faa 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.4-SNAPSHOT + 4.1.4 ../pom.xml From fd75dab540b498a12b2cb82dd989aa105049c684 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 16 Mar 2018 12:06:59 +0000 Subject: [PATCH 103/135] [WSO2 Release] [Jenkins #3152] [Release 4.1.4] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 16b3f6faa..d5cd0a946 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.4 + 4.1.5-SNAPSHOT ../pom.xml From fa8d9b5fcfa71f006d598f5fe7b8001eb9c8cd23 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 21 Mar 2018 04:31:01 +0000 Subject: [PATCH 104/135] [WSO2 Release] [Jenkins #3154] [Release 4.1.5] prepare release v4.1.5 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d5cd0a946..05c0e1bf9 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.5-SNAPSHOT + 4.1.5 ../pom.xml From 889e7d707e80ab275ac038418511529e44e76135 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 21 Mar 2018 04:31:13 +0000 Subject: [PATCH 105/135] [WSO2 Release] [Jenkins #3154] [Release 4.1.5] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 05c0e1bf9..6e06bb9ef 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.5 + 4.1.6-SNAPSHOT ../pom.xml From 5c649b43caec7c695218a387f39a491117573d67 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 5 Apr 2018 13:49:53 +0000 Subject: [PATCH 106/135] [WSO2 Release] [Jenkins #3159] [Release 4.1.6] prepare release v4.1.6 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6e06bb9ef..6fc99e6c4 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.6-SNAPSHOT + 4.1.6 ../pom.xml From c6cc2e6bdd7b4cd0e03cf65e61352ab1fd4e5230 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 5 Apr 2018 13:50:04 +0000 Subject: [PATCH 107/135] [WSO2 Release] [Jenkins #3159] [Release 4.1.6] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6fc99e6c4..2246024c9 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.6 + 4.1.7-SNAPSHOT ../pom.xml From 7c35c622bcf5f8ecb0c323f5f7f8fcabe47a5d24 Mon Sep 17 00:00:00 2001 From: charitha Date: Fri, 10 Aug 2018 15:22:01 +0530 Subject: [PATCH 108/135] Add siddhi extensions for operation and notification publishing --- pom.xml | 67 +++++- .../AddNotificationFunctionProcessor.java | 169 +++++++++++++ .../device/AddOperationFunctionProcessor.java | 223 ++++++++++++++++++ .../client/OAuthRequestInterceptor.java | 106 +++++++++ .../client/configs/SiddhiExtensionConfig.java | 70 ++++++ .../configs/SiddhiExtensionConfigReader.java | 95 ++++++++ .../device/client/dto/OAuthApplication.java | 50 ++++ .../device/client/dto/OperationRequest.java | 45 ++++ .../client/dto/RegistrationProfile.java | 63 +++++ .../client/exception/APIMClientException.java | 58 +++++ .../exception/APIMClientOAuthException.java | 58 +++++ .../InvalidConfigurationStateException.java | 78 ++++++ .../device/client/services/DCRService.java | 42 ++++ .../client/services/OperationService.java | 43 ++++ .../siddhi/device/utils/ClientUtils.java | 223 ++++++++++++++++++ .../siddhi/device/utils/DeviceUtils.java | 34 +++ src/main/resources/device.siddhiext | 2 + 17 files changed, 1425 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/wso2/extension/siddhi/device/AddNotificationFunctionProcessor.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/AddOperationFunctionProcessor.java create mode 100755 src/main/java/org/wso2/extension/siddhi/device/client/OAuthRequestInterceptor.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfig.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfigReader.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/client/dto/OAuthApplication.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/client/dto/OperationRequest.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/client/dto/RegistrationProfile.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientException.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientOAuthException.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/client/exception/InvalidConfigurationStateException.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/client/services/DCRService.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/client/services/OperationService.java create mode 100644 src/main/java/org/wso2/extension/siddhi/device/utils/ClientUtils.java diff --git a/pom.xml b/pom.xml index 2246024c9..43570e890 100644 --- a/pom.xml +++ b/pom.xml @@ -55,6 +55,42 @@ org.json.wso2 json + + org.wso2.carbon.devicemgt + org.wso2.carbon.identity.jwt.client.extension + + + io.github.openfeign + feign-core + + + io.github.openfeign + feign-jaxrs + + + io.github.openfeign + feign-gson + + + io.github.openfeign + feign-slf4j + + + com.squareup.okhttp3 + okhttp + + + com.squareup.okio + okio + + + io.github.openfeign + feign-okhttp + + + javax.ws.rs + jsr311-api + com.h2database.wso2 h2-database-engine @@ -125,14 +161,43 @@ org.wso2.extension.siddhi.device.* + feign, + feign.codec, + feign.auth, + feign.gson, + feign.slf4j, + javax.net.ssl, + javax.xml, + javax.xml.bind, + javax.xml.bind.annotation, + javax.xml.parsers;resolution:=optional, + org.apache.commons.lang, + org.w3c.dom, + org.wso2.carbon.base, + org.wso2.carbon.utils, + org.wso2.carbon.user.api, org.json;version="${orbit.version.json.range}", org.wso2.siddhi.core.*, org.wso2.siddhi.query.api.*, org.wso2.carbon.device.mgt.core.*, org.wso2.carbon.device.mgt.common.*, + org.wso2.carbon.identity.jwt.client.*, org.apache.commons.logging, - org.wso2.carbon.context + org.wso2.carbon.context, + android.util;resolution:=optional, + javax.annotation;resolution:=optional, + javax.net;resolution:=optional, + javax.security.auth.x500;resolution:=optional, + javax.crypto;resolution:=optional, + javax.crypto.spec;resolution:=optional + + jsr311-api, + feign-jaxrs, + feign-okhttp, + okhttp, + okio + diff --git a/src/main/java/org/wso2/extension/siddhi/device/AddNotificationFunctionProcessor.java b/src/main/java/org/wso2/extension/siddhi/device/AddNotificationFunctionProcessor.java new file mode 100644 index 000000000..cc48643b8 --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/AddNotificationFunctionProcessor.java @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; +import org.wso2.carbon.device.mgt.common.notification.mgt.Notification; +import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException; +import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementService; +import org.wso2.extension.siddhi.device.utils.DeviceUtils; +import org.wso2.siddhi.core.config.ExecutionPlanContext; +import org.wso2.siddhi.core.exception.ExecutionPlanRuntimeException; +import org.wso2.siddhi.core.executor.ExpressionExecutor; +import org.wso2.siddhi.core.query.processor.stream.function.StreamFunctionProcessor; +import org.wso2.siddhi.query.api.definition.AbstractDefinition; +import org.wso2.siddhi.query.api.definition.Attribute; +import org.wso2.siddhi.query.api.exception.ExecutionPlanValidationException; + +import java.util.ArrayList; +import java.util.List; + +public class AddNotificationFunctionProcessor extends StreamFunctionProcessor { + + private static final Log log = LogFactory.getLog(AddNotificationFunctionProcessor.class); + + /** + * The init method of the StreamProcessor, this method will be called before other methods + * + * @param abstractDefinition the incoming stream definition + * @param attributeExpressionExecutors the executors of each function parameters + * @param executionPlanContext the context of the execution plan + * @return the additional output attributes introduced by the function + */ + @Override + protected List init(AbstractDefinition abstractDefinition, + ExpressionExecutor[] attributeExpressionExecutors, + ExecutionPlanContext executionPlanContext) { + if (attributeExpressionExecutors.length != 3) { + throw new ExecutionPlanValidationException( + "Invalid no of arguments passed to device:addNotification() function, required 3 but found " + + attributeExpressionExecutors.length); + } + if (attributeExpressionExecutors[0].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the first argument (deviceIdentifier) of device:addNotification() " + + "function, required " + Attribute.Type.STRING + " as deviceIdentifier, but found " + + attributeExpressionExecutors[0].getReturnType().toString()); + } + if (attributeExpressionExecutors[1].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the second argument (deviceType) of device:addNotification() " + + "function, required " + Attribute.Type.STRING + " as deviceType, but found " + + attributeExpressionExecutors[1].getReturnType().toString()); + } + if (attributeExpressionExecutors[2].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the third argument (description) of device:addNotification() " + + "function, required " + Attribute.Type.STRING + " as description, but found " + + attributeExpressionExecutors[2].getReturnType().toString()); + } + ArrayList attributes = new ArrayList<>(); + attributes.add(new Attribute("notified", Attribute.Type.BOOL)); + return attributes; + } + + /** + * The process method of the StreamFunction, used when more than one function parameters are provided + * + * @param data the data values for the function parameters + * @return the data for additional output attributes introduced by the function + */ + @Override + protected Object[] process(Object[] data) { + if (data[0] == null || data[1] == null || data[2] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:addNotification() function. " + + "Neither of any three arguments cannot be null"); + } + boolean isNotified = false; + String deviceId = (String) data[0]; + String deviceType = (String) data[1]; + String description = (String) data[2]; + Notification notification = new Notification(); + notification.setStatus(Notification.Status.NEW.name()); + notification.setDeviceIdentifier(deviceId); + notification.setDeviceType(deviceType); + notification.setDescription(description); + + NotificationManagementService notificationManagementService = DeviceUtils.getNotificationManagementService(); + try { + isNotified = notificationManagementService.addNotification(new DeviceIdentifier(deviceId, deviceType), notification); + } catch (NotificationManagementException e) { + log.error("Error occurred while adding notification for " + deviceType + " device with id " + deviceId, e); + } + + return new Object[]{isNotified}; + } + + /** + * The process method of the StreamFunction, used when zero or one function parameter is provided + * + * @param data null if the function parameter count is zero or runtime data value of the function parameter + * @return the data for additional output attribute introduced by the function + */ + @Override + protected Object[] process(Object data) { + return new Object[0]; + } + + /** + * This will be called only once and this can be used to acquire + * required resources for the processing element. + * This will be called after initializing the system and before + * starting to process the events. + */ + @Override + public void start() { + + } + + /** + * This will be called only once and this can be used to release + * the acquired resources for processing. + * This will be called before shutting down the system. + */ + @Override + public void stop() { + + } + + /** + * Used to collect the serializable state of the processing element, that need to be + * persisted for the reconstructing the element to the same state on a different point of time + * + * @return stateful objects of the processing element as an array + */ + @Override + public Object[] currentState() { + return new Object[0]; + } + + /** + * Used to restore serialized state of the processing element, for reconstructing + * the element to the same state as if was on a previous point of time. + * + * @param objects the stateful objects of the element as an array on + * the same order provided by currentState(). + */ + @Override + public void restoreState(Object[] objects) { + //Since there's no need to maintain a state, nothing needs to be done here. + } +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/AddOperationFunctionProcessor.java b/src/main/java/org/wso2/extension/siddhi/device/AddOperationFunctionProcessor.java new file mode 100644 index 000000000..f3abc1a99 --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/AddOperationFunctionProcessor.java @@ -0,0 +1,223 @@ +/* + * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device; + +import feign.Feign; +import feign.Logger; +import feign.gson.GsonDecoder; +import feign.gson.GsonEncoder; +import feign.jaxrs.JAXRSContract; +import feign.okhttp.OkHttpClient; +import feign.slf4j.Slf4jLogger; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.json.JSONArray; +import org.wso2.carbon.device.mgt.common.operation.mgt.Activity; +import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; +import org.wso2.extension.siddhi.device.client.OAuthRequestInterceptor; +import org.wso2.extension.siddhi.device.client.configs.SiddhiExtensionConfigReader; +import org.wso2.extension.siddhi.device.client.dto.OperationRequest; +import org.wso2.extension.siddhi.device.client.services.OperationService; +import org.wso2.extension.siddhi.device.utils.ClientUtils; +import org.wso2.siddhi.core.config.ExecutionPlanContext; +import org.wso2.siddhi.core.exception.ExecutionPlanRuntimeException; +import org.wso2.siddhi.core.executor.ExpressionExecutor; +import org.wso2.siddhi.core.query.processor.stream.function.StreamFunctionProcessor; +import org.wso2.siddhi.query.api.definition.AbstractDefinition; +import org.wso2.siddhi.query.api.definition.Attribute; +import org.wso2.siddhi.query.api.exception.ExecutionPlanValidationException; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class AddOperationFunctionProcessor extends StreamFunctionProcessor { + + private static final Log log = LogFactory.getLog(AddOperationFunctionProcessor.class); + private static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss"; + private static final String DEVICE_MGT_BASE_CONTEXT = "/api/device-mgt/v1.0"; + private OperationService operationService; + + public AddOperationFunctionProcessor() { + operationService = Feign.builder().client(new OkHttpClient(ClientUtils.getSSLClient())) + .logger(new Slf4jLogger()) + .logLevel(Logger.Level.FULL).requestInterceptor(new OAuthRequestInterceptor()) + .contract(new JAXRSContract()).encoder(new GsonEncoder()).decoder(new GsonDecoder()) + .target(OperationService.class, ClientUtils.replaceProperties( + SiddhiExtensionConfigReader.getInstance().getConfig().getGatewayEndpoint() + + DEVICE_MGT_BASE_CONTEXT)); + } + + /** + * The init method of the StreamProcessor, this method will be called before other methods + * + * @param abstractDefinition the incoming stream definition + * @param attributeExpressionExecutors the executors of each function parameters + * @param executionPlanContext the context of the execution plan + * @return the additional output attributes introduced by the function + */ + @Override + protected List init(AbstractDefinition abstractDefinition, + ExpressionExecutor[] attributeExpressionExecutors, + ExecutionPlanContext executionPlanContext) { + if (attributeExpressionExecutors.length != 6) { + throw new ExecutionPlanValidationException( + "Invalid no of arguments passed to device:addOperation() function, required 3 but found " + + attributeExpressionExecutors.length); + } + if (attributeExpressionExecutors[0].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the first argument (deviceIdentifiers) of device:addOperation() " + + "function, required " + Attribute.Type.STRING + " as deviceIdentifiers, but found " + + attributeExpressionExecutors[0].getReturnType().toString()); + } + if (attributeExpressionExecutors[1].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the second argument (deviceType) of device:addOperation() " + + "function, required " + Attribute.Type.STRING + " as deviceType, but found " + + attributeExpressionExecutors[1].getReturnType().toString()); + } + if (attributeExpressionExecutors[2].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the third argument (code) of device:addOperation() " + + "function, required " + Attribute.Type.STRING + " as code, but found " + + attributeExpressionExecutors[2].getReturnType().toString()); + } + if (attributeExpressionExecutors[3].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the fourth argument (type) of device:addOperation() " + + "function, required " + Attribute.Type.STRING + " as type, but found " + + attributeExpressionExecutors[3].getReturnType().toString()); + } + if (attributeExpressionExecutors[4].getReturnType() != Attribute.Type.BOOL) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the fifth argument (isEnabled) of device:addOperation() " + + "function, required " + Attribute.Type.BOOL + " as isEnabled, but found " + + attributeExpressionExecutors[4].getReturnType().toString()); + } + if (attributeExpressionExecutors[5].getReturnType() != Attribute.Type.STRING) { + throw new ExecutionPlanValidationException( + "Invalid parameter type found for the fifth argument (payLoad) of device:addOperation() " + + "function, required " + Attribute.Type.STRING + " as payLoad, but found " + + attributeExpressionExecutors[5].getReturnType().toString()); + } + ArrayList attributes = new ArrayList<>(); + attributes.add(new Attribute("activity_id", Attribute.Type.STRING)); + return attributes; + } + + /** + * The process method of the StreamFunction, used when more than one function parameters are provided + * + * @param data the data values for the function parameters + * @return the data for additional output attributes introduced by the function + */ + @Override + protected Object[] process(Object[] data) { + if (data[0] == null || data[1] == null || data[2] == null || data[3] == null || data[4] == null || data[5] == null) { + throw new ExecutionPlanRuntimeException("Invalid input given to device:addOperation() function. " + + "Neither of any three arguments cannot be null"); + } + + JSONArray deviceIds = new JSONArray((String) data[0]); + String deviceType = (String) data[1]; + List deviceIdentifiers = new ArrayList<>(); + for (int i = 0; i < deviceIds.length(); i++) { + deviceIdentifiers.add(deviceIds.getString(i)); + } + + Operation operation = new Operation(); + operation.setType(Operation.Type.valueOf((String) data[3])); + operation.setStatus(Operation.Status.PENDING); + operation.setCode((String) data[2]); + operation.setEnabled((Boolean) data[4]); + String payloadString = (String) data[5]; + operation.setPayLoad(payloadString.replaceAll("'", "\"")); + + String date = new SimpleDateFormat(DATE_FORMAT_NOW).format(new Date()); + operation.setCreatedTimeStamp(date); + + OperationRequest operationRequest = new OperationRequest(); + operationRequest.setDeviceIdentifiers(deviceIdentifiers); + operationRequest.setOperation(operation); + try { + Activity activity = operationService.addOperation(deviceType, operationRequest); + return new Object[]{activity.getActivityId()}; + } catch (Exception e) { + log.error("Error occurred while adding the operation " + operation.toString(), e); + return new Object[]{null}; + } + } + + /** + * The process method of the StreamFunction, used when zero or one function parameter is provided + * + * @param data null if the function parameter count is zero or runtime data value of the function parameter + * @return the data for additional output attribute introduced by the function + */ + @Override + protected Object[] process(Object data) { + return new Object[0]; + } + + /** + * This will be called only once and this can be used to acquire + * required resources for the processing element. + * This will be called after initializing the system and before + * starting to process the events. + */ + @Override + public void start() { + + } + + /** + * This will be called only once and this can be used to release + * the acquired resources for processing. + * This will be called before shutting down the system. + */ + @Override + public void stop() { + + } + + /** + * Used to collect the serializable state of the processing element, that need to be + * persisted for the reconstructing the element to the same state on a different point of time + * + * @return stateful objects of the processing element as an array + */ + @Override + public Object[] currentState() { + return new Object[0]; + } + + /** + * Used to restore serialized state of the processing element, for reconstructing + * the element to the same state as if was on a previous point of time. + * + * @param objects the stateful objects of the element as an array on + * the same order provided by currentState(). + */ + @Override + public void restoreState(Object[] objects) { + //Since there's no need to maintain a state, nothing needs to be done here. + } +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/OAuthRequestInterceptor.java b/src/main/java/org/wso2/extension/siddhi/device/client/OAuthRequestInterceptor.java new file mode 100755 index 000000000..7ef87863d --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/client/OAuthRequestInterceptor.java @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device.client; + +import feign.Feign; +import feign.Logger; +import feign.RequestInterceptor; +import feign.RequestTemplate; +import feign.auth.BasicAuthRequestInterceptor; +import feign.gson.GsonDecoder; +import feign.gson.GsonEncoder; +import feign.jaxrs.JAXRSContract; +import feign.okhttp.OkHttpClient; +import feign.slf4j.Slf4jLogger; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.base.MultitenantConstants; +import org.wso2.carbon.context.PrivilegedCarbonContext; +import org.wso2.carbon.identity.jwt.client.extension.JWTClient; +import org.wso2.carbon.identity.jwt.client.extension.dto.AccessTokenInfo; +import org.wso2.carbon.identity.jwt.client.extension.exception.JWTClientException; +import org.wso2.carbon.user.api.UserStoreException; +import org.wso2.extension.siddhi.device.client.configs.SiddhiExtensionConfigReader; +import org.wso2.extension.siddhi.device.client.dto.OAuthApplication; +import org.wso2.extension.siddhi.device.client.dto.RegistrationProfile; +import org.wso2.extension.siddhi.device.client.exception.APIMClientOAuthException; +import org.wso2.extension.siddhi.device.client.services.DCRService; +import org.wso2.extension.siddhi.device.utils.ClientUtils; +import org.wso2.extension.siddhi.device.utils.DeviceUtils; + +/** + * This is a request interceptor to add oauth token header. + */ +public class OAuthRequestInterceptor implements RequestInterceptor { + + private static final String APPLICATION_NAME = "siddhi_extension_client"; + private static final String REQUIRED_SCOPES = "perm:devices:operations"; + private static final String[] API_TAGS = {"device_management"}; + private DCRService dcrService; + private static OAuthApplication oAuthApplication; + private static final Log log = LogFactory.getLog(OAuthRequestInterceptor.class); + + /** + * Creates an interceptor that authenticates all requests. + */ + public OAuthRequestInterceptor() { + String username = SiddhiExtensionConfigReader.getInstance().getConfig().getUsername(); + String password = SiddhiExtensionConfigReader.getInstance().getConfig().getPassword(); + dcrService = Feign.builder().client(new OkHttpClient(ClientUtils.getSSLClient())).logger(new Slf4jLogger()) + .logLevel(Logger.Level.FULL) + .requestInterceptor(new BasicAuthRequestInterceptor(username, password)) + .contract(new JAXRSContract()).encoder(new GsonEncoder()).decoder(new GsonDecoder()) + .target(DCRService.class, ClientUtils.replaceProperties( + SiddhiExtensionConfigReader.getInstance().getConfig().getDcrEndpoint())); + } + + @Override + public void apply(RequestTemplate template) { + if (oAuthApplication == null) { + RegistrationProfile registrationProfile = new RegistrationProfile(); + registrationProfile.setApiApplicationName(APPLICATION_NAME); + registrationProfile.setIsAllowedToAllDomains(true); + registrationProfile.setTags(API_TAGS); + oAuthApplication = dcrService.register(registrationProfile); + } + String tenantDomain = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain(); + try { + String username = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUserRealm().getRealmConfiguration().getAdminUserName(); + if (!tenantDomain.equals(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME)) { + username = username + "@" + tenantDomain; + } + JWTClient jwtClient = DeviceUtils.getJWTClientManagerService().getJWTClient(); + AccessTokenInfo tenantBasedAccessTokenInfo = jwtClient.getAccessToken(oAuthApplication.getClientId(), + oAuthApplication.getClientSecret(), username, REQUIRED_SCOPES); + if (tenantBasedAccessTokenInfo.getAccessToken() != null) { + String headerValue = "Bearer " + tenantBasedAccessTokenInfo.getAccessToken(); + template.header("Authorization", headerValue); + } + } catch (JWTClientException e) { + String msg = "Failed to retrieve oauth token using jwt"; + log.error(msg, e); + throw new APIMClientOAuthException(msg, e); + } catch (UserStoreException e) { + String msg = "Unable to retrieve realm config for tenant " + tenantDomain; + log.error(msg, e); + throw new APIMClientOAuthException(msg, e); + } + } + +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfig.java b/src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfig.java new file mode 100644 index 000000000..0021ca690 --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfig.java @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device.client.configs; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +/** + * This holds the configuration api manager integration. + */ +@XmlRootElement(name = "SiddhiExtensionConfiguration") +public class SiddhiExtensionConfig { + + String dcrEndpoint; + String gatewayEndpoint; + String username; + String password; + + @XmlElement(name = "DCREndpoint", required = true) + public String getDcrEndpoint() { + return dcrEndpoint; + } + + public void setDcrEndpoint(String dcrEndpoint) { + this.dcrEndpoint = dcrEndpoint; + } + + @XmlElement(name = "GatewayEndpoint", required = true) + public String getGatewayEndpoint() { + return gatewayEndpoint; + } + + public void setGatewayEndpoint(String gatewayEndpoint) { + this.gatewayEndpoint = gatewayEndpoint; + } + + @XmlElement(name = "Username", required = true) + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + @XmlElement(name = "Password", required = true) + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfigReader.java b/src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfigReader.java new file mode 100644 index 000000000..5a2211463 --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfigReader.java @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device.client.configs; + +import org.w3c.dom.Document; +import org.wso2.carbon.utils.CarbonUtils; +import org.wso2.extension.siddhi.device.client.exception.APIMClientException; +import org.wso2.extension.siddhi.device.client.exception.InvalidConfigurationStateException; + +import javax.xml.XMLConstants; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import java.io.File; + +/** + * This holds the configuration parser for api integration.xml + */ +public class SiddhiExtensionConfigReader { + + private static SiddhiExtensionConfig config; + private static SiddhiExtensionConfigReader configReader = new SiddhiExtensionConfigReader(); + private static boolean isInitialized = false; + private static final String SIDDHI_INTEGRATION_CONFIG_PATH = + CarbonUtils.getCarbonConfigDirPath() + File.separator + "siddhi-integration.xml"; + + private SiddhiExtensionConfigReader() { + + } + + private static String apimIntegrationXmlFilePath = ""; + + //TOD file may be a part of another file + public static SiddhiExtensionConfigReader getInstance() { + if (!isInitialized) { + try { + init(); + } catch (APIMClientException e) { + throw new InvalidConfigurationStateException("Webapp Authenticator Configuration is not " + + "initialized properly"); + } + } + return configReader; + } + + public static void init() throws APIMClientException { + try { + File siddhiConfigFile = new File(SIDDHI_INTEGRATION_CONFIG_PATH); + Document doc = convertToDocument(siddhiConfigFile); + + JAXBContext ctx = JAXBContext.newInstance(SiddhiExtensionConfig.class); + Unmarshaller unmarshaller = ctx.createUnmarshaller(); + config = (SiddhiExtensionConfig) unmarshaller.unmarshal(doc); + isInitialized = true; + } catch (JAXBException e) { + throw new APIMClientException("Error occurred while un-marshalling SiddhiExtensionConfig", e); + } + } + + private static Document convertToDocument(File file) throws APIMClientException { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setNamespaceAware(true); + try { + factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); + factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + DocumentBuilder docBuilder = factory.newDocumentBuilder(); + return docBuilder.parse(file); + } catch (Exception e) { + throw new APIMClientException("Error occurred while parsing file 'apim-integration.xml' to a org.w3c.dom.Document", e); + } + } + + public SiddhiExtensionConfig getConfig() { + return config; + } + +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/dto/OAuthApplication.java b/src/main/java/org/wso2/extension/siddhi/device/client/dto/OAuthApplication.java new file mode 100644 index 000000000..46c72e9e3 --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/client/dto/OAuthApplication.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device.client.dto; + +public class OAuthApplication { + + private String client_id; + private String client_secret; + + public String getClientId() { + return client_id; + } + + public void setClientId(String clientId) { + this.client_id = clientId; + } + + public String getClientSecret() { + return client_secret; + } + + public void setClientSecret(String clientSecret) { + this.client_secret = clientSecret; + } + + @Override + public String toString() { + return "OAuthApplication {\n" + + " clientId: " + client_id + "\n" + + " clientSecret: " + client_secret + "\n" + + "}\n"; + } + +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/dto/OperationRequest.java b/src/main/java/org/wso2/extension/siddhi/device/client/dto/OperationRequest.java new file mode 100644 index 000000000..bd3d919e3 --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/client/dto/OperationRequest.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device.client.dto; + +import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; + +import java.util.List; + +public class OperationRequest { + + private List deviceIdentifiers; + private Operation operation; + + public List getDeviceIdentifiers() { + return deviceIdentifiers; + } + + public void setDeviceIdentifiers(List deviceIdentifiers) { + this.deviceIdentifiers = deviceIdentifiers; + } + + public Operation getOperation() { + return operation; + } + + public void setOperation(Operation operation) { + this.operation = operation; + } +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/dto/RegistrationProfile.java b/src/main/java/org/wso2/extension/siddhi/device/client/dto/RegistrationProfile.java new file mode 100644 index 000000000..ecb0086de --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/client/dto/RegistrationProfile.java @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device.client.dto; + +/** + * DTO class to be used when registering an ApiM application. + */ + +public class RegistrationProfile { + + private String applicationName; + private String tags[]; + private boolean isAllowedToAllDomains; + private String validityPeriod; + + public String getApplicationName() { + return applicationName; + } + + public void setApiApplicationName(String apiApplicationName) { + this.applicationName = apiApplicationName; + } + + public String[] getTags() { + return tags; + } + + public void setTags(String[] tags) { + this.tags = tags; + } + + public boolean isAllowedToAllDomains() { + return isAllowedToAllDomains; + } + + public void setIsAllowedToAllDomains(boolean isAllowedToAllDomains) { + this.isAllowedToAllDomains = isAllowedToAllDomains; + } + + public String getValidityPeriod() { + return validityPeriod; + } + + public void setValidityPeriod(String validityPeriod) { + this.validityPeriod = validityPeriod; + } +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientException.java b/src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientException.java new file mode 100644 index 000000000..98f3c460b --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientException.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device.client.exception; + +/** + * This holds api client exception. + */ +public class APIMClientException extends Exception { + + private static final long serialVersionUID = -3976392476319079281L; + private String responseReason; + private int responseStatus; + private String methodKey; + + APIMClientException(String methodKey, String reason, int status) { + super("Exception occurred while invoking " + methodKey + " status = " + status + " reason = " + reason); + this.methodKey = methodKey; + this.responseReason = reason; + this.responseStatus = status; + } + + APIMClientException(String message) { + super(message); + } + + public APIMClientException(String message, Exception e) { + super(message, e); + } + + public String getResponseReason() { + return responseReason; + } + + public int getResponseStatus() { + return responseStatus; + } + + public String getMethodKey() { + return methodKey; + } + +} \ No newline at end of file diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientOAuthException.java b/src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientOAuthException.java new file mode 100644 index 000000000..731fa3c25 --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientOAuthException.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device.client.exception; + +/** + * This holds api client exception. + */ +public class APIMClientOAuthException extends RuntimeException { + + private static final long serialVersionUID = -3976392476319079281L; + private String responseReason; + private int responseStatus; + private String methodKey; + + APIMClientOAuthException(String methodKey, String reason, int status) { + super("Exception occurred while invoking " + methodKey + " status = " + status + " reason = " + reason); + this.methodKey = methodKey; + this.responseReason = reason; + this.responseStatus = status; + } + + public APIMClientOAuthException(String message) { + super(message); + } + + public APIMClientOAuthException(String message, Exception e) { + super(message, e); + } + + public String getResponseReason() { + return responseReason; + } + + public int getResponseStatus() { + return responseStatus; + } + + public String getMethodKey() { + return methodKey; + } + +} \ No newline at end of file diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/exception/InvalidConfigurationStateException.java b/src/main/java/org/wso2/extension/siddhi/device/client/exception/InvalidConfigurationStateException.java new file mode 100644 index 000000000..2656fd74b --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/client/exception/InvalidConfigurationStateException.java @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ + +package org.wso2.extension.siddhi.device.client.exception; + +/** + * This error is thrown when there is an issue with the client. + */ +public class InvalidConfigurationStateException extends RuntimeException { + + private static final long serialVersionUID = -3151279311329070397L; + + private String errorMessage; + private int errorCode; + + public InvalidConfigurationStateException(int errorCode, String message) { + super(message); + this.errorCode = errorCode; + } + + public InvalidConfigurationStateException(int errorCode, String message, Throwable cause) { + super(message, cause); + this.errorCode = errorCode; + } + + public int getErrorCode() { + return errorCode; + } + + + public String getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } + + public InvalidConfigurationStateException(String msg, Exception nestedEx) { + super(msg, nestedEx); + setErrorMessage(msg); + } + + public InvalidConfigurationStateException(String message, Throwable cause) { + super(message, cause); + setErrorMessage(message); + } + + public InvalidConfigurationStateException(String msg) { + super(msg); + setErrorMessage(msg); + } + + public InvalidConfigurationStateException() { + super(); + } + + public InvalidConfigurationStateException(Throwable cause) { + super(cause); + } + +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/services/DCRService.java b/src/main/java/org/wso2/extension/siddhi/device/client/services/DCRService.java new file mode 100644 index 000000000..c170f9c5b --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/client/services/DCRService.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device.client.services; + +import org.wso2.extension.siddhi.device.client.dto.OAuthApplication; +import org.wso2.extension.siddhi.device.client.dto.RegistrationProfile; + +import javax.ws.rs.Consumes; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +/** + * DCR Rest resource. + */ +@Path("/") +public interface DCRService { + + // DCR APIs + @POST + @Produces(MediaType.APPLICATION_JSON) + @Consumes(MediaType.APPLICATION_JSON) + OAuthApplication register(RegistrationProfile registrationProfile); + +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/services/OperationService.java b/src/main/java/org/wso2/extension/siddhi/device/client/services/OperationService.java new file mode 100644 index 000000000..9df62e75a --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/client/services/OperationService.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.extension.siddhi.device.client.services; + +import org.wso2.carbon.device.mgt.common.operation.mgt.Activity; +import org.wso2.extension.siddhi.device.client.dto.OperationRequest; + +import javax.ws.rs.Consumes; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +/** + * Add Operation REST resource. + */ +@Path("/devices") +public interface OperationService { + + @POST + @Path("/{type}/operations") + @Produces(MediaType.APPLICATION_JSON) + @Consumes(MediaType.APPLICATION_JSON) + Activity addOperation(@PathParam("type") String type, OperationRequest operationRequest); + +} diff --git a/src/main/java/org/wso2/extension/siddhi/device/utils/ClientUtils.java b/src/main/java/org/wso2/extension/siddhi/device/utils/ClientUtils.java new file mode 100644 index 000000000..f51d9619a --- /dev/null +++ b/src/main/java/org/wso2/extension/siddhi/device/utils/ClientUtils.java @@ -0,0 +1,223 @@ +/* +* Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. +* +* WSO2 Inc. licenses this file to you under the Apache License, +* Version 2.0 (the "License"); you may not use this file except +* in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package org.wso2.extension.siddhi.device.utils; + +import okhttp3.OkHttpClient; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.base.ServerConfiguration; + +import javax.net.ssl.*; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.*; +import java.security.*; +import java.security.cert.CertificateException; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class ClientUtils { + + private static final Log log = LogFactory.getLog(ClientUtils.class); + + private static final String KEY_STORE_TYPE = "JKS"; + /** + * Default truststore type of the client + */ + private static final String TRUST_STORE_TYPE = "JKS"; + /** + * Default keymanager type of the client + */ + private static final String KEY_MANAGER_TYPE = "SunX509"; //Default Key Manager Type + /** + * Default trustmanager type of the client + */ + private static final String TRUST_MANAGER_TYPE = "SunX509"; //Default Trust Manager Type + + private static final String SSLV3 = "SSLv3"; + + private static final String DEFAULT_HOST = "localhost"; + + private static final String DEFAULT_HOST_IP = "127.0.0.1"; + + + //This method is only used if the mb features are within DAS. + public static String replaceProperties(String text) { + String regex = "\\$\\{(.*?)\\}"; + Pattern pattern = Pattern.compile(regex); + Matcher matchPattern = pattern.matcher(text); + while (matchPattern.find()) { + String sysPropertyName = matchPattern.group(1); + String sysPropertyValue = System.getProperty(sysPropertyName); + if (sysPropertyValue != null && !sysPropertyName.isEmpty()) { + text = text.replaceAll("\\$\\{(" + sysPropertyName + ")\\}", sysPropertyValue); + } + } + return text; + } + + public static OkHttpClient getSSLClient() { + + boolean isIgnoreHostnameVerification = Boolean.parseBoolean(System.getProperty("org.wso2" + + ".ignoreHostnameVerification")); + OkHttpClient okHttpClient; + final String proxyHost = System.getProperty("http.proxyHost"); + final String proxyPort = System.getProperty("http.proxyPort"); + final String nonProxyHostsValue = System.getProperty("http.nonProxyHosts"); + + final ProxySelector proxySelector = new ProxySelector() { + @Override + public List select(URI uri) { + List proxyList = new ArrayList<>(); + String host = uri.getHost(); + + if (!StringUtils.isEmpty(host)) { + if (host.startsWith(DEFAULT_HOST_IP) || host.startsWith(DEFAULT_HOST) || StringUtils + .isEmpty(nonProxyHostsValue) || StringUtils.contains(nonProxyHostsValue, host) || + StringUtils.isEmpty(proxyHost) || StringUtils.isEmpty(proxyPort)) { + proxyList.add(Proxy.NO_PROXY); + } else { + proxyList.add(new Proxy(Proxy.Type.HTTP, + new InetSocketAddress(proxyHost, Integer.parseInt(proxyPort)))); + } + } else { + log.error("Host is null. Host could not be empty or null"); + } + return proxyList; + } + + @Override + public void connectFailed(URI uri, SocketAddress sa, IOException ioe) { + throw new UnsupportedOperationException("Not supported yet."); + } + }; + + X509TrustManager trustAllCerts = new X509TrustManager() { + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return new java.security.cert.X509Certificate[0]; + } + public void checkClientTrusted( + java.security.cert.X509Certificate[] certs, String authType) { + } + public void checkServerTrusted( + java.security.cert.X509Certificate[] certs, String authType) { + } + }; + if(isIgnoreHostnameVerification) { + okHttpClient = new OkHttpClient.Builder() + .sslSocketFactory(getSimpleTrustedSSLSocketFactory(), trustAllCerts) + .hostnameVerifier(new HostnameVerifier() { + @Override + public boolean verify(String s, SSLSession sslSession) { + return true; + } + }).proxySelector(proxySelector).build(); + return okHttpClient; + }else { + SSLSocketFactory trustedSSLSocketFactory = getTrustedSSLSocketFactory(); + okHttpClient = new OkHttpClient.Builder().sslSocketFactory(trustedSSLSocketFactory) + .proxySelector(proxySelector).build(); + return okHttpClient; + } + } + + private static SSLSocketFactory getSimpleTrustedSSLSocketFactory() { + try { + TrustManager[] trustAllCerts = new TrustManager[]{ + new X509TrustManager() { + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return null; + } + public void checkClientTrusted( + java.security.cert.X509Certificate[] certs, String authType) { + } + public void checkServerTrusted( + java.security.cert.X509Certificate[] certs, String authType) { + } + } + }; + SSLContext sc = SSLContext.getInstance("SSL"); + sc.init(null, trustAllCerts, new java.security.SecureRandom()); + return sc.getSocketFactory(); + } catch (KeyManagementException | NoSuchAlgorithmException e) { + return null; + } + + } + + private static SSLSocketFactory getTrustedSSLSocketFactory() { + try { + String keyStorePassword = ServerConfiguration.getInstance().getFirstProperty("Security.KeyStore.Password"); + String keyStoreLocation = ServerConfiguration.getInstance().getFirstProperty("Security.KeyStore.Location"); + String trustStorePassword = ServerConfiguration.getInstance().getFirstProperty( + "Security.TrustStore.Password"); + String trustStoreLocation = ServerConfiguration.getInstance().getFirstProperty( + "Security.TrustStore.Location"); + KeyStore keyStore = loadKeyStore(keyStoreLocation,keyStorePassword,KEY_STORE_TYPE); + KeyStore trustStore = loadTrustStore(trustStoreLocation,trustStorePassword); + + return initSSLConnection(keyStore,keyStorePassword,trustStore); + } catch (KeyManagementException | NoSuchAlgorithmException | KeyStoreException + |CertificateException | IOException | UnrecoverableKeyException e) { + log.error("Error while creating the SSL socket factory due to "+e.getMessage(),e); + return null; + } + + } + + private static SSLSocketFactory initSSLConnection(KeyStore keyStore,String keyStorePassword,KeyStore trustStore) throws NoSuchAlgorithmException, UnrecoverableKeyException, + KeyStoreException, KeyManagementException { + KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KEY_MANAGER_TYPE); + keyManagerFactory.init(keyStore, keyStorePassword.toCharArray()); + TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TRUST_MANAGER_TYPE); + trustManagerFactory.init(trustStore); + + // Create and initialize SSLContext for HTTPS communication + SSLContext sslContext = SSLContext.getInstance(SSLV3); + sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), null); + SSLContext.setDefault(sslContext); + return sslContext.getSocketFactory(); + } + + + private static KeyStore loadKeyStore(String keyStorePath, String ksPassword,String type) + throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException { + InputStream fileInputStream = null; + try { + char[] keypassChar = ksPassword.toCharArray(); + KeyStore keyStore = KeyStore.getInstance(type); + fileInputStream = new FileInputStream(keyStorePath); + keyStore.load(fileInputStream, keypassChar); + return keyStore; + } finally { + if (fileInputStream != null) { + fileInputStream.close(); + } + } + } + + private static KeyStore loadTrustStore(String trustStorePath, String tsPassword) + throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException { + return loadKeyStore(trustStorePath,tsPassword,TRUST_STORE_TYPE); + } +} \ No newline at end of file diff --git a/src/main/java/org/wso2/extension/siddhi/device/utils/DeviceUtils.java b/src/main/java/org/wso2/extension/siddhi/device/utils/DeviceUtils.java index 897e026c6..b7109c8b1 100644 --- a/src/main/java/org/wso2/extension/siddhi/device/utils/DeviceUtils.java +++ b/src/main/java/org/wso2/extension/siddhi/device/utils/DeviceUtils.java @@ -20,8 +20,10 @@ package org.wso2.extension.siddhi.device.utils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.context.PrivilegedCarbonContext; +import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementService; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService; +import org.wso2.carbon.identity.jwt.client.extension.service.JWTClientManagerService; /** * This class holds utility methods to retrieve data. @@ -31,6 +33,8 @@ public class DeviceUtils { private static Log log = LogFactory.getLog(DeviceUtils.class); private static DeviceManagementProviderService deviceManagementProviderService; private static GroupManagementProviderService groupManagementProviderService; + private static NotificationManagementService notificationManagementService; + private static JWTClientManagerService jwtClientManagerService; private DeviceUtils(){ } @@ -64,4 +68,34 @@ public class DeviceUtils { } return groupManagementProviderService; } + + public static NotificationManagementService getNotificationManagementService() { + if (notificationManagementService != null) { + return notificationManagementService; + } + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + notificationManagementService = + (NotificationManagementService) ctx.getOSGiService(NotificationManagementService.class, null); + if (notificationManagementService == null) { + String msg = "Notification Management service has not initialized."; + log.error(msg); + throw new IllegalStateException(msg); + } + return notificationManagementService; + } + + public static JWTClientManagerService getJWTClientManagerService() { + if (jwtClientManagerService != null) { + return jwtClientManagerService; + } + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + jwtClientManagerService = + (JWTClientManagerService) ctx.getOSGiService(JWTClientManagerService.class, null); + if (jwtClientManagerService == null) { + String msg = "JWTClient Manager service has not initialized."; + log.error(msg); + throw new IllegalStateException(msg); + } + return jwtClientManagerService; + } } diff --git a/src/main/resources/device.siddhiext b/src/main/resources/device.siddhiext index 84dd50b95..8b9d47d9f 100644 --- a/src/main/resources/device.siddhiext +++ b/src/main/resources/device.siddhiext @@ -22,3 +22,5 @@ hasDevicesOfUser=org.wso2.extension.siddhi.device.HasDevicesOfUserFunctionExecut getDevicesOfStatus=org.wso2.extension.siddhi.device.GetDevicesOfStatusFunctionExecutor hasDevicesOfStatus=org.wso2.extension.siddhi.device.HasDevicesOfStatusFunctionExecutor isEnrolled=org.wso2.extension.siddhi.device.IsEnrolledFunctionExecutor +addNotification=org.wso2.extension.siddhi.device.AddNotificationFunctionProcessor +addOperation=org.wso2.extension.siddhi.device.AddOperationFunctionProcessor \ No newline at end of file From c29c43444edce4099492d64c3775e5da56b43bab Mon Sep 17 00:00:00 2001 From: charitha Date: Mon, 13 Aug 2018 12:03:47 +0530 Subject: [PATCH 109/135] Refactoring --- .../siddhi/device/AddNotificationFunctionProcessor.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/wso2/extension/siddhi/device/AddNotificationFunctionProcessor.java b/src/main/java/org/wso2/extension/siddhi/device/AddNotificationFunctionProcessor.java index cc48643b8..ec9cfd347 100644 --- a/src/main/java/org/wso2/extension/siddhi/device/AddNotificationFunctionProcessor.java +++ b/src/main/java/org/wso2/extension/siddhi/device/AddNotificationFunctionProcessor.java @@ -106,7 +106,10 @@ public class AddNotificationFunctionProcessor extends StreamFunctionProcessor { try { isNotified = notificationManagementService.addNotification(new DeviceIdentifier(deviceId, deviceType), notification); } catch (NotificationManagementException e) { - log.error("Error occurred while adding notification for " + deviceType + " device with id " + deviceId, e); + // We are not throwing this exception to siddhi runtime as it will break the complete siddhi execution + // flow for the event stream coming in. + log.error("Error occurred while adding notification '" + notification.toString() + "' for " + + deviceType + " device with id " + deviceId, e); } return new Object[]{isNotified}; From 4a9eef212c07aad310aa1864ad231dbf8c46ee25 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 13 Aug 2018 08:48:16 +0000 Subject: [PATCH 110/135] [maven-release-plugin] prepare release v4.1.7 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 43570e890..c11c71c42 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.7-SNAPSHOT + 4.1.7 ../pom.xml From 20e924ee11220d6df64da66d9ee1e7738606c8d9 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 13 Aug 2018 08:48:27 +0000 Subject: [PATCH 111/135] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c11c71c42..2ccb2a558 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.7 + 4.1.8-SNAPSHOT ../pom.xml From 50b7090e658295332ba778a6b25733745733d8c5 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 22 Aug 2018 15:06:51 +0000 Subject: [PATCH 112/135] [maven-release-plugin] prepare release v4.1.8 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2ccb2a558..23a524a54 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.8-SNAPSHOT + 4.1.8 ../pom.xml From 129bdd60a92ebae0671794dcd2960d3e7b94eeba Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 22 Aug 2018 15:07:02 +0000 Subject: [PATCH 113/135] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 23a524a54..2f5550a18 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.8 + 4.1.9-SNAPSHOT ../pom.xml From f306c8d57352850b73c43776d903478cd7b09a90 Mon Sep 17 00:00:00 2001 From: Madhawa Perera Date: Tue, 18 Sep 2018 14:23:04 +0530 Subject: [PATCH 114/135] version bump from 4.1.9 to 4.1.11 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2f5550a18..e31018ead 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.9-SNAPSHOT + 4.1.11-SNAPSHOT ../pom.xml From e8f8cb003fcdb0d3c9d8b047180416c127e58f7e Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Tue, 18 Sep 2018 09:24:03 +0000 Subject: [PATCH 115/135] [WSO2 Release] [Jenkins #3178] [Release 4.1.11] prepare release v4.1.11 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e31018ead..89d4eed84 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.11-SNAPSHOT + 4.1.11 ../pom.xml From d8d3f19b375ff7e94fd461b4af8f00071ded254e Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Tue, 18 Sep 2018 09:24:16 +0000 Subject: [PATCH 116/135] [WSO2 Release] [Jenkins #3178] [Release 4.1.11] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 89d4eed84..8049d02d9 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.11 + 4.1.12-SNAPSHOT ../pom.xml From 0323cc5bb2443d33973ec197159654d03e529de6 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 8 Oct 2018 05:27:27 +0000 Subject: [PATCH 117/135] [WSO2 Release] [Jenkins #3180] [Release 4.1.12] prepare release v4.1.12 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8049d02d9..b06514a96 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.12-SNAPSHOT + 4.1.12 ../pom.xml From 5a86f8c31d3daae81b059cf80ffb58233fe78517 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Mon, 8 Oct 2018 05:27:38 +0000 Subject: [PATCH 118/135] [WSO2 Release] [Jenkins #3180] [Release 4.1.12] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b06514a96..a09eabe85 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.12 + 4.1.13-SNAPSHOT ../pom.xml From f46e8ee96600ece7668cec84d70a464fd16d04e6 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 10 Oct 2018 13:04:41 +0000 Subject: [PATCH 119/135] [WSO2 Release] [Jenkins #3182] [Release 4.1.13] prepare release v4.1.13 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a09eabe85..fc369c1da 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.13-SNAPSHOT + 4.1.13 ../pom.xml From d2d9e932cdca158cce55bdb49b9a57b1b848c899 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 10 Oct 2018 13:04:53 +0000 Subject: [PATCH 120/135] [WSO2 Release] [Jenkins #3182] [Release 4.1.13] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fc369c1da..a72a704c5 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.13 + 4.1.14-SNAPSHOT ../pom.xml From 45adbcb7ccbf76eb7eee8964bfe6a5fefbe3b6b5 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 19 Oct 2018 17:58:14 +0000 Subject: [PATCH 121/135] [WSO2 Release] [Jenkins #3184] [Release 4.1.14] prepare release v4.1.14 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a72a704c5..6cc5ecfbe 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.14-SNAPSHOT + 4.1.14 ../pom.xml From eec22d5c96d62be0cef10f9fd7cd05db2eefad97 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Fri, 19 Oct 2018 17:58:26 +0000 Subject: [PATCH 122/135] [WSO2 Release] [Jenkins #3184] [Release 4.1.14] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6cc5ecfbe..81e2938d5 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.14 + 4.1.15-SNAPSHOT ../pom.xml From 65604d8616f18fe54a42f8ff4b6b12ef3526cbd9 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Tue, 23 Oct 2018 06:40:17 +0000 Subject: [PATCH 123/135] [WSO2 Release] [Jenkins #3186] [Release 4.1.15] prepare release v4.1.15 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 81e2938d5..5b2308844 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.15-SNAPSHOT + 4.1.15 ../pom.xml From 5a866d808a59e9be93406568bae7d6902ca94df1 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Tue, 23 Oct 2018 06:40:28 +0000 Subject: [PATCH 124/135] [WSO2 Release] [Jenkins #3186] [Release 4.1.15] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5b2308844..5b98d24da 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.15 + 4.1.16-SNAPSHOT ../pom.xml From 2f04aa1a258eb04f14fdc799f5174b9d316107e9 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 24 Oct 2018 05:47:15 +0000 Subject: [PATCH 125/135] [WSO2 Release] [Jenkins #3190] [Release 4.1.16] prepare release v4.1.16 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5b98d24da..e0bb363ac 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.16-SNAPSHOT + 4.1.16 ../pom.xml From a8ac883ec0d0f77998858b4ef0bd76bfe226c9bb Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 24 Oct 2018 05:47:27 +0000 Subject: [PATCH 126/135] [WSO2 Release] [Jenkins #3190] [Release 4.1.16] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e0bb363ac..76bbfb41e 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.16 + 4.1.17-SNAPSHOT ../pom.xml From 32d6270ca2d50396585528b140dcdc40248f86b6 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 24 Oct 2018 16:30:51 +0000 Subject: [PATCH 127/135] [WSO2 Release] [Jenkins #3192] [Release 4.1.17] prepare release v4.1.17 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 76bbfb41e..7e6a6a76a 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.17-SNAPSHOT + 4.1.17 ../pom.xml From 9f8f6ec7a66d58475e74644c3656f57b61071d2b Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 24 Oct 2018 16:31:03 +0000 Subject: [PATCH 128/135] [WSO2 Release] [Jenkins #3192] [Release 4.1.17] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7e6a6a76a..f2c8acbee 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.17 + 4.1.18-SNAPSHOT ../pom.xml From 40b8f62739e804c33e36d82a85e4efa99158aaf8 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 24 Oct 2018 19:46:29 +0000 Subject: [PATCH 129/135] [WSO2 Release] [Jenkins #3194] [Release 4.1.18] prepare release v4.1.18 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f2c8acbee..cb2d2d5ad 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.18-SNAPSHOT + 4.1.18 ../pom.xml From f134794bc9c976980f34c4b0a7775bd099677152 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 24 Oct 2018 19:46:42 +0000 Subject: [PATCH 130/135] [WSO2 Release] [Jenkins #3194] [Release 4.1.18] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cb2d2d5ad..a0e02290d 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.18 + 4.1.19-SNAPSHOT ../pom.xml From 58802f5e9f50cb15ca14d56455d24c4dcb01973d Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 25 Oct 2018 09:10:34 +0000 Subject: [PATCH 131/135] [WSO2 Release] [Jenkins #3196] [Release 4.1.19] prepare release v4.1.19 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a0e02290d..c3bcb97a9 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.19-SNAPSHOT + 4.1.19 ../pom.xml From 9f2cc275f0a19808b11c072b8f4bdb0117aa11a8 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Thu, 25 Oct 2018 09:10:46 +0000 Subject: [PATCH 132/135] [WSO2 Release] [Jenkins #3196] [Release 4.1.19] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c3bcb97a9..b4859284c 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.19 + 4.1.20-SNAPSHOT ../pom.xml From c4d091367d605b6029891bb6506b3c767bc6ddf7 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 31 Oct 2018 06:09:58 +0000 Subject: [PATCH 133/135] [WSO2 Release] [Jenkins #3198] [Release 4.1.20] prepare release v4.1.20 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b4859284c..bd208d71b 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.20-SNAPSHOT + 4.1.20 ../pom.xml From e54a740a0825088781ec5b988ca6a2ff1364fa25 Mon Sep 17 00:00:00 2001 From: WSO2 Builder Date: Wed, 31 Oct 2018 06:10:10 +0000 Subject: [PATCH 134/135] [WSO2 Release] [Jenkins #3198] [Release 4.1.20] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bd208d71b..b00e212b5 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ org.wso2.carbon.devicemgt-plugins siddhi-extensions - 4.1.20 + 4.1.21-SNAPSHOT ../pom.xml From 66755d951c083b9c0de99099b2c7a0e221ebd6ce Mon Sep 17 00:00:00 2001 From: Amalka Subasinghe Date: Thu, 16 Feb 2023 10:26:30 +0530 Subject: [PATCH 135/135] siddi device extension --- .../siddhi-extensions/org.wso2.extension.siddhi.device/pom.xml | 0 .../extension/siddhi/device/AddNotificationFunctionProcessor.java | 0 .../extension/siddhi/device/AddOperationFunctionProcessor.java | 0 .../siddhi/device/GetDevicesOfStatusFunctionExecutor.java | 0 .../extension/siddhi/device/GetDevicesOfUserFunctionExecutor.java | 0 .../siddhi/device/HasDevicesOfStatusFunctionExecutor.java | 0 .../extension/siddhi/device/HasDevicesOfUserFunctionExecutor.java | 0 .../wso2/extension/siddhi/device/IsEnrolledFunctionExecutor.java | 0 .../wso2/extension/siddhi/device/IsInGroupFunctionExecutor.java | 0 .../extension/siddhi/device/client/OAuthRequestInterceptor.java | 0 .../siddhi/device/client/configs/SiddhiExtensionConfig.java | 0 .../siddhi/device/client/configs/SiddhiExtensionConfigReader.java | 0 .../wso2/extension/siddhi/device/client/dto/OAuthApplication.java | 0 .../wso2/extension/siddhi/device/client/dto/OperationRequest.java | 0 .../extension/siddhi/device/client/dto/RegistrationProfile.java | 0 .../siddhi/device/client/exception/APIMClientException.java | 0 .../siddhi/device/client/exception/APIMClientOAuthException.java | 0 .../client/exception/InvalidConfigurationStateException.java | 0 .../wso2/extension/siddhi/device/client/services/DCRService.java | 0 .../extension/siddhi/device/client/services/OperationService.java | 0 .../java/org/wso2/extension/siddhi/device/utils/ClientUtils.java | 0 .../java/org/wso2/extension/siddhi/device/utils/DeviceUtils.java | 0 .../src}/main/resources/device.siddhiext | 0 .../wso2/extension/siddhi/device/BaseDeviceManagementTest.java | 0 .../java/org/wso2/extension/siddhi/device/ExtensionTestCase.java | 0 .../wso2/extension/siddhi/device/test/util/DataSourceConfig.java | 0 .../wso2/extension/siddhi/device/test/util/SiddhiTestHelper.java | 0 .../wso2/extension/siddhi/device/test/util/TestDataHolder.java | 0 .../siddhi/device/test/util/TestDeviceManagementService.java | 0 .../wso2/extension/siddhi/device/test/util/TestDeviceManager.java | 0 .../org/wso2/extension/siddhi/device/test/util/TestUtils.java | 0 .../src}/test/resources/carbon-home/dbscripts/h2.sql | 0 .../test/resources/carbon-home/repository/conf/axis2/axis2.xml | 0 .../resources/carbon-home/repository/conf/axis2/axis2_client.xml | 0 .../resources/carbon-home/repository/conf/axis2/tenant-axis2.xml | 0 .../src}/test/resources/carbon-home/repository/conf/carbon.xml | 0 .../test/resources/carbon-home/repository/conf/cdm-config.xml | 0 .../repository/conf/datasources/master-datasources.xml | 0 .../carbon-home/repository/conf/etc/bundle-config/README.txt | 0 .../repository/conf/etc/carboncontext-osgi-services.properties | 0 .../carbon-home/repository/conf/etc/config-validation.xml | 0 .../src}/test/resources/carbon-home/repository/conf/etc/jmx.xml | 0 .../test/resources/carbon-home/repository/conf/etc/launch.ini | 0 .../carbon-home/repository/conf/etc/logging-bridge.properties | 0 .../test/resources/carbon-home/repository/conf/etc/mime.mappings | 0 .../test/resources/carbon-home/repository/conf/etc/mime.types | 0 .../resources/carbon-home/repository/conf/etc/osgi-debug.options | 0 .../test/resources/carbon-home/repository/conf/log4j.properties | 0 .../src}/test/resources/carbon-home/repository/conf/registry.xml | 0 .../carbon-home/repository/conf/security/authenticators.xml | 0 .../repository/conf/tomcat/carbon/META-INF/context.xml | 0 .../carbon-home/repository/conf/tomcat/carbon/WEB-INF/web.xml | 0 .../carbon-home/repository/conf/tomcat/catalina-server.xml | 0 .../resources/carbon-home/repository/conf/tomcat/tomcat-users.xml | 0 .../test/resources/carbon-home/repository/conf/tomcat/web.xml | 0 .../src}/test/resources/carbon-home/repository/conf/user-mgt.xml | 0 .../src}/test/resources/config/datasource/data-source-config.xml | 0 .../src}/test/resources/log4j.properties | 0 .../src}/test/resources/sql/h2.sql | 0 .../src}/test/resources/testng.xml | 0 .../src}/test/resources/user-test/user-mgt-registry-test.xml | 0 61 files changed, 0 insertions(+), 0 deletions(-) rename pom.xml => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/pom.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/AddNotificationFunctionProcessor.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/AddOperationFunctionProcessor.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/GetDevicesOfStatusFunctionExecutor.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/GetDevicesOfUserFunctionExecutor.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/HasDevicesOfStatusFunctionExecutor.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/HasDevicesOfUserFunctionExecutor.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/IsEnrolledFunctionExecutor.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/IsInGroupFunctionExecutor.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/client/OAuthRequestInterceptor.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfig.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfigReader.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/client/dto/OAuthApplication.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/client/dto/OperationRequest.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/client/dto/RegistrationProfile.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientException.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientOAuthException.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/client/exception/InvalidConfigurationStateException.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/client/services/DCRService.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/client/services/OperationService.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/utils/ClientUtils.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/java/org/wso2/extension/siddhi/device/utils/DeviceUtils.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/main/resources/device.siddhiext (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/java/org/wso2/extension/siddhi/device/BaseDeviceManagementTest.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/java/org/wso2/extension/siddhi/device/ExtensionTestCase.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/java/org/wso2/extension/siddhi/device/test/util/DataSourceConfig.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/java/org/wso2/extension/siddhi/device/test/util/SiddhiTestHelper.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/java/org/wso2/extension/siddhi/device/test/util/TestDataHolder.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManagementService.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManager.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/java/org/wso2/extension/siddhi/device/test/util/TestUtils.java (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/dbscripts/h2.sql (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/axis2/axis2.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/axis2/axis2_client.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/axis2/tenant-axis2.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/carbon.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/cdm-config.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/datasources/master-datasources.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/etc/bundle-config/README.txt (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/etc/carboncontext-osgi-services.properties (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/etc/config-validation.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/etc/jmx.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/etc/launch.ini (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/etc/logging-bridge.properties (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/etc/mime.mappings (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/etc/mime.types (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/etc/osgi-debug.options (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/log4j.properties (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/registry.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/security/authenticators.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/tomcat/carbon/META-INF/context.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/tomcat/carbon/WEB-INF/web.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/tomcat/catalina-server.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/tomcat/tomcat-users.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/tomcat/web.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/carbon-home/repository/conf/user-mgt.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/config/datasource/data-source-config.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/log4j.properties (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/sql/h2.sql (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/testng.xml (100%) rename {src => components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src}/test/resources/user-test/user-mgt-registry-test.xml (100%) diff --git a/pom.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/pom.xml similarity index 100% rename from pom.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/pom.xml diff --git a/src/main/java/org/wso2/extension/siddhi/device/AddNotificationFunctionProcessor.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/AddNotificationFunctionProcessor.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/AddNotificationFunctionProcessor.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/AddNotificationFunctionProcessor.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/AddOperationFunctionProcessor.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/AddOperationFunctionProcessor.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/AddOperationFunctionProcessor.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/AddOperationFunctionProcessor.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfStatusFunctionExecutor.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfStatusFunctionExecutor.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfStatusFunctionExecutor.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfStatusFunctionExecutor.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfUserFunctionExecutor.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfUserFunctionExecutor.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfUserFunctionExecutor.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/GetDevicesOfUserFunctionExecutor.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfStatusFunctionExecutor.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfStatusFunctionExecutor.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfStatusFunctionExecutor.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfStatusFunctionExecutor.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfUserFunctionExecutor.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfUserFunctionExecutor.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfUserFunctionExecutor.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/HasDevicesOfUserFunctionExecutor.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/IsEnrolledFunctionExecutor.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/IsEnrolledFunctionExecutor.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/IsEnrolledFunctionExecutor.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/IsEnrolledFunctionExecutor.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/IsInGroupFunctionExecutor.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/IsInGroupFunctionExecutor.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/IsInGroupFunctionExecutor.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/IsInGroupFunctionExecutor.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/OAuthRequestInterceptor.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/OAuthRequestInterceptor.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/client/OAuthRequestInterceptor.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/OAuthRequestInterceptor.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfig.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfig.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfig.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfig.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfigReader.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfigReader.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfigReader.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/configs/SiddhiExtensionConfigReader.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/dto/OAuthApplication.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/dto/OAuthApplication.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/client/dto/OAuthApplication.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/dto/OAuthApplication.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/dto/OperationRequest.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/dto/OperationRequest.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/client/dto/OperationRequest.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/dto/OperationRequest.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/dto/RegistrationProfile.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/dto/RegistrationProfile.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/client/dto/RegistrationProfile.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/dto/RegistrationProfile.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientException.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientException.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientException.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientException.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientOAuthException.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientOAuthException.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientOAuthException.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/exception/APIMClientOAuthException.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/exception/InvalidConfigurationStateException.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/exception/InvalidConfigurationStateException.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/client/exception/InvalidConfigurationStateException.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/exception/InvalidConfigurationStateException.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/services/DCRService.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/services/DCRService.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/client/services/DCRService.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/services/DCRService.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/client/services/OperationService.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/services/OperationService.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/client/services/OperationService.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/client/services/OperationService.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/utils/ClientUtils.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/utils/ClientUtils.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/utils/ClientUtils.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/utils/ClientUtils.java diff --git a/src/main/java/org/wso2/extension/siddhi/device/utils/DeviceUtils.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/utils/DeviceUtils.java similarity index 100% rename from src/main/java/org/wso2/extension/siddhi/device/utils/DeviceUtils.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/java/org/wso2/extension/siddhi/device/utils/DeviceUtils.java diff --git a/src/main/resources/device.siddhiext b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/resources/device.siddhiext similarity index 100% rename from src/main/resources/device.siddhiext rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/main/resources/device.siddhiext diff --git a/src/test/java/org/wso2/extension/siddhi/device/BaseDeviceManagementTest.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/BaseDeviceManagementTest.java similarity index 100% rename from src/test/java/org/wso2/extension/siddhi/device/BaseDeviceManagementTest.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/BaseDeviceManagementTest.java diff --git a/src/test/java/org/wso2/extension/siddhi/device/ExtensionTestCase.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/ExtensionTestCase.java similarity index 100% rename from src/test/java/org/wso2/extension/siddhi/device/ExtensionTestCase.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/ExtensionTestCase.java diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/DataSourceConfig.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/test/util/DataSourceConfig.java similarity index 100% rename from src/test/java/org/wso2/extension/siddhi/device/test/util/DataSourceConfig.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/test/util/DataSourceConfig.java diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/SiddhiTestHelper.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/test/util/SiddhiTestHelper.java similarity index 100% rename from src/test/java/org/wso2/extension/siddhi/device/test/util/SiddhiTestHelper.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/test/util/SiddhiTestHelper.java diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDataHolder.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDataHolder.java similarity index 100% rename from src/test/java/org/wso2/extension/siddhi/device/test/util/TestDataHolder.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDataHolder.java diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManagementService.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManagementService.java similarity index 100% rename from src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManagementService.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManagementService.java diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManager.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManager.java similarity index 100% rename from src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManager.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/test/util/TestDeviceManager.java diff --git a/src/test/java/org/wso2/extension/siddhi/device/test/util/TestUtils.java b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/test/util/TestUtils.java similarity index 100% rename from src/test/java/org/wso2/extension/siddhi/device/test/util/TestUtils.java rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/java/org/wso2/extension/siddhi/device/test/util/TestUtils.java diff --git a/src/test/resources/carbon-home/dbscripts/h2.sql b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/dbscripts/h2.sql similarity index 100% rename from src/test/resources/carbon-home/dbscripts/h2.sql rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/dbscripts/h2.sql diff --git a/src/test/resources/carbon-home/repository/conf/axis2/axis2.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/axis2/axis2.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/axis2/axis2.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/axis2/axis2.xml diff --git a/src/test/resources/carbon-home/repository/conf/axis2/axis2_client.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/axis2/axis2_client.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/axis2/axis2_client.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/axis2/axis2_client.xml diff --git a/src/test/resources/carbon-home/repository/conf/axis2/tenant-axis2.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/axis2/tenant-axis2.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/axis2/tenant-axis2.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/axis2/tenant-axis2.xml diff --git a/src/test/resources/carbon-home/repository/conf/carbon.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/carbon.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/carbon.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/carbon.xml diff --git a/src/test/resources/carbon-home/repository/conf/cdm-config.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/cdm-config.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/cdm-config.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/cdm-config.xml diff --git a/src/test/resources/carbon-home/repository/conf/datasources/master-datasources.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/datasources/master-datasources.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/datasources/master-datasources.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/datasources/master-datasources.xml diff --git a/src/test/resources/carbon-home/repository/conf/etc/bundle-config/README.txt b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/bundle-config/README.txt similarity index 100% rename from src/test/resources/carbon-home/repository/conf/etc/bundle-config/README.txt rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/bundle-config/README.txt diff --git a/src/test/resources/carbon-home/repository/conf/etc/carboncontext-osgi-services.properties b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/carboncontext-osgi-services.properties similarity index 100% rename from src/test/resources/carbon-home/repository/conf/etc/carboncontext-osgi-services.properties rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/carboncontext-osgi-services.properties diff --git a/src/test/resources/carbon-home/repository/conf/etc/config-validation.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/config-validation.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/etc/config-validation.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/config-validation.xml diff --git a/src/test/resources/carbon-home/repository/conf/etc/jmx.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/jmx.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/etc/jmx.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/jmx.xml diff --git a/src/test/resources/carbon-home/repository/conf/etc/launch.ini b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/launch.ini similarity index 100% rename from src/test/resources/carbon-home/repository/conf/etc/launch.ini rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/launch.ini diff --git a/src/test/resources/carbon-home/repository/conf/etc/logging-bridge.properties b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/logging-bridge.properties similarity index 100% rename from src/test/resources/carbon-home/repository/conf/etc/logging-bridge.properties rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/logging-bridge.properties diff --git a/src/test/resources/carbon-home/repository/conf/etc/mime.mappings b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/mime.mappings similarity index 100% rename from src/test/resources/carbon-home/repository/conf/etc/mime.mappings rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/mime.mappings diff --git a/src/test/resources/carbon-home/repository/conf/etc/mime.types b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/mime.types similarity index 100% rename from src/test/resources/carbon-home/repository/conf/etc/mime.types rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/mime.types diff --git a/src/test/resources/carbon-home/repository/conf/etc/osgi-debug.options b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/osgi-debug.options similarity index 100% rename from src/test/resources/carbon-home/repository/conf/etc/osgi-debug.options rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/etc/osgi-debug.options diff --git a/src/test/resources/carbon-home/repository/conf/log4j.properties b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/log4j.properties similarity index 100% rename from src/test/resources/carbon-home/repository/conf/log4j.properties rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/log4j.properties diff --git a/src/test/resources/carbon-home/repository/conf/registry.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/registry.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/registry.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/registry.xml diff --git a/src/test/resources/carbon-home/repository/conf/security/authenticators.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/security/authenticators.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/security/authenticators.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/security/authenticators.xml diff --git a/src/test/resources/carbon-home/repository/conf/tomcat/carbon/META-INF/context.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/tomcat/carbon/META-INF/context.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/tomcat/carbon/META-INF/context.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/tomcat/carbon/META-INF/context.xml diff --git a/src/test/resources/carbon-home/repository/conf/tomcat/carbon/WEB-INF/web.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/tomcat/carbon/WEB-INF/web.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/tomcat/carbon/WEB-INF/web.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/tomcat/carbon/WEB-INF/web.xml diff --git a/src/test/resources/carbon-home/repository/conf/tomcat/catalina-server.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/tomcat/catalina-server.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/tomcat/catalina-server.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/tomcat/catalina-server.xml diff --git a/src/test/resources/carbon-home/repository/conf/tomcat/tomcat-users.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/tomcat/tomcat-users.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/tomcat/tomcat-users.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/tomcat/tomcat-users.xml diff --git a/src/test/resources/carbon-home/repository/conf/tomcat/web.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/tomcat/web.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/tomcat/web.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/tomcat/web.xml diff --git a/src/test/resources/carbon-home/repository/conf/user-mgt.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/user-mgt.xml similarity index 100% rename from src/test/resources/carbon-home/repository/conf/user-mgt.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/carbon-home/repository/conf/user-mgt.xml diff --git a/src/test/resources/config/datasource/data-source-config.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/config/datasource/data-source-config.xml similarity index 100% rename from src/test/resources/config/datasource/data-source-config.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/config/datasource/data-source-config.xml diff --git a/src/test/resources/log4j.properties b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/log4j.properties similarity index 100% rename from src/test/resources/log4j.properties rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/log4j.properties diff --git a/src/test/resources/sql/h2.sql b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/sql/h2.sql similarity index 100% rename from src/test/resources/sql/h2.sql rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/sql/h2.sql diff --git a/src/test/resources/testng.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/testng.xml similarity index 100% rename from src/test/resources/testng.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/testng.xml diff --git a/src/test/resources/user-test/user-mgt-registry-test.xml b/components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/user-test/user-mgt-registry-test.xml similarity index 100% rename from src/test/resources/user-test/user-mgt-registry-test.xml rename to components/extensions/siddhi-extensions/org.wso2.extension.siddhi.device/src/test/resources/user-test/user-mgt-registry-test.xml