From c05191dac513a1f5e6bca37d4b7326572182e723 Mon Sep 17 00:00:00 2001 From: ayyoob Date: Wed, 30 Mar 2016 22:49:20 +0530 Subject: [PATCH] Added IoT plugins feature and refactored IoT base. --- .../pom.xml | 6 +- .../transport/AndroidSenseMQTTConnector.java | 18 + .../plugin/impl/ArduinoManagerService.java | 3 +- .../pom.xml | 16 +- .../impl/DigitalDisplayManagerService.java | 4 +- .../pom.xml | 23 +- .../impl/DroneAnalyzerManagerService.java | 5 +- .../pom.xml | 11 +- .../impl/util/DroneAnalyzerServiceUtils.java | 1 - .../device/mgt/iot/api/DeviceUsageDTO.java | 42 -- .../mgt/iot/api/DevicesManagerService.java | 583 +++++++++--------- .../mgt/iot/api/GroupManagerService.java | 563 +++++++---------- .../mgt/iot/api/PolicyManagementService.java | 381 ++++-------- .../carbon/device/mgt/iot/util/APIUtil.java | 13 + .../org.wso2.carbon.device.mgt.iot/pom.xml | 3 +- .../controlqueue/xmpp/XmppServerClient.java | 7 +- .../carbon/device/mgt/iot/util/IoTUtil.java | 56 +- .../impl/RaspberrypiManagerService.java | 5 +- .../pom.xml | 6 +- .../impl/util/RaspberrypiServiceUtils.java | 2 - .../impl/VirtualFireAlarmManagerService.java | 4 +- .../pom.xml | 6 +- .../pom.xml | 9 - .../impl/AndroidDeviceManagementService.java | 11 + .../AndroidDeviceManagementService.java | 11 + .../WindowsDeviceManagementService.java | 11 + .../pom.xml | 13 +- .../impl/WindowsDeviceManagementService.java | 11 + 28 files changed, 751 insertions(+), 1073 deletions(-) delete mode 100644 components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/DeviceUsageDTO.java diff --git a/components/iot-plugins/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.service.impl/pom.xml b/components/iot-plugins/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.service.impl/pom.xml index ff7e3bfa1..0bd8a073e 100644 --- a/components/iot-plugins/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.service.impl/pom.xml +++ b/components/iot-plugins/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.service.impl/pom.xml @@ -3,15 +3,14 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - device-mgt-iot-androidsense + androidsense-plugin org.wso2.carbon.devicemgt-plugins - 2.0.4-SNAPSHOT + 2.1.0-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.iot.androidsense.service.impl - 2.0.4-SNAPSHOT war WSO2 Carbon - Android Sense API WSO2 Carbon - Android Sense Service-API Implementation @@ -98,7 +97,6 @@ org.wso2.carbon.devicemgt org.wso2.carbon.device.mgt.analytics.data.publisher - 1.1.0-SNAPSHOT provided diff --git a/components/iot-plugins/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.service.impl/src/main/java/org/wso2/carbon/device/mgt/iot/androidsense/service/impl/transport/AndroidSenseMQTTConnector.java b/components/iot-plugins/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.service.impl/src/main/java/org/wso2/carbon/device/mgt/iot/androidsense/service/impl/transport/AndroidSenseMQTTConnector.java index ca6825b82..0b8f30e22 100644 --- a/components/iot-plugins/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.service.impl/src/main/java/org/wso2/carbon/device/mgt/iot/androidsense/service/impl/transport/AndroidSenseMQTTConnector.java +++ b/components/iot-plugins/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.service.impl/src/main/java/org/wso2/carbon/device/mgt/iot/androidsense/service/impl/transport/AndroidSenseMQTTConnector.java @@ -141,6 +141,22 @@ public class AndroidSenseMQTTConnector extends MQTTTransportHandler { String sensorName = null; PrivilegedCarbonContext.startTenantFlow(); PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + DeviceManagementProviderService deviceManagementProviderService = + (DeviceManagementProviderService) ctx.getOSGiService(DeviceManagementProviderService.class, null); + if (deviceManagementProviderService != null) { + DeviceIdentifier identifier = new DeviceIdentifier(deviceId, AndroidSenseConstants.DEVICE_TYPE); + Device device = deviceManagementProviderService.getDevice(identifier); + if (device != null) { + String owner = device.getEnrolmentInfo().getOwner(); + ctx.setUsername(owner); + ctx.setTenantDomain(MultitenantUtils.getTenantDomain(owner), true); + } else { + return; + } + + } else { + return; + } ctx.setTenantDomain("carbon.super", true); for (SensorData sensor : sensorData) { if (sensor.key.equals("battery")) { @@ -254,6 +270,8 @@ public class AndroidSenseMQTTConnector extends MQTTTransportHandler { } } catch (JsonSyntaxException e) { throw new TransportHandlerException("Invalid message format " + mqttMessage.toString()); + } catch (DeviceManagementException e) { + throw new TransportHandlerException("Invalid device id " + deviceId); } finally { PrivilegedCarbonContext.endTenantFlow(); } diff --git a/components/iot-plugins/arduino-plugin/org.wso2.carbon.device.mgt.iot.arduino.plugin.impl/src/main/java/org/wso2/carbon/device/mgt/iot/arduino/plugin/impl/ArduinoManagerService.java b/components/iot-plugins/arduino-plugin/org.wso2.carbon.device.mgt.iot.arduino.plugin.impl/src/main/java/org/wso2/carbon/device/mgt/iot/arduino/plugin/impl/ArduinoManagerService.java index 15f1ff60c..19ea0b8c5 100644 --- a/components/iot-plugins/arduino-plugin/org.wso2.carbon.device.mgt.iot.arduino.plugin.impl/src/main/java/org/wso2/carbon/device/mgt/iot/arduino/plugin/impl/ArduinoManagerService.java +++ b/components/iot-plugins/arduino-plugin/org.wso2.carbon.device.mgt.iot.arduino.plugin.impl/src/main/java/org/wso2/carbon/device/mgt/iot/arduino/plugin/impl/ArduinoManagerService.java @@ -32,6 +32,7 @@ import java.util.List; public class ArduinoManagerService implements DeviceManagementService { private DeviceManager deviceManager; + private final static String DEVICE_TYPE_PROVIDER_DOMAIN = "carbon.super"; @Override public String getType() { @@ -40,7 +41,7 @@ public class ArduinoManagerService implements DeviceManagementService { @Override public String getProviderTenantDomain() { - return "carbon.super"; + return DEVICE_TYPE_PROVIDER_DOMAIN; } @Override diff --git a/components/iot-plugins/arduino-plugin/org.wso2.carbon.device.mgt.iot.arduino.service.impl/pom.xml b/components/iot-plugins/arduino-plugin/org.wso2.carbon.device.mgt.iot.arduino.service.impl/pom.xml index 5962d72b0..7cfd1810e 100644 --- a/components/iot-plugins/arduino-plugin/org.wso2.carbon.device.mgt.iot.arduino.service.impl/pom.xml +++ b/components/iot-plugins/arduino-plugin/org.wso2.carbon.device.mgt.iot.arduino.service.impl/pom.xml @@ -21,15 +21,14 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - device-mgt-iot-arduino + arduino-plugin org.wso2.carbon.devicemgt-plugins - 2.0.4-SNAPSHOT + 2.1.0-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.iot.arduino.service.impl - 2.0.4-SNAPSHOT war WSO2 Carbon - IoT Server Arduino Service API WSO2 Carbon - Arduino Service API Implementation @@ -53,11 +52,6 @@ org.wso2.carbon.device.mgt.extensions provided - - org.wso2.carbon.devicemgt - org.wso2.carbon.apimgt.application.extension - 1.1.0-SNAPSHOT - org.wso2.carbon.devicemgt org.wso2.carbon.device.mgt.jwt.client.extension @@ -90,7 +84,6 @@ org.wso2.carbon.devicemgt org.wso2.carbon.device.mgt.analytics.data.publisher - 1.1.0-SNAPSHOT provided @@ -162,11 +155,6 @@ jsr311-api provided - - org.wso2.carbon.devicemgt - org.wso2.carbon.apimgt.annotations - provided - org.wso2.carbon.devicemgt org.wso2.carbon.apimgt.webapp.publisher diff --git a/components/iot-plugins/digital-display-plugin/org.wso2.carbon.device.mgt.iot.digitaldisplay.plugin/src/main/java/org/wso2/carbon/device/mgt/iot/digitaldisplay/plugin/impl/DigitalDisplayManagerService.java b/components/iot-plugins/digital-display-plugin/org.wso2.carbon.device.mgt.iot.digitaldisplay.plugin/src/main/java/org/wso2/carbon/device/mgt/iot/digitaldisplay/plugin/impl/DigitalDisplayManagerService.java index 429694b41..593b16e91 100644 --- a/components/iot-plugins/digital-display-plugin/org.wso2.carbon.device.mgt.iot.digitaldisplay.plugin/src/main/java/org/wso2/carbon/device/mgt/iot/digitaldisplay/plugin/impl/DigitalDisplayManagerService.java +++ b/components/iot-plugins/digital-display-plugin/org.wso2.carbon.device.mgt.iot.digitaldisplay.plugin/src/main/java/org/wso2/carbon/device/mgt/iot/digitaldisplay/plugin/impl/DigitalDisplayManagerService.java @@ -30,6 +30,8 @@ import java.util.List; public class DigitalDisplayManagerService implements DeviceManagementService{ private DeviceManager deviceManager; + private final static String DEVICE_TYPE_PROVIDER_DOMAIN = "carbon.super"; + @Override public String getType() { return DigitalDisplayConstants.DEVICE_TYPE; @@ -37,7 +39,7 @@ public class DigitalDisplayManagerService implements DeviceManagementService{ @Override public String getProviderTenantDomain() { - return "carbon.super"; + return DEVICE_TYPE_PROVIDER_DOMAIN; } @Override diff --git a/components/iot-plugins/digital-display-plugin/org.wso2.carbon.device.mgt.iot.digitaldisplay.service.impl/pom.xml b/components/iot-plugins/digital-display-plugin/org.wso2.carbon.device.mgt.iot.digitaldisplay.service.impl/pom.xml index 25355cd3f..460a9f63f 100644 --- a/components/iot-plugins/digital-display-plugin/org.wso2.carbon.device.mgt.iot.digitaldisplay.service.impl/pom.xml +++ b/components/iot-plugins/digital-display-plugin/org.wso2.carbon.device.mgt.iot.digitaldisplay.service.impl/pom.xml @@ -4,15 +4,14 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - device-mgt-iot-digitaldisplay + digital-display-plugin org.wso2.carbon.devicemgt-plugins - 2.0.4-SNAPSHOT + 2.1.0-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.iot.digitaldisplay.service.impl - 2.0.4-SNAPSHOT war WSO2 Carbon - IoT Server DigitalDisplay API WSO2 Carbon - Digital Display Service API Implementation @@ -49,23 +48,7 @@ org.wso2.carbon.devicemgt - org.wso2.carbon.apimgt.application.extension - 1.1.0-SNAPSHOT - - - org.wso2.carbon.devicemgt - org.wso2.carbon.device.mgt.jwt.client.extension - provided - - - org.wso2.carbon.devicemgt - org.wso2.carbon.apimgt.application.extension - provided - - - - org.wso2.carbon.devicemgt - org.wso2.carbon.device.mgt.analytics + org.wso2.carbon.device.mgt.analytics.data.publisher provided diff --git a/components/iot-plugins/drone-analyzer-plugin/org.wso2.carbon.device.mgt.iot.droneanalyzer.plugin/src/main/java/org/wso2/carbon/device/mgt/iot/droneanalyzer/plugin/impl/DroneAnalyzerManagerService.java b/components/iot-plugins/drone-analyzer-plugin/org.wso2.carbon.device.mgt.iot.droneanalyzer.plugin/src/main/java/org/wso2/carbon/device/mgt/iot/droneanalyzer/plugin/impl/DroneAnalyzerManagerService.java index 5af1a9008..3890febc1 100644 --- a/components/iot-plugins/drone-analyzer-plugin/org.wso2.carbon.device.mgt.iot.droneanalyzer.plugin/src/main/java/org/wso2/carbon/device/mgt/iot/droneanalyzer/plugin/impl/DroneAnalyzerManagerService.java +++ b/components/iot-plugins/drone-analyzer-plugin/org.wso2.carbon.device.mgt.iot.droneanalyzer.plugin/src/main/java/org/wso2/carbon/device/mgt/iot/droneanalyzer/plugin/impl/DroneAnalyzerManagerService.java @@ -29,9 +29,10 @@ import org.wso2.carbon.device.mgt.iot.droneanalyzer.plugin.constants.DroneConsta import java.util.List; - public class DroneAnalyzerManagerService implements DeviceManagementService { private DeviceManager deviceManager; + private final static String DEVICE_TYPE_PROVIDER_DOMAIN = "carbon.super"; + @Override public String getType() { return DroneConstants.DEVICE_TYPE; @@ -95,7 +96,7 @@ public class DroneAnalyzerManagerService implements DeviceManagementService { @Override public String getProviderTenantDomain() { - return "carbon.super"; + return DEVICE_TYPE_PROVIDER_DOMAIN; } @Override diff --git a/components/iot-plugins/drone-analyzer-plugin/org.wso2.carbon.device.mgt.iot.droneanalyzer.service.impl/pom.xml b/components/iot-plugins/drone-analyzer-plugin/org.wso2.carbon.device.mgt.iot.droneanalyzer.service.impl/pom.xml index c5ad56224..268b39771 100644 --- a/components/iot-plugins/drone-analyzer-plugin/org.wso2.carbon.device.mgt.iot.droneanalyzer.service.impl/pom.xml +++ b/components/iot-plugins/drone-analyzer-plugin/org.wso2.carbon.device.mgt.iot.droneanalyzer.service.impl/pom.xml @@ -1,14 +1,13 @@ - device-mgt-iot-droneanalyzer + drone-analyzer-plugin org.wso2.carbon.devicemgt-plugins - 2.0.4-SNAPSHOT + 2.1.0-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.iot.droneanalyzer.service.impl - 2.0.4-SNAPSHOT war WSO2 Carbon - IoT Server Drone Analyzer API http://maven.apache.org @@ -35,7 +34,6 @@ org.wso2.carbon.devicemgt org.wso2.carbon.device.mgt.analytics.data.publisher - 1.1.0-SNAPSHOT provided @@ -229,11 +227,6 @@ org.wso2.carbon.device.mgt.extensions provided - - org.wso2.carbon.devicemgt - org.wso2.carbon.apimgt.application.extension - 1.1.0-SNAPSHOT - org.wso2.carbon.devicemgt org.wso2.carbon.device.mgt.jwt.client.extension diff --git a/components/iot-plugins/drone-analyzer-plugin/org.wso2.carbon.device.mgt.iot.droneanalyzer.service.impl/src/main/java/org/wso2/carbon/device/mgt/iot/droneanalyzer/service/impl/util/DroneAnalyzerServiceUtils.java b/components/iot-plugins/drone-analyzer-plugin/org.wso2.carbon.device.mgt.iot.droneanalyzer.service.impl/src/main/java/org/wso2/carbon/device/mgt/iot/droneanalyzer/service/impl/util/DroneAnalyzerServiceUtils.java index 4b01bd8d6..12f2d0716 100644 --- a/components/iot-plugins/drone-analyzer-plugin/org.wso2.carbon.device.mgt.iot.droneanalyzer.service.impl/src/main/java/org/wso2/carbon/device/mgt/iot/droneanalyzer/service/impl/util/DroneAnalyzerServiceUtils.java +++ b/components/iot-plugins/drone-analyzer-plugin/org.wso2.carbon.device.mgt.iot.droneanalyzer.service.impl/src/main/java/org/wso2/carbon/device/mgt/iot/droneanalyzer/service/impl/util/DroneAnalyzerServiceUtils.java @@ -30,7 +30,6 @@ import java.io.File; public class DroneAnalyzerServiceUtils { - private static final String SUPER_TENANT = "carbon.super"; private static org.apache.commons.logging.Log log = LogFactory.getLog(DroneAnalyzerServiceUtils.class); public static void sendCommandViaXMPP(String deviceOwner, String deviceId, String resource, diff --git a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/DeviceUsageDTO.java b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/DeviceUsageDTO.java deleted file mode 100644 index 222f00d41..000000000 --- a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/DeviceUsageDTO.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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.carbon.device.mgt.iot.api; - -public class DeviceUsageDTO { - - private String time; - private String value; - - public String getTime() { - return time; - } - - public void setTime(String time) { - this.time = time; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - -} diff --git a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/DevicesManagerService.java b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/DevicesManagerService.java index e1f8431bc..ee5333b69 100644 --- a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/DevicesManagerService.java +++ b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/DevicesManagerService.java @@ -20,12 +20,7 @@ package org.wso2.carbon.device.mgt.iot.api; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.context.CarbonContext; -import org.wso2.carbon.context.PrivilegedCarbonContext; -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.EnrolmentInfo; +import org.wso2.carbon.device.mgt.common.*; import org.wso2.carbon.device.mgt.common.configuration.mgt.TenantConfiguration; import org.wso2.carbon.device.mgt.common.license.mgt.License; import org.wso2.carbon.device.mgt.core.dto.DeviceType; @@ -33,56 +28,20 @@ import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; import org.wso2.carbon.device.mgt.iot.exception.DeviceControllerException; import org.wso2.carbon.device.mgt.iot.sensormgt.SensorDataManager; import org.wso2.carbon.device.mgt.iot.sensormgt.SensorRecord; - -import javax.jws.WebService; -import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.FormParam; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; +import org.wso2.carbon.device.mgt.iot.util.APIUtil; +import javax.ws.rs.*; import javax.ws.rs.core.Response; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; -@WebService public class DevicesManagerService { - - private static Log log = LogFactory.getLog(DevicesManagerService.class); - - @Context //injected response proxy supporting multiple thread - private HttpServletResponse response; - - private PrivilegedCarbonContext ctx; - private DeviceManagementProviderService getServiceProvider() { - String tenantDomain = CarbonContext.getThreadLocalCarbonContext().getTenantDomain(); - PrivilegedCarbonContext.startTenantFlow(); - ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - ctx.setTenantDomain(tenantDomain, true); - if (log.isDebugEnabled()) { - log.debug("Getting thread local carbon context for tenant domain: " + tenantDomain); - } - return (DeviceManagementProviderService) ctx.getOSGiService(DeviceManagementProviderService.class, null); - } +public class DevicesManagerService { - private void endTenantFlow() { - PrivilegedCarbonContext.endTenantFlow(); - ctx = null; - if (log.isDebugEnabled()) { - log.debug("Tenant flow ended"); - } - } + private static final Log log = LogFactory.getLog(DevicesManagerService.class); - private Device[] getActiveDevices(List devices){ + private Device[] getActiveDevices(List devices) { List activeDevices = new ArrayList<>(); if (devices != null) { for (Device device : devices) { @@ -94,29 +53,27 @@ import java.util.List; return activeDevices.toArray(new Device[activeDevices.size()]); } - @Path("/device/user/{username}/all") + @Path("/devices/users/{userName}") @GET - @Consumes("application/json") @Produces("application/json") - public Device[] getDevicesOfUser(@PathParam("username") String username) { + public Response getDevicesOfUser(@PathParam("userName") String userName) { try { - List devices = this.getServiceProvider().getDevicesOfUser(username); - return this.getActiveDevices(devices); + List devices = APIUtil.getDeviceManagementService() + .getDevicesOfUser(userName); + Device[] devicesArr = this.getActiveDevices(devices); + return Response.status(Response.Status.OK).entity(devicesArr).build(); } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/user/{username}/all/count") + @Path("/devices/users/{userName}/count") @GET - @Consumes("application/json") @Produces("application/json") - public int getDeviceCount(@PathParam("username") String username){ + public Response getDeviceCount(@PathParam("userName") String userName) { try { - List devices = this.getServiceProvider().getDevicesOfUser(username); + List devices = APIUtil.getDeviceManagementService() + .getDevicesOfUser(userName); if (devices != null) { List activeDevices = new ArrayList<>(); for (Device device : devices) { @@ -124,191 +81,182 @@ import java.util.List; activeDevices.add(device); } } - return activeDevices.size(); + return Response.status(Response.Status.OK).entity(activeDevices.size()).build(); } - return 0; + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return 0; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/{type}/identifier/{identifier}") + @Path("/devices/{deviceType}/{identifier}") @GET - @Consumes("application/json") @Produces("application/json") - public Device getDevice(@PathParam("type") String type, @PathParam("identifier") String identifier){ + public Response getDevice(@PathParam("deviceType") String deviceType, + @PathParam("identifier") String identifier) { - try{ + try { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); deviceIdentifier.setId(identifier); - deviceIdentifier.setType(type); - return this.getServiceProvider().getDevice(deviceIdentifier); + deviceIdentifier.setType(deviceType); + Device device = APIUtil.getDeviceManagementService().getDevice( + deviceIdentifier); + if (device != null) { + return Response.status(Response.Status.OK).entity(device).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/all") + @Path("/devices/types") @GET - @Consumes("application/json") @Produces("application/json") - public DeviceType[] getDeviceTypes(){ - try{ - List deviceTypes = this.getServiceProvider().getAvailableDeviceTypes(); - return deviceTypes.toArray(new DeviceType[deviceTypes.size()]); + public Response getDeviceTypes() { + try { + List deviceTypes = APIUtil.getDeviceManagementService() + .getAvailableDeviceTypes(); + DeviceType[] deviceTypesArr = deviceTypes.toArray(new DeviceType[deviceTypes.size()]); + return Response.status(Response.Status.OK).entity(deviceTypesArr).build(); } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/{type}/all") + @Path("/devices/{deviceType}") @GET - @Consumes("application/json") @Produces("application/json") - public Device[] getAllDevices(@PathParam("type") String type){ - try{ - List devices = this.getServiceProvider().getAllDevices(type); - return this.getActiveDevices(devices); + public Response getAllDevices(@PathParam("deviceType") String deviceType) { + try { + List devices = APIUtil.getDeviceManagementService() + .getAllDevices(deviceType); + Device[] devicesArr = this.getActiveDevices(devices); + return Response.status(Response.Status.OK).entity(devicesArr).build(); } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/all") + @Path("/devices") @GET - @Consumes("application/json") @Produces("application/json") - public Device[] getAllDevices(){ - try{ - List devices = this.getServiceProvider().getAllDevices(); - return this.getActiveDevices(devices); + public Response getAllDevices() { + try { + List devices = APIUtil.getDeviceManagementService() + .getAllDevices(); + return Response.status(Response.Status.OK).entity(this.getActiveDevices(devices)).build(); } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/{type}/config") + @Path("/devices/{deviceType}/config") @GET - @Consumes("application/json") @Produces("application/json") - public TenantConfiguration getConfiguration(@PathParam("type") String type){ + public Response getConfiguration(@PathParam("deviceType") String deviceType) { try { - return this.getServiceProvider().getConfiguration(type); + TenantConfiguration tenantConfiguration = APIUtil.getDeviceManagementService().getConfiguration(deviceType); + if (tenantConfiguration != null) { + return Response.status(Response.Status.OK).entity(tenantConfiguration).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/role/{role}/all") + @Path("/devices/search/role") @GET - @Consumes("application/json") @Produces("application/json") - public Device[] getAllDevicesOfRole(@PathParam("role") String roleName){ - try{ - List devices = this.getServiceProvider().getAllDevicesOfRole(roleName); - return this.getActiveDevices(devices); + public Response getAllDevicesOfRole(@QueryParam("roleName") String roleName) { + try { + List devices = APIUtil.getDeviceManagementService() + .getAllDevicesOfRole(roleName); + Device[] devicesArr = this.getActiveDevices(devices); + return Response.status(Response.Status.OK).entity(devicesArr).build(); } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/name/{name}/all") + @Path("/devices/search/name") @GET - @Consumes("application/json") @Produces("application/json") - public Device[] getDevicesByName(@PathParam("name") String name) { - try{ - List devices = this.getServiceProvider().getDevicesByName(name); - return this.getActiveDevices(devices); + public Response getDevicesByName(@PathParam("deviceName") String deviceName) { + try { + List devices = APIUtil.getDeviceManagementService() + .getDevicesByName(deviceName); + Device[] devicesArr = this.getActiveDevices(devices); + return Response.status(Response.Status.OK).entity(devicesArr).build(); } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/{type}/identifier/{identifier}/status") + @Path("/devices/{deviceType}/{identifier}/status") @PUT @Consumes("application/json") @Produces("application/json") - void updateDeviceEnrolmentInfo(@PathParam("type") String type, @PathParam("identifier") String identifier, - @FormParam("status") EnrolmentInfo.Status status) { - DeviceManagementProviderService providerService = this.getServiceProvider(); - DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); - deviceIdentifier.setType(type); - deviceIdentifier.setId(identifier); + public Response updateDeviceEnrolmentInfo(@PathParam("deviceType") String deviceType, + @PathParam("identifier") String identifier, + @FormParam("status") EnrolmentInfo.Status status) { try { + DeviceManagementProviderService providerService = APIUtil.getDeviceManagementService(); + DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); + deviceIdentifier.setType(deviceType); + deviceIdentifier.setId(identifier); Device device = providerService.getDevice(deviceIdentifier); providerService.updateDeviceEnrolmentInfo(device, status); + return Response.status(Response.Status.NO_CONTENT).build(); } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/status/{status}/all") + @Path("/devices/search/status") @GET - @Consumes("application/json") @Produces("application/json") - public Device[] getDevicesByStatus(@PathParam("status") EnrolmentInfo.Status status) { - try{ - List devices = this.getServiceProvider().getDevicesByStatus(status); - return this.getActiveDevices(devices); + public Response getDevicesByStatus(@QueryParam("status") EnrolmentInfo.Status status) { + try { + List devices = APIUtil.getDeviceManagementService() + .getDevicesByStatus(status); + Device[] devicesArr = this.getActiveDevices(devices); + return Response.status(Response.Status.OK).entity(devicesArr).build(); } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/{type}/license") + @Path("/devices/{deviceType}/license") @GET - @Consumes("application/json") @Produces("application/json") - public License getLicense(@PathParam("type") String type, @QueryParam("languageCode") String languageCode) { - try{ - return this.getServiceProvider().getLicense(type, languageCode); + public Response getLicense(@PathParam("deviceType") String deviceType, + @QueryParam("languageCode") String languageCode) { + try { + License license = APIUtil.getDeviceManagementService().getLicense( + deviceType, languageCode); + if (license != null) { + return Response.status(Response.Status.OK).entity(license).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/{type}/license") + @Path("/devices/{deviceType}/license") @POST - @Consumes("application/json") @Produces("application/json") - public void addLicense(@PathParam("type") String type, @FormParam("provider") String provider, - @FormParam("name") String name, @FormParam("version") String version, - @FormParam("language") String language, @FormParam("validFrom") Date validFrom, - @FormParam("validTo") Date validTo, @FormParam("text") String text) { - try{ + public Response addLicense(@PathParam("deviceType") String deviceType, + @FormParam("provider") String provider, @FormParam("name") String name, + @FormParam("version") String version, @FormParam("language") String language, + @FormParam("validFrom") Date validFrom, @FormParam("validTo") Date validTo, + @FormParam("text") String text) { + try { License license = new License(); license.setProvider(provider); license.setName(name); @@ -317,26 +265,27 @@ import java.util.List; license.setValidFrom(validFrom); license.setValidTo(validTo); license.setText(text); - this.getServiceProvider().addLicense(type, license); + APIUtil.getDeviceManagementService().addLicense(deviceType, license); + return Response.status(Response.Status.NO_CONTENT).build(); } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/{type}/identifier/{identifier}") + @Path("/devices/{deviceType}/{identifier}/enrollment") @PUT - @Consumes("application/json") @Produces("application/json") - boolean modifyEnrollment(@PathParam("type") String type, @PathParam("identifier") String identifier, - @FormParam("name") String name, @FormParam("description") String description, - @FormParam("enrollmentId") int enrollmentId, - @FormParam("dateOfEnrolment") long dateOfEnrolment, - @FormParam("dateOfLastUpdate") long dateOfLastUpdate, - @FormParam("ownership") EnrolmentInfo.OwnerShip ownership, - @FormParam("status") EnrolmentInfo.Status status, - @FormParam("owner") String owner) { + public Response modifyEnrollment(@PathParam("deviceType") String deviceType, + @PathParam("identifier") String identifier, + @FormParam("name") String name, + @FormParam("description") String description, + @FormParam("groupId") int groupId, + @FormParam("enrollmentId") int enrollmentId, + @FormParam("dateOfEnrolment") long dateOfEnrolment, + @FormParam("dateOfLastUpdate") long dateOfLastUpdate, + @FormParam("ownership") EnrolmentInfo.OwnerShip ownership, + @FormParam("status") EnrolmentInfo.Status status, + @FormParam("owner") String owner) { EnrolmentInfo enrolmentInfo = new EnrolmentInfo(); enrolmentInfo.setId(enrollmentId); @@ -347,33 +296,36 @@ import java.util.List; enrolmentInfo.setOwner(owner); Device device = new Device(); - device.setType(type); + device.setType(deviceType); device.setDeviceIdentifier(identifier); device.setName(name); device.setDescription(description); device.setEnrolmentInfo(enrolmentInfo); try { - return this.getServiceProvider().modifyEnrollment(device); + boolean isModified = APIUtil.getDeviceManagementService() + .modifyEnrollment(device); + if (isModified) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device") + @Path("/devices/{deviceType}/{identifier}/enrollment") @POST - @Consumes("application/json") @Produces("application/json") - boolean enrollDevice(@FormParam("type") String type, @FormParam("identifier") String identifier, - @FormParam("name") String name, @FormParam("description") String description, - @FormParam("enrollmentId") int enrollmentId, - @FormParam("dateOfEnrolment") long dateOfEnrolment, - @FormParam("dateOfLastUpdate") long dateOfLastUpdate, - @FormParam("ownership") EnrolmentInfo.OwnerShip ownership, - @FormParam("status") EnrolmentInfo.Status status, - @FormParam("owner") String owner) { + public Response enrollDevice(@PathParam("deviceType") String deviceType, @PathParam("identifier") String identifier, + @FormParam("name") String name, @FormParam("description") String description, + @FormParam("groupId") int groupId, + @FormParam("enrollmentId") int enrollmentId, + @FormParam("dateOfEnrolment") long dateOfEnrolment, + @FormParam("dateOfLastUpdate") long dateOfLastUpdate, + @FormParam("ownership") EnrolmentInfo.OwnerShip ownership, + @FormParam("status") EnrolmentInfo.Status status, + @FormParam("owner") String owner) { EnrolmentInfo enrolmentInfo = new EnrolmentInfo(); enrolmentInfo.setId(enrollmentId); @@ -384,197 +336,232 @@ import java.util.List; enrolmentInfo.setOwner(owner); Device device = new Device(); - device.setType(type); + device.setType(deviceType); device.setDeviceIdentifier(identifier); device.setName(name); device.setDescription(description); device.setEnrolmentInfo(enrolmentInfo); try { - return this.getServiceProvider().enrollDevice(device); + boolean isModified = APIUtil.getDeviceManagementService().enrollDevice( + device); + if (isModified) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/tenantconfiguration") + @Path("/devices/tenant/configuration") @GET - @Consumes("application/json") @Produces("application/json") - public TenantConfiguration getConfiguration(){ + public Response getTenantConfiguration() { try { - return this.getServiceProvider().getConfiguration(); + TenantConfiguration tenantConfiguration = APIUtil.getDeviceManagementService().getConfiguration(); + if (tenantConfiguration != null) { + return Response.status(Response.Status.OK).entity(tenantConfiguration).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/tenantconfiguration") + @Path("/devices/tenant/configuration") @POST - @Consumes("application/json") @Produces("application/json") - public boolean saveConfiguration(@FormParam("tenantConfiguration") TenantConfiguration tenantConfiguration){ + public Response saveTenantConfiguration(@FormParam("tenantConfiguration") TenantConfiguration tenantConfiguration) { try { - return this.getServiceProvider().saveConfiguration(tenantConfiguration); + boolean isSaved = APIUtil.getDeviceManagementService() + .saveConfiguration(tenantConfiguration); + if (isSaved) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/{type}/identifier/{identifier}") + @Path("/devices/{deviceType}/{identifier}") @DELETE - @Consumes("application/json") @Produces("application/json") - public boolean disenrollDevice(@PathParam("type") String type, @PathParam("identifier") String identifier){ + public Response disenrollDevice(@PathParam("deviceType") String deviceType, + @PathParam("identifier") String identifier) { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); - deviceIdentifier.setType(type); + deviceIdentifier.setType(deviceType); deviceIdentifier.setId(identifier); try { - return this.getServiceProvider().disenrollDevice(deviceIdentifier); + boolean isDisEnrolled = APIUtil.getDeviceManagementService() + .disenrollDevice(deviceIdentifier); + if (isDisEnrolled) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/{type}/identifier/{identifier}/enrolled") + @Path("/devices/{deviceType}/{identifier}/enrollment") @GET - @Consumes("application/json") @Produces("application/json") - public boolean isEnrolled(@PathParam("type") String type, @PathParam("identifier") String identifier){ + public Response isEnrolled(@PathParam("deviceType") String deviceType, + @PathParam("identifier") String identifier) { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); - deviceIdentifier.setType(type); + deviceIdentifier.setType(deviceType); deviceIdentifier.setId(identifier); try { - return this.getServiceProvider().isEnrolled(deviceIdentifier); + boolean isEnrolled = APIUtil.getDeviceManagementService().isEnrolled( + deviceIdentifier); + if (isEnrolled) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/{type}/identifier/{identifier}/active") + + @Path("/devices/{deviceType}/{identifier}/status") @GET - @Consumes("application/json") @Produces("application/json") - public boolean isActive(@PathParam("type") String type, @PathParam("identifier") String identifier){ + public Response isActive(@PathParam("deviceType") String deviceType, + @PathParam("identifier") String identifier) { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); - deviceIdentifier.setType(type); + deviceIdentifier.setType(deviceType); deviceIdentifier.setId(identifier); try { - return this.getServiceProvider().isActive(deviceIdentifier); + boolean isActive = APIUtil.getDeviceManagementService().isActive( + deviceIdentifier); + if (isActive) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/{type}/identifier/{identifier}/active") + @Path("/devices/{deviceType}/{identifier}/status") @PUT @Consumes("application/json") @Produces("application/json") - public boolean setActive(@PathParam("type") String type, @PathParam("identifier") String identifier, - @FormParam("status") boolean status){ + public Response changeDeviceStatus(@PathParam("deviceType") String deviceType, + @PathParam("identifier") String identifier, + @FormParam("status") boolean status) { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); - deviceIdentifier.setType(type); + deviceIdentifier.setType(deviceType); deviceIdentifier.setId(identifier); try { - return this.getServiceProvider().setActive(deviceIdentifier, status); + boolean isActivated = APIUtil.getDeviceManagementService().setActive( + deviceIdentifier, status); + if (isActivated) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/{type}/identifier/{identifier}/ownership") + @Path("/devices/{deviceType}/{identifier}/ownership") @PUT @Consumes("application/json") @Produces("application/json") - public boolean setOwnership(@PathParam("type") String type, @PathParam("identifier") String identifier, - @FormParam("ownership") String ownership){ + public Response setOwnership(@PathParam("deviceType") String deviceType, + @PathParam("identifier") String identifier, + @FormParam("ownership") String ownership) { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); - deviceIdentifier.setType(type); + deviceIdentifier.setType(deviceType); deviceIdentifier.setId(identifier); try { - return this.getServiceProvider().setOwnership(deviceIdentifier, ownership); + boolean isOwnershipChanged = APIUtil.getDeviceManagementService() + .setOwnership(deviceIdentifier, ownership); + if (isOwnershipChanged) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/{type}/identifier/{identifier}/status") + @Path("/devices/{deviceType}/{identifier}/enrollment/status") @PUT @Consumes("application/json") @Produces("application/json") - public boolean setStatus(@PathParam("type") String type, @PathParam("identifier") String identifier, - @FormParam("owner") String owner, @FormParam("status") EnrolmentInfo.Status status){ + public Response setStatus(@PathParam("deviceType") String deviceType, + @PathParam("identifier") String identifier, @FormParam("owner") String owner, + @FormParam("status") EnrolmentInfo.Status status) { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); - deviceIdentifier.setType(type); + deviceIdentifier.setType(deviceType); deviceIdentifier.setId(identifier); try { - return this.getServiceProvider().setStatus(deviceIdentifier, owner, status); + boolean isStatusChanged = APIUtil.getDeviceManagementService() + .setStatus(deviceIdentifier, owner, status); + if (isStatusChanged) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (DeviceManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/{type}/identifier/{identifier}/sensor/{sensorName}") + @Path("/devices/{deviceType}/{identifier}/sensors/{sensorName}") @POST @Consumes("application/json") @Produces("application/json") - public boolean setSensorValue(@PathParam("type") String type, @PathParam("identifier") String deviceId, - @PathParam("sensorName") String sensorName, - @HeaderParam("sensorValue") String sensorValue){ - - try { - return SensorDataManager.getInstance().setSensorRecord(deviceId, sensorName, sensorValue, Calendar - .getInstance().getTimeInMillis()); - } finally { - this.endTenantFlow(); + public Response setSensorValue(@PathParam("deviceType") String deviceType, + @PathParam("identifier") String deviceId, + @PathParam("sensorName") String sensorName, + @FormParam("sensorValue") String sensorValue) { + boolean isValueSet = SensorDataManager.getInstance().setSensorRecord(deviceId, sensorName, + sensorValue, Calendar.getInstance().getTimeInMillis()); + if (isValueSet) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/device/type/{type}/identifier/{identifier}/sensor/{sensorName}") + @Path("/devices/{deviceType}/{identifier}/sensors/{sensorName}") @GET @Consumes("application/json") @Produces("application/json") - public SensorRecord getSensorValue(@PathParam("type") String type, @PathParam("identifier") String deviceId, - @PathParam("sensorName") String sensorName, @HeaderParam("defaultValue") String defaultValue){ + public Response getSensorValue(@PathParam("deviceType") String deviceType, + @PathParam("identifier") String deviceId, + @PathParam("sensorName") String sensorName, + @QueryParam("defaultValue") String defaultValue) { try { - return SensorDataManager.getInstance().getSensorRecord(deviceId, sensorName); + SensorRecord sensorRecord = SensorDataManager.getInstance().getSensorRecord(deviceId, sensorName); + if (sensorRecord != null) { + return Response.status(Response.Status.OK).entity(sensorRecord).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (DeviceControllerException e) { log.error("Error on reading sensor value: " + e.getMessage()); - if(defaultValue != null){ - return new SensorRecord(defaultValue, Calendar.getInstance().getTimeInMillis()); - }else{ - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; + if (defaultValue != null) { + SensorRecord sensorRecord = new SensorRecord(defaultValue, + Calendar.getInstance().getTimeInMillis()); + return Response.status(Response.Status.OK).entity(sensorRecord).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - } finally { - this.endTenantFlow(); } } -} +} \ No newline at end of file diff --git a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/GroupManagerService.java b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/GroupManagerService.java index 335a3c79e..2776534d9 100644 --- a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/GroupManagerService.java +++ b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/GroupManagerService.java @@ -21,21 +21,16 @@ package org.wso2.carbon.device.mgt.iot.api; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.wso2.carbon.context.CarbonContext; import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.device.mgt.common.Device; import org.wso2.carbon.device.mgt.common.DeviceIdentifier; -import org.wso2.carbon.device.mgt.common.PaginationRequest; -import org.wso2.carbon.device.mgt.common.PaginationResult; import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup; import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException; import org.wso2.carbon.device.mgt.common.group.mgt.GroupUser; import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService; +import org.wso2.carbon.device.mgt.iot.util.APIUtil; import org.wso2.carbon.device.mgt.iot.util.ResponsePayload; -import javax.jws.WebService; -import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.FormParam; import javax.ws.rs.GET; @@ -45,12 +40,10 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; import java.util.Date; import java.util.List; -@WebService public class GroupManagerService { private static final String DEFAULT_ADMIN_ROLE = "admin"; @@ -69,46 +62,21 @@ public class GroupManagerService { private static Log log = LogFactory.getLog(GroupManagerService.class); - @Context //injected response proxy supporting multiple threads - private HttpServletResponse response; - private PrivilegedCarbonContext ctx; - - private GroupManagementProviderService getServiceProvider() { - String tenantDomain = CarbonContext.getThreadLocalCarbonContext().getTenantDomain(); - String username = CarbonContext.getThreadLocalCarbonContext().getUsername(); - PrivilegedCarbonContext.startTenantFlow(); - ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - ctx.setTenantDomain(tenantDomain, true); - if (log.isDebugEnabled()) { - log.debug("Getting thread local carbon context for tenant domain: " + tenantDomain); - } - return (GroupManagementProviderService) ctx.getOSGiService(GroupManagementProviderService.class, null); - } - - private void endTenantFlow() { - PrivilegedCarbonContext.endTenantFlow(); - ctx = null; - if (log.isDebugEnabled()) { - log.debug("Tenant flow ended"); - } - } - - @Path("/group") + @Path("/groups") @POST - @Consumes("application/json") @Produces("application/json") - public Response createGroup(@FormParam("name") String name, - @FormParam("username") String username, - @FormParam("description") String description) { + public Response createGroup(@FormParam("groupName") String groupName, + @FormParam("userName") String username, + @FormParam("description") String description) { DeviceGroup group = new DeviceGroup(); - group.setName(name); + group.setName(username); group.setDescription(description); group.setOwner(username); group.setDateOfCreation(new Date().getTime()); group.setDateOfLastUpdate(new Date().getTime()); boolean isAdded = false; try { - GroupManagementProviderService groupManagementService = this.getServiceProvider(); + GroupManagementProviderService groupManagementService = APIUtil.getGroupManagementProviderService(); int groupId = groupManagementService.createGroup(group, DEFAULT_ADMIN_ROLE, DEFAULT_ADMIN_PERMISSIONS); if (groupId == -2) { ResponsePayload responsePayload = new ResponsePayload(); @@ -134,451 +102,374 @@ public class GroupManagerService { } } catch (GroupManagementException e) { return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); - } finally { - this.endTenantFlow(); } } - @Path("/group/id/{groupId}") + @Path("/groups/{groupId}") @PUT - @Consumes("application/json") @Produces("application/json") - public boolean updateGroup(@PathParam("groupId") int groupId, @FormParam("name") String name, - @FormParam("username") String username, - @FormParam("description") String description) { - if (!isAuthorized(username, groupId, "/permission/device-mgt/admin/groups/modify")) { - response.setStatus(Response.Status.FORBIDDEN.getStatusCode()); - return false; - } + public Response updateGroup(@PathParam("groupId") int groupId, @FormParam("groupName") String groupName, + @FormParam("userName") String userName, + @FormParam("description") String description) { try { - GroupManagementProviderService groupManagementService = this.getServiceProvider(); + GroupManagementProviderService groupManagementService = APIUtil.getGroupManagementProviderService(); DeviceGroup group = groupManagementService.getGroup(groupId); - group.setName(name); + group.setName(groupName); group.setDescription(description); - group.setOwner(username); + group.setOwner(userName); group.setDateOfLastUpdate(new Date().getTime()); - response.setStatus(Response.Status.OK.getStatusCode()); + Response.status(Response.Status.OK.getStatusCode()); groupManagementService.updateGroup(group); - return true; + return Response.status(Response.Status.NO_CONTENT).build(); } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); log.error(e.getErrorMessage(), e); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/group/id/{groupId}") + @Path("/groups/{groupId}") @DELETE - @Consumes("application/json") @Produces("application/json") - public boolean deleteGroup(@PathParam("groupId") int groupId, - @QueryParam("username") String username) { - if (!isAuthorized(username, groupId, "/permission/device-mgt/admin/groups/delete")) { - response.setStatus(Response.Status.FORBIDDEN.getStatusCode()); - return false; + public Response deleteGroup(@PathParam("groupId") int groupId, @QueryParam("userName") String userName) { + + if (!checkAuthorize(getCurrentUserName(), groupId, "/permission/device-mgt/admin/groups/delete")) { + return Response.status(Response.Status.FORBIDDEN).build(); } - boolean isDeleted = false; + try { - response.setStatus(Response.Status.OK.getStatusCode()); - isDeleted = this.getServiceProvider().deleteGroup(groupId); + boolean isDeleted = APIUtil.getGroupManagementProviderService().deleteGroup( + groupId); + if (isDeleted) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage()); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - return isDeleted; } - @Path("/group/id/{groupId}") + @Path("/groups/{groupId}") @GET - @Consumes("application/json") @Produces("application/json") - public DeviceGroup getGroup(@PathParam("groupId") int groupId, - @FormParam("username") String username) { - DeviceGroup deviceGroup = null; + public Response getGroup(@PathParam("groupId") int groupId) { try { - response.setStatus(Response.Status.OK.getStatusCode()); - deviceGroup = this.getServiceProvider().getGroup(groupId); + DeviceGroup deviceGroup = APIUtil.getGroupManagementProviderService().getGroup( + groupId); + if (deviceGroup != null) { + return Response.status(Response.Status.OK).entity(deviceGroup).build(); + } else { + return Response.status(Response.Status.NOT_FOUND).build(); + } } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - return deviceGroup; } - @Path("/group/name/{groupName}") + @Path("/groups/search") @GET - @Consumes("application/json") @Produces("application/json") - public DeviceGroup[] findGroups(@PathParam("groupName") String groupName, - @FormParam("username") String username) { - DeviceGroup[] deviceGroups = null; + public Response findGroups(@QueryParam("groupName") String groupName, + @QueryParam("userName") String userName) { try { - List groups = this.getServiceProvider().findInGroups(groupName, username); - deviceGroups = new DeviceGroup[groups.size()]; - response.setStatus(Response.Status.OK.getStatusCode()); + List groups = APIUtil.getGroupManagementProviderService() + .findInGroups(groupName, userName); + DeviceGroup[] deviceGroups = new DeviceGroup[groups.size()]; groups.toArray(deviceGroups); + return Response.status(Response.Status.OK).entity(deviceGroups).build(); } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - return deviceGroups; } - @Path("/group/user/{username}/all") + @Path("/groups") @GET - @Consumes("application/json") @Produces("application/json") - public DeviceGroup[] getGroups(@PathParam("username") String username, - @QueryParam("permission") String permission) { - DeviceGroup[] deviceGroups = null; + public Response getGroups(@QueryParam("userName") String userName, + @QueryParam("permission") String permission) { try { - GroupManagementProviderService groupManagementService = this.getServiceProvider(); + GroupManagementProviderService groupManagementService = APIUtil.getGroupManagementProviderService(); List groups; if (permission != null) { - groups = groupManagementService.getGroups(username, permission); + groups = groupManagementService.getGroups(userName, permission); } else { - groups = groupManagementService.getGroups(username); + groups = groupManagementService.getGroups(userName); } - deviceGroups = new DeviceGroup[groups.size()]; - response.setStatus(Response.Status.OK.getStatusCode()); + DeviceGroup[] deviceGroups = new DeviceGroup[groups.size()]; groups.toArray(deviceGroups); + return Response.status(Response.Status.OK).entity(deviceGroups).build(); } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - return deviceGroups; } - @Path("/group/user/{username}/all/count") + @Path("/groups/count") @GET - @Consumes("application/json") @Produces("application/json") - public int getGroupCount(@PathParam("username") String username) { - int count = -1; + public Response getGroupCount(@QueryParam("userName") String userName) { try { - response.setStatus(Response.Status.OK.getStatusCode()); - count = this.getServiceProvider().getGroupCount(username); + int count = APIUtil.getGroupManagementProviderService().getGroupCount(userName); + return Response.status(Response.Status.OK).entity(count).build(); } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - return count; } - @Path("/group/id/{groupId}/share") - @POST - @Consumes("application/json") + @Path("/groups/{groupId}/share") + @PUT @Produces("application/json") - public boolean shareGroup(@FormParam("username") String username, - @FormParam("shareUser") String shareUser, - @PathParam("groupId") int groupId, - @FormParam("role") String sharingRole) { - if (!isAuthorized(username, groupId, "/permission/device-mgt/admin/groups/share")) { - response.setStatus(Response.Status.FORBIDDEN.getStatusCode()); - return false; + public Response shareGroup(@FormParam("userName") String userName, + @FormParam("shareUser") String shareUser, @PathParam("groupId") int groupId, + @FormParam("roleName") String sharingRole) { + if (!checkAuthorize(getCurrentUserName(), groupId, "/permission/device-mgt/admin/groups/share")) { + return Response.status(Response.Status.FORBIDDEN).build(); } - boolean isShared = false; + try { - response.setStatus(Response.Status.OK.getStatusCode()); - isShared = this.getServiceProvider().shareGroup(shareUser, groupId, sharingRole); + boolean isShared = APIUtil.getGroupManagementProviderService().shareGroup( + shareUser, groupId, sharingRole); + if (isShared) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - return isShared; } - @Path("/group/id/{groupId}/unshare") - @POST - @Consumes("application/json") + @Path("/groups/{groupId}/unshare") + @PUT @Produces("application/json") - public boolean unShareGroup(@FormParam("username") String username, - @FormParam("unShareUser") String unShareUser, - @PathParam("groupId") int groupId, - @FormParam("role") String sharingRole) { - if (!isAuthorized(username, groupId, "/permission/device-mgt/admin/groups/share")) { - response.setStatus(Response.Status.FORBIDDEN.getStatusCode()); - return false; + public Response unShareGroup(@FormParam("userName") String userName, + @FormParam("unShareUser") String unShareUser, + @PathParam("groupId") int groupId, + @FormParam("roleName") String sharingRole) { + if (!checkAuthorize(getCurrentUserName(), groupId, "/permission/device-mgt/admin/groups/share")) { + return Response.status(Response.Status.FORBIDDEN).build(); } - boolean isUnShared = false; + try { - response.setStatus(Response.Status.OK.getStatusCode()); - isUnShared = this.getServiceProvider().unshareGroup(unShareUser, groupId, sharingRole); + boolean isUnShared = APIUtil.getGroupManagementProviderService().unshareGroup( + unShareUser, groupId, sharingRole); + if (isUnShared) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - return isUnShared; } - @Path("/group/id/{groupId}/role") - @POST - @Consumes("application/json") + @Path("/groups/{groupId}/share/roles/{roleName}/permissions") + @PUT @Produces("application/json") - public boolean addSharing(@FormParam("username") String username, - @PathParam("groupId") int groupId, - @FormParam("role") String roleName, - @FormParam("permissions") String[] permissions) { - if (!isAuthorized(username, groupId, "/permission/device-mgt/admin/groups/share")) { - response.setStatus(Response.Status.FORBIDDEN.getStatusCode()); - return false; + public Response addSharing(@QueryParam("userName") String userName, @PathParam("groupId") int groupId, + @PathParam("roleName") String roleName, + @FormParam("permissions") String[] permissions) { + if (!checkAuthorize(getCurrentUserName(), groupId, "/permission/device-mgt/admin/groups/share")) { + return Response.status(Response.Status.FORBIDDEN).build(); } - boolean isAdded = false; + try { - response.setStatus(Response.Status.OK.getStatusCode()); - isAdded = this.getServiceProvider().addGroupSharingRole(username, groupId, roleName, permissions); + boolean isAdded = APIUtil.getGroupManagementProviderService().addGroupSharingRole( + userName, groupId, roleName, permissions); + if (isAdded) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - return isAdded; } - @Path("/group/id/{groupId}/role/{role}") @DELETE - @Consumes("application/json") + @Path("/groups/{groupId}/share/roles/{roleName}/permissions") @Produces("application/json") - public boolean removeSharing(@QueryParam("username") String username, - @PathParam("groupId") int groupId, - @PathParam("role") String roleName) { - if (!isAuthorized(username, groupId, "/permission/device-mgt/admin/groups/share")) { - response.setStatus(Response.Status.FORBIDDEN.getStatusCode()); - } - boolean isRemoved = false; - try { - response.setStatus(Response.Status.OK.getStatusCode()); - isRemoved = this.getServiceProvider().removeGroupSharingRole(groupId, roleName); - } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + public Response removeSharing(@QueryParam("userName") String userName, @PathParam("groupId") int groupId, + @PathParam("roleName") String roleName) { + if (!checkAuthorize(getCurrentUserName(), groupId, "/permission/device-mgt/admin/groups/share")) { + return Response.status(Response.Status.FORBIDDEN).build(); } - return isRemoved; - } - @Path("/group/id/{groupId}/role/all") - @GET - @Consumes("application/json") - @Produces("application/json") - public String[] getRoles(@PathParam("groupId") int groupId) { - String[] rolesArray = null; try { - List roles = this.getServiceProvider().getRoles(groupId); - rolesArray = new String[roles.size()]; - response.setStatus(Response.Status.OK.getStatusCode()); - roles.toArray(rolesArray); + boolean isRemoved = APIUtil.getGroupManagementProviderService().removeGroupSharingRole( + groupId, roleName); + if (isRemoved) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - return rolesArray; } - @Path("/group/id/{groupId}/{user}/role/all") @GET - @Consumes("application/json") + @Path("/groups/{groupId}/share/roles") @Produces("application/json") - public String[] getRoles(@PathParam("user") String user, @PathParam("groupId") int groupId) { - String[] rolesArray = null; + public Response getRoles(@PathParam("groupId") int groupId, @QueryParam("userName") String userName) { try { - List roles = this.getServiceProvider().getRoles(user, groupId); - rolesArray = new String[roles.size()]; - response.setStatus(Response.Status.OK.getStatusCode()); + List roles; + if (userName != null && !userName.isEmpty()) { + roles = APIUtil.getGroupManagementProviderService().getRoles(userName, + groupId); + } else { + roles = APIUtil.getGroupManagementProviderService().getRoles(groupId); + } + String[] rolesArray = new String[roles.size()]; roles.toArray(rolesArray); + return Response.status(Response.Status.OK).entity(rolesArray).build(); } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - return rolesArray; } - @Path("/group/id/{groupId}/user/all") @GET - @Consumes("application/json") + @Path("/groups/{groupId}/users") @Produces("application/json") - public GroupUser[] getUsers(@PathParam("groupId") int groupId) { - GroupUser[] usersArray = null; + public Response getUsers(@PathParam("groupId") int groupId) { try { - List users = this.getServiceProvider().getUsers(groupId); - usersArray = new GroupUser[users.size()]; - response.setStatus(Response.Status.OK.getStatusCode()); + List users = APIUtil.getGroupManagementProviderService().getUsers( + groupId); + GroupUser[] usersArray = new GroupUser[users.size()]; users.toArray(usersArray); + return Response.status(Response.Status.OK).entity(usersArray).build(); } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - return usersArray; } - @Path("/group/id/{groupId}/device/all") @GET - @Consumes("application/json") + @Path("/groups/{groupId}/devices/all") @Produces("application/json") - public Device[] getDevices(@PathParam("groupId") int groupId) { - Device[] deviceArray = null; + public Response getDevices(@PathParam("groupId") int groupId) { try { - List devices = this.getServiceProvider().getDevices(groupId); - deviceArray = new Device[devices.size()]; - response.setStatus(Response.Status.OK.getStatusCode()); + List devices = APIUtil.getGroupManagementProviderService().getDevices( + groupId); + Device[] deviceArray = new Device[devices.size()]; devices.toArray(deviceArray); + return Response.status(Response.Status.OK).entity(deviceArray).build(); } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - return deviceArray; } - @Path("/group/id/{groupId}/device/count") @GET - @Consumes("application/json") + @Path("/groups/{groupId}/devices/count") @Produces("application/json") - public int getDeviceCount(@PathParam("groupId") int groupId) { + public Response getDeviceCount(@PathParam("groupId") int groupId) { try { - return this.getServiceProvider().getDeviceCount(groupId); + int count = APIUtil.getGroupManagementProviderService().getDeviceCount(groupId); + return Response.status(Response.Status.OK).entity(count).build(); } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - return -1; - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @Path("/group/id/{groupId}/device") - @GET - @Consumes("application/json") - @Produces("application/json") - public List getDevices(@PathParam("groupId") int groupId, - @QueryParam("index") int index, - @QueryParam("limit") int limit) { - try { - PaginationRequest request = new PaginationRequest(index, limit); - return this.getServiceProvider().getDevices(groupId, request); - } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - return null; - } finally { - this.endTenantFlow(); - } - } - - @Path("/group/id/{groupId}/device/assign") @PUT - @Consumes("application/json") + @Path("/groups/{groupId}/devices/{deviceType}/{deviceId}") @Produces("application/json") - public boolean addDevice(@PathParam("groupId") int groupId, - @FormParam("deviceId") String deviceId, - @FormParam("deviceType") String deviceType, - @FormParam("username") String username) { - if (!isAuthorized(username, groupId, "/permission/device-mgt/admin/groups/add_devices")) { - response.setStatus(Response.Status.FORBIDDEN.getStatusCode()); - return false; + public Response addDevice(@PathParam("groupId") int groupId, @PathParam("deviceId") String deviceId, + @PathParam("deviceType") String deviceType, + @FormParam("userName") String userName) { + if (!checkAuthorize(getCurrentUserName(), groupId, + "/permission/device-mgt/admin/groups/add_devices")) { + return Response.status(Response.Status.FORBIDDEN).build(); } - boolean isAdded = false; try { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(deviceId, deviceType); - response.setStatus(Response.Status.OK.getStatusCode()); - isAdded = this.getServiceProvider().addDevice(deviceIdentifier, groupId); + boolean isAdded = APIUtil.getGroupManagementProviderService().addDevice( + deviceIdentifier, groupId); + if (isAdded) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - return isAdded; } - @Path("/group/id/{groupId}/device/assign") @DELETE - @Consumes("application/json") + @Path("/groups/{groupId}/devices/{deviceType}/{deviceId}") @Produces("application/json") - public boolean removeDevice(@PathParam("groupId") int groupId, - @FormParam("deviceId") String deviceId, - @FormParam("deviceType") String deviceType, - @FormParam("username") String username) { - if (!isAuthorized(username, groupId, "/permission/device-mgt/admin/groups/remove_devices")) { - response.setStatus(Response.Status.FORBIDDEN.getStatusCode()); - return false; + public Response removeDevice(@PathParam("groupId") int groupId, @PathParam("deviceId") String deviceId, + @PathParam("deviceType") String deviceType) { + if (!checkAuthorize(getCurrentUserName(), groupId, + "/permission/device-mgt/admin/groups/remove_devices")) { + return Response.status(Response.Status.FORBIDDEN).build(); } - boolean isRemoved = false; try { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(deviceId, deviceType); - response.setStatus(Response.Status.OK.getStatusCode()); - isRemoved = this.getServiceProvider().removeDevice(deviceIdentifier, groupId); + boolean isRemoved = APIUtil.getGroupManagementProviderService().removeDevice( + deviceIdentifier, groupId); + if (isRemoved) { + return Response.status(Response.Status.NO_CONTENT).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - return isRemoved; } - @Path("/group/id/{groupId}/user/{username}/permissions") @GET - @Consumes("application/json") + @Path("/groups/{groupId}/users/{userName}/permissions") @Produces("application/json") - public String[] getPermissions(@PathParam("username") String username, + public Response getPermissions(@PathParam("userName") String userName, @PathParam("groupId") int groupId) { - String[] permissions = null; try { - response.setStatus(Response.Status.OK.getStatusCode()); - permissions = this.getServiceProvider().getPermissions(username, groupId); + String[] permissions = APIUtil.getGroupManagementProviderService() + .getPermissions(userName, groupId); + return Response.status(Response.Status.OK).entity(permissions).build(); } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - return permissions; } - @Path("/group/id/{groupId}/user/{username}/authorized") @GET - @Consumes("application/json") + @Path("/groups/{groupId}/users/{userName}/authorized") @Produces("application/json") - public boolean isAuthorized(@PathParam("username") String username, - @PathParam("groupId") int groupId, - @QueryParam("permission") String permission) { - boolean isAuthorized = false; + public Response isAuthorized(@PathParam("userName") String userName, @PathParam("groupId") int groupId, + @QueryParam("permission") String permission) { + boolean isAuthorized = checkAuthorize(userName, groupId, permission); + if (isAuthorized) { + return Response.status(Response.Status.OK).build(); + } else { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } + } + + private boolean checkAuthorize(String userName, int groupId, String permission) { try { - response.setStatus(Response.Status.OK.getStatusCode()); - isAuthorized = this.getServiceProvider().isAuthorized(username, groupId, permission); + return APIUtil.getGroupManagementProviderService().isAuthorized(userName, groupId, permission); } catch (GroupManagementException e) { - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - log.error(e.getErrorMessage(), e); - } finally { - this.endTenantFlow(); + log.error(e.getMessage(), e); + return false; } - return isAuthorized; } -} + private String getCurrentUserName() { + return PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername(); + } + +} \ No newline at end of file diff --git a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/PolicyManagementService.java b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/PolicyManagementService.java index 702ea89ed..d9a928457 100644 --- a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/PolicyManagementService.java +++ b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/api/PolicyManagementService.java @@ -24,6 +24,7 @@ import org.wso2.carbon.context.CarbonContext; import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.iot.util.APIUtil; import org.wso2.carbon.policy.mgt.common.Policy; import org.wso2.carbon.policy.mgt.common.PolicyAdministratorPoint; import org.wso2.carbon.policy.mgt.common.PolicyManagementException; @@ -40,190 +41,108 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; import java.util.List; -@WebService public class PolicyManagementService { - private static Log log = LogFactory.getLog(PolicyManagementService.class); - - @Context //injected response proxy supporting multiple thread - private HttpServletResponse response; - - private PrivilegedCarbonContext ctx; - - private PolicyManagerService getPolicyServiceProvider() throws DeviceManagementException { - String tenantDomain = CarbonContext.getThreadLocalCarbonContext().getTenantDomain(); - PrivilegedCarbonContext.startTenantFlow(); - ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - ctx.setTenantDomain(tenantDomain, true); - - if (log.isDebugEnabled()) { - log.debug("Getting thread local carbon context for tenant domain: " + tenantDomain); - } - - PolicyManagerService policyManagerService = (PolicyManagerService) ctx.getOSGiService( - PolicyManagerService.class, null); - - if (policyManagerService == null) { - String msg = "Policy Management service not initialized"; - log.error(msg); - throw new DeviceManagementException(msg); - } - - return policyManagerService; - } - - private void endTenantFlow() { - PrivilegedCarbonContext.endTenantFlow(); - ctx = null; - if (log.isDebugEnabled()) { - log.debug("Tenant flow ended"); - } - } + private static final Log log = LogFactory.getLog(PolicyManagementService.class); @POST - @Path("/inactive-policy") + @Path("/policies/inactive") @Produces("application/json") - public boolean addPolicy(Policy policy) { - - try { - PolicyManagerService policyManagerService = getPolicyServiceProvider(); - PolicyAdministratorPoint pap = policyManagerService.getPAP(); - pap.addPolicy(policy); - response.setStatus(Response.Status.CREATED.getStatusCode()); - if (log.isDebugEnabled()) { - log.debug("Policy has been added successfully."); - } - return true; - } catch (PolicyManagementException e) { - String error = "Policy Management related exception."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } catch (DeviceManagementException e) { - String error = "Error occurred while invoking Policy Management Service."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); - } + public Response addInactivePolicy(@FormParam("policy") Policy policy) { + return addPolicy(policy); } @POST - @Path("/active-policy") + @Path("/policies/active") @Produces("application/json") - public boolean addActivePolicy(Policy policy) { - + public Response addActivePolicy(@FormParam("policy") Policy policy) { policy.setActive(true); + return addPolicy(policy); + } + private Response addPolicy(Policy policy) { try { - PolicyManagerService policyManagerService = getPolicyServiceProvider(); + PolicyManagerService policyManagerService = APIUtil.getPolicyManagerService(); PolicyAdministratorPoint pap = policyManagerService.getPAP(); pap.addPolicy(policy); - response.setStatus(Response.Status.CREATED.getStatusCode()); if (log.isDebugEnabled()) { log.debug("Policy has been added successfully."); } - return true; - } catch (PolicyManagementException e) { + return Response.status(Response.Status.NO_CONTENT).build(); + } catch (PolicyManagementException e) { String error = "Policy Management related exception."; log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } catch (DeviceManagementException e) { - String error = "Error occurred while invoking Policy Management Service."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } @GET + @Path("/policies") @Produces("application/json") - public Policy[] getAllPolicies() { + public Response getAllPolicies() { + try { - PolicyManagerService policyManagerService = getPolicyServiceProvider(); + PolicyManagerService policyManagerService = APIUtil.getPolicyManagerService(); PolicyAdministratorPoint policyAdministratorPoint = policyManagerService.getPAP(); List policies = policyAdministratorPoint.getPolicies(); - return policyAdministratorPoint.getPolicies().toArray(new Policy[policies.size()]); - } catch (PolicyManagementException e) { + Policy[] policyArr = policyAdministratorPoint.getPolicies().toArray(new Policy[policies.size()]); + return Response.status(Response.Status.OK).entity(policyArr).build(); + } catch (PolicyManagementException e) { String error = "Policy Management related exception"; log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } catch (DeviceManagementException e) { - String error = "Error occurred while invoking Policy Management Service."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } @GET + @Path("/policies/{policyId}") @Produces("application/json") - @Path("/{id}") - public Policy getPolicy(@PathParam("id") int policyId) { + public Response getPolicy(@PathParam("policyId") int policyId) { + try { - PolicyManagerService policyManagerService = getPolicyServiceProvider(); + PolicyManagerService policyManagerService = APIUtil.getPolicyManagerService(); PolicyAdministratorPoint policyAdministratorPoint = policyManagerService.getPAP(); Policy policy = policyAdministratorPoint.getPolicy(policyId); if (policy != null) { if (log.isDebugEnabled()) { log.debug("Sending policy for ID " + policyId); } - return policy; + return Response.status(Response.Status.OK).entity(policy).build(); } else { log.error("Policy for ID " + policyId + " not found."); - response.setStatus(Response.Status.NOT_FOUND.getStatusCode()); - return null; + return Response.status(Response.Status.NOT_FOUND).build(); } - } catch (PolicyManagementException e) { + } catch (PolicyManagementException e) { String error = "Policy Management related exception"; log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } catch (DeviceManagementException e) { - String error = "Error occurred while invoking Policy Management Service."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } @GET - @Path("/count") - public int getPolicyCount() { + @Path("/policies/inactive/count") + @Produces("application/json") + public Response getPolicyCount() { + try { - PolicyManagerService policyManagerService = getPolicyServiceProvider(); + PolicyManagerService policyManagerService = APIUtil.getPolicyManagerService(); PolicyAdministratorPoint policyAdministratorPoint = policyManagerService.getPAP(); - return policyAdministratorPoint.getPolicyCount(); - } catch (PolicyManagementException e) { + int policyCount = policyAdministratorPoint.getPolicyCount(); + return Response.status(Response.Status.OK).entity(policyCount).build(); + } catch (PolicyManagementException e) { String error = "Policy Management related exception"; log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return -1; - } catch (DeviceManagementException e) { - String error = "Error occurred while invoking Policy Management Service."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return -1; - } finally { - this.endTenantFlow(); - } + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } @PUT - @Path("/{id}") + @Path("/policies/{policyId}") @Produces("application/json") - public boolean updatePolicy(Policy policy, @PathParam("id") int policyId) { + public Response updatePolicy(@FormParam("policy") Policy policy, @PathParam("policyId") int policyId) { + try { - PolicyManagerService policyManagerService = getPolicyServiceProvider(); + PolicyManagerService policyManagerService = APIUtil.getPolicyManagerService(); PolicyAdministratorPoint pap = policyManagerService.getPAP(); Policy previousPolicy = pap.getPolicy(policyId); policy.setProfile(pap.getProfile(previousPolicy.getProfileId())); @@ -232,64 +151,49 @@ public class PolicyManagementService { if (log.isDebugEnabled()) { log.debug("Policy with ID " + policyId + " has been updated successfully."); } - return true; - } catch (PolicyManagementException e) { + return Response.status(Response.Status.NO_CONTENT).build(); + } catch (PolicyManagementException e) { String error = "Policy Management related exception"; log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } catch (DeviceManagementException e) { - String error = "Error occurred while invoking Policy Management Service."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } @PUT - @Path("/priorities") + @Path("/policies/priorities") @Consumes("application/json") @Produces("application/json") - public boolean updatePolicyPriorities(List priorityUpdatedPolicies) { + public Response updatePolicyPriorities(@FormParam("policies") List priorityUpdatedPolicies) { + try { - PolicyManagerService policyManagerService = getPolicyServiceProvider(); + PolicyManagerService policyManagerService = APIUtil.getPolicyManagerService(); PolicyAdministratorPoint pap = policyManagerService.getPAP(); boolean policiesUpdated = pap.updatePolicyPriorities(priorityUpdatedPolicies); if (policiesUpdated) { if (log.isDebugEnabled()) { log.debug("Policy Priorities successfully updated."); } - return true; + return Response.status(Response.Status.NO_CONTENT).build(); } else { if (log.isDebugEnabled()) { log.debug("Policy priorities did not update. Bad Request."); } - response.setStatus(Response.Status.BAD_REQUEST.getStatusCode()); - return false; + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - } catch (PolicyManagementException e) { + } catch (PolicyManagementException e) { String error = "Exception in updating policy priorities."; log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } catch (DeviceManagementException e) { - String error = "Error occurred while invoking Policy Management Service."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } @DELETE - @Path("/{id}") + @Path("/policies/{policyId}") @Produces("application/json") - public boolean deletePolicy(@PathParam("id") int policyId) { + public Response deletePolicy(@PathParam("policyId") int policyId) { + try { - PolicyManagerService policyManagerService = getPolicyServiceProvider(); + PolicyManagerService policyManagerService = APIUtil.getPolicyManagerService(); PolicyAdministratorPoint pap = policyManagerService.getPAP(); Policy policy = pap.getPolicy(policyId); boolean policyDeleted = pap.deletePolicy(policy); @@ -297,211 +201,156 @@ public class PolicyManagementService { if (log.isDebugEnabled()) { log.debug("Policy by id:" + policyId + " has been successfully deleted."); } - return true; + return Response.status(Response.Status.OK).build(); } else { if (log.isDebugEnabled()) { log.debug("Policy by id:" + policyId + " does not exist."); } - response.setStatus(Response.Status.NOT_FOUND.getStatusCode()); - return false; + return Response.status(Response.Status.NOT_FOUND).build(); } - } catch (PolicyManagementException e) { + } catch (PolicyManagementException e) { String error = "Exception in deleting policy by id:" + policyId; log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } catch (DeviceManagementException e) { - String error = "Error occurred while invoking Policy Management Service."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } @PUT + @Path("/policies/{policyId}/activate") @Produces("application/json") - @Path("/activate/{id}") - public boolean activatePolicy(@PathParam("id") int policyId) { + public Response activatePolicy(@PathParam("policyId") int policyId) { + try { - PolicyManagerService policyManagerService = getPolicyServiceProvider(); + PolicyManagerService policyManagerService = APIUtil.getPolicyManagerService(); PolicyAdministratorPoint pap = policyManagerService.getPAP(); pap.activatePolicy(policyId); if (log.isDebugEnabled()) { log.debug("Policy by id:" + policyId + " has been successfully activated."); } - return true; - } catch (PolicyManagementException e) { + return Response.status(Response.Status.NO_CONTENT).build(); + } catch (PolicyManagementException e) { String error = "Exception in activating policy by id:" + policyId; log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } catch (DeviceManagementException e) { - String error = "Error occurred while invoking Policy Management Service."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } @PUT + @Path("/policies/{policyId}/inactivate") @Produces("application/json") - @Path("/inactivate/{id}") - public boolean inactivatePolicy(@PathParam("id") int policyId) { + public Response inactivatePolicy(@PathParam("policyId") int policyId) { try { - PolicyManagerService policyManagerService = getPolicyServiceProvider(); + PolicyManagerService policyManagerService = APIUtil.getPolicyManagerService(); PolicyAdministratorPoint pap = policyManagerService.getPAP(); pap.inactivatePolicy(policyId); if (log.isDebugEnabled()) { log.debug("Policy by id:" + policyId + " has been successfully inactivated."); } - return true; - } catch (PolicyManagementException e) { + return Response.status(Response.Status.NO_CONTENT).build(); + } catch (PolicyManagementException e) { String error = "Exception in inactivating policy by id:" + policyId; log.error(error, e); - return false; - } catch (DeviceManagementException e) { - String error = "Error occurred while invoking Policy Management Service."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } @PUT + @Path("/policies/publish-changes") @Produces("application/json") - @Path("/apply-changes") - public boolean applyChanges() { + public Response publishChanges() { try { - PolicyManagerService policyManagerService = getPolicyServiceProvider(); + PolicyManagerService policyManagerService = APIUtil.getPolicyManagerService(); PolicyAdministratorPoint pap = policyManagerService.getPAP(); pap.publishChanges(); if (log.isDebugEnabled()) { log.debug("Changes have been successfully updated."); } - return true; - } catch (PolicyManagementException e) { + return Response.status(Response.Status.NO_CONTENT).build(); + } catch (PolicyManagementException e) { String error = "Exception in applying changes."; log.error(error, e); - return false; - } catch (DeviceManagementException e) { - String error = "Error occurred while invoking Policy Management Service."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @GET - @Path("/start-task/{milliseconds}") - public boolean startTaskService(@PathParam("milliseconds") int monitoringFrequency) { + @PUT + @Path("/policies/monitor-task/start") + @Produces("application/json") + public Response startTaskService(@FormParam("milliseconds") int monitoringFrequency) { try { - PolicyManagerService policyManagerService = getPolicyServiceProvider(); + PolicyManagerService policyManagerService = APIUtil.getPolicyManagerService(); TaskScheduleService taskScheduleService = policyManagerService.getTaskScheduleService(); taskScheduleService.startTask(monitoringFrequency); if (log.isDebugEnabled()) { log.debug("Policy monitoring service started successfully."); } - return true; + return Response.status(Response.Status.NO_CONTENT).build(); } catch (PolicyMonitoringTaskException e) { String error = "Policy Management related exception."; log.error(error, e); - return false; - } catch (DeviceManagementException e) { - String error = "Error occurred while invoking Policy Management Service."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @GET - @Path("/update-task/{milliseconds}") - public boolean updateTaskService(@PathParam("milliseconds") int monitoringFrequency) { + @PUT + @Path("/policies/monitor-task/update") + @Produces("application/json") + public Response updateTaskService(@FormParam("milliseconds") int monitoringFrequency) { try { - PolicyManagerService policyManagerService = getPolicyServiceProvider(); + PolicyManagerService policyManagerService = APIUtil.getPolicyManagerService();; TaskScheduleService taskScheduleService = policyManagerService.getTaskScheduleService(); taskScheduleService.updateTask(monitoringFrequency); if (log.isDebugEnabled()) { log.debug("Policy monitoring service updated successfully."); } - return true; + return Response.status(Response.Status.NO_CONTENT).build(); } catch (PolicyMonitoringTaskException e) { String error = "Policy Management related exception."; log.error(error, e); - return false; - } catch (DeviceManagementException e) { - String error = "Error occurred while invoking Policy Management Service."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } - @GET - @Path("/stop-task") - public boolean stopTaskService() { - + @PUT + @Path("/policies/monitor-task/stop") + @Produces("application/json") + public Response stopTaskService() { try { - PolicyManagerService policyManagerService = getPolicyServiceProvider(); + PolicyManagerService policyManagerService = APIUtil.getPolicyManagerService(); TaskScheduleService taskScheduleService = policyManagerService.getTaskScheduleService(); taskScheduleService.stopTask(); if (log.isDebugEnabled()) { log.debug("Policy monitoring service stopped successfully."); } - return true; + return Response.status(Response.Status.NO_CONTENT).build(); } catch (PolicyMonitoringTaskException e) { String error = "Policy Management related exception."; log.error(error, e); - return false; - } catch (DeviceManagementException e) { - String error = "Error occurred while invoking Policy Management Service."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return false; - } finally { - this.endTenantFlow(); - } + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } @GET - @Path("/{type}/{id}") - public ComplianceData getComplianceDataOfDevice(@PathParam("id") String deviceId, - @PathParam("type") String deviceType) { + @Path("/policies/compliance/{deviceType}/{deviceId}") + @Produces("application/json") + public Response getComplianceDataOfDevice(@PathParam("deviceId") String deviceId, + @PathParam("deviceType") String deviceType) { try { - PolicyManagerService policyManagerService = getPolicyServiceProvider(); + PolicyManagerService policyManagerService = APIUtil.getPolicyManagerService(); DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); deviceIdentifier.setType(deviceType); deviceIdentifier.setId(deviceId); - return policyManagerService.getDeviceCompliance(deviceIdentifier); - } catch (PolicyComplianceException e) { + ComplianceData complianceData = policyManagerService.getDeviceCompliance(deviceIdentifier); + return Response.status(Response.Status.OK).entity(complianceData).build(); + } catch (PolicyComplianceException e) { String error = "Error occurred while getting the compliance data."; log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } catch (DeviceManagementException e) { - String error = "Error occurred while invoking Policy Management Service."; - log.error(error, e); - response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); - return null; - } finally { - this.endTenantFlow(); - } + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } } -} +} \ No newline at end of file diff --git a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/util/APIUtil.java b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/util/APIUtil.java index 7228b1b73..e18324d12 100644 --- a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/util/APIUtil.java +++ b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot.api/src/main/java/org/wso2/carbon/device/mgt/iot/util/APIUtil.java @@ -23,6 +23,7 @@ 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; +import org.wso2.carbon.policy.mgt.core.PolicyManagerService; /** * This class provides utility functions used by REST-API. @@ -53,4 +54,16 @@ public class APIUtil { } return deviceManagementProviderService; } + + public static PolicyManagerService getPolicyManagerService() { + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + PolicyManagerService policyManagerService = + (PolicyManagerService) ctx.getOSGiService(PolicyManagerService.class, null); + if (policyManagerService == null) { + String msg = "Policy management service has not initialized."; + log.error(msg); + throw new IllegalStateException(msg); + } + return policyManagerService; + } } diff --git a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot/pom.xml b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot/pom.xml index 76bc21a38..0a8f3b296 100644 --- a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot/pom.xml +++ b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot/pom.xml @@ -84,7 +84,8 @@ org.wso2.carbon.device.mgt.common.*, org.eclipse.paho.client.mqttv3.*;version="${eclipse.paho.version}", javax.ws.rs.core, - javax.xml + javax.xml;resolution:=optional, + javax.net.ssl;resolution:=optional !org.wso2.carbon.device.mgt.iot.internal, diff --git a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot/src/main/java/org/wso2/carbon/device/mgt/iot/controlqueue/xmpp/XmppServerClient.java b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot/src/main/java/org/wso2/carbon/device/mgt/iot/controlqueue/xmpp/XmppServerClient.java index 55c86707d..d0d6f15f2 100644 --- a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot/src/main/java/org/wso2/carbon/device/mgt/iot/controlqueue/xmpp/XmppServerClient.java +++ b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot/src/main/java/org/wso2/carbon/device/mgt/iot/controlqueue/xmpp/XmppServerClient.java @@ -33,7 +33,6 @@ import org.apache.http.util.EntityUtils; import org.json.JSONArray; import org.json.JSONObject; import org.wso2.carbon.device.mgt.iot.exception.DeviceControllerException; -import org.wso2.carbon.device.mgt.iot.exception.IoTException; import org.wso2.carbon.device.mgt.iot.util.IoTUtil; import javax.ws.rs.core.MediaType; @@ -140,7 +139,7 @@ public class XmppServerClient { EntityUtils.consume(httpResponse.getEntity()); return true; } - } catch (IOException | IoTException e) { + } catch (IOException e) { String errorMsg = "Error occured whilst trying a 'POST' at : " + xmppUsersAPIEndpoint; log.error(errorMsg); throw new DeviceControllerException(errorMsg, e); @@ -199,7 +198,7 @@ public class XmppServerClient { return false; } - } catch (IOException | IoTException e) { + } catch (IOException e) { String errorMsg = "Error occured whilst trying a 'GET' at : " + xmppCheckUserAPIEndpoint; log.error(errorMsg); throw new DeviceControllerException(errorMsg, e); @@ -266,7 +265,7 @@ public class XmppServerClient { xmppSessions = new JSONObject(response).getJSONArray("session"); return xmppSessions; - } catch (IOException | IoTException e) { + } catch (IOException e) { String errorMsg = "Error occured whilst trying a 'GET' at : " + xmppSessionsAPIEndpoint; log.error(errorMsg); throw new DeviceControllerException(errorMsg, e); diff --git a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot/src/main/java/org/wso2/carbon/device/mgt/iot/util/IoTUtil.java b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot/src/main/java/org/wso2/carbon/device/mgt/iot/util/IoTUtil.java index 76e375e27..8cc76e938 100644 --- a/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot/src/main/java/org/wso2/carbon/device/mgt/iot/util/IoTUtil.java +++ b/components/iot-plugins/iot-base-plugin/org.wso2.carbon.device.mgt.iot/src/main/java/org/wso2/carbon/device/mgt/iot/util/IoTUtil.java @@ -22,18 +22,13 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; -import org.apache.http.conn.scheme.PlainSocketFactory; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.impl.conn.PoolingClientConnectionManager; -import org.apache.http.params.BasicHttpParams; -import org.apache.http.params.HttpParams; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.SSLContextBuilder; +import org.apache.http.conn.ssl.TrustSelfSignedStrategy; +import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.wso2.carbon.base.ServerConfiguration; import org.wso2.carbon.device.mgt.iot.exception.IoTException; -import org.wso2.carbon.device.mgt.iot.internal.IoTCommonDataHolder; import org.wso2.carbon.utils.NetworkUtils; import java.io.BufferedReader; @@ -43,49 +38,33 @@ import java.net.SocketException; import java.security.KeyManagementException; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; -import java.security.UnrecoverableKeyException; public class IoTUtil { public static final String HOST_NAME = "HostName"; private static final Log log = LogFactory.getLog(IoTUtil.class); + private static final String HTTPS_PROTOCOL = "https"; /** * Return a http client instance - * - * @param port - server port * @param protocol- service endpoint protocol http/https * @return */ public static HttpClient getHttpClient(int port, String protocol) - throws UnrecoverableKeyException, NoSuchAlgorithmException, KeyStoreException, - KeyManagementException { - SchemeRegistry registry = new SchemeRegistry(); - - if ("https".equals(protocol)) { - System.setProperty("javax.net.ssl.trustStrore", IoTCommonDataHolder.getInstance().getTrustStoreLocation()); - System.setProperty("javax.net.ssl.trustStorePassword", - IoTCommonDataHolder.getInstance().getTrustStorePassword()); - - if (port >= 0) { - registry.register(new Scheme("https", port, SSLSocketFactory.getSocketFactory())); - } else { - registry.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory())); - } - } else if ("http".equals(protocol)) { - if (port >= 0) { - registry.register(new Scheme("http", port, PlainSocketFactory.getSocketFactory())); - } else { - registry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory())); - } + throws IOException, KeyStoreException, NoSuchAlgorithmException, KeyManagementException { + HttpClient httpclient; + if (HTTPS_PROTOCOL.equals(protocol)) { + SSLContextBuilder builder = new SSLContextBuilder(); + builder.loadTrustMaterial(null, new TrustSelfSignedStrategy()); + SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(builder.build()); + httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build(); + } else { + httpclient = HttpClients.createDefault(); } - HttpParams params = new BasicHttpParams(); - PoolingClientConnectionManager tcm = new PoolingClientConnectionManager(registry); - HttpClient client = new DefaultHttpClient(tcm, params); - return client; + return httpclient; } - public static String getResponseString(HttpResponse httpResponse) throws IoTException { + public static String getResponseString(HttpResponse httpResponse) throws IOException { BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent())); @@ -95,9 +74,6 @@ public class IoTUtil { response += readLine; } return response; - } catch (IOException e) { - throw new IoTException("Error while reading the response from the remote. " - + e.getMessage(), e); } finally { EntityUtils.consumeQuietly(httpResponse.getEntity()); if (br != null) { diff --git a/components/iot-plugins/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.plugin.impl/src/main/java/org/wso2/carbon/device/mgt/iot/raspberrypi/plugin/impl/RaspberrypiManagerService.java b/components/iot-plugins/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.plugin.impl/src/main/java/org/wso2/carbon/device/mgt/iot/raspberrypi/plugin/impl/RaspberrypiManagerService.java index 96ce170ef..963475d4c 100644 --- a/components/iot-plugins/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.plugin.impl/src/main/java/org/wso2/carbon/device/mgt/iot/raspberrypi/plugin/impl/RaspberrypiManagerService.java +++ b/components/iot-plugins/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.plugin.impl/src/main/java/org/wso2/carbon/device/mgt/iot/raspberrypi/plugin/impl/RaspberrypiManagerService.java @@ -33,6 +33,7 @@ import java.util.List; public class RaspberrypiManagerService implements DeviceManagementService { private DeviceManager deviceManager; + private final static String DEVICE_TYPE_PROVIDER_DOMAIN = "carbon.super"; @Override public String getType() { @@ -41,12 +42,12 @@ public class RaspberrypiManagerService implements DeviceManagementService { @Override public String getProviderTenantDomain() { - return "carbon.super"; + return DEVICE_TYPE_PROVIDER_DOMAIN; } @Override public boolean isSharedWithAllTenants() { - return false; + return true; } @Override diff --git a/components/iot-plugins/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.service.impl/pom.xml b/components/iot-plugins/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.service.impl/pom.xml index 1800946bb..de1d3e2a4 100644 --- a/components/iot-plugins/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.service.impl/pom.xml +++ b/components/iot-plugins/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.service.impl/pom.xml @@ -21,16 +21,15 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - device-mgt-iot-raspberrypi + raspberrypi-plugin org.wso2.carbon.devicemgt-plugins - 2.0.4-SNAPSHOT + 2.1.0-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.iot.raspberrypi.service.impl - 2.0.4-SNAPSHOT war WSO2 Carbon - IoT Server RaspberryPi API WSO2 Carbon - RaspberryPi Service API Implementation @@ -120,7 +119,6 @@ org.wso2.carbon.devicemgt org.wso2.carbon.device.mgt.analytics.data.publisher - 1.1.0-SNAPSHOT provided diff --git a/components/iot-plugins/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.service.impl/src/main/java/org/wso2/carbon/device/mgt/iot/raspberrypi/service/impl/util/RaspberrypiServiceUtils.java b/components/iot-plugins/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.service.impl/src/main/java/org/wso2/carbon/device/mgt/iot/raspberrypi/service/impl/util/RaspberrypiServiceUtils.java index e0c98e7b6..cb4d52c48 100644 --- a/components/iot-plugins/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.service.impl/src/main/java/org/wso2/carbon/device/mgt/iot/raspberrypi/service/impl/util/RaspberrypiServiceUtils.java +++ b/components/iot-plugins/raspberrypi-plugin/org.wso2.carbon.device.mgt.iot.raspberrypi.service.impl/src/main/java/org/wso2/carbon/device/mgt/iot/raspberrypi/service/impl/util/RaspberrypiServiceUtils.java @@ -45,8 +45,6 @@ import java.util.concurrent.Future; public class RaspberrypiServiceUtils { private static final Log log = LogFactory.getLog(RaspberrypiServiceUtils.class); - //TODO; replace this tenant domain - private static final String SUPER_TENANT = "carbon.super"; private static final String TEMPERATURE_STREAM_DEFINITION = "org.wso2.iot.devices.temperature"; public static String sendCommandViaHTTP(final String deviceHTTPEndpoint, String urlContext, diff --git a/components/iot-plugins/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.plugin.impl/src/main/java/org/wso2/carbon/device/mgt/iot/virtualfirealarm/plugin/impl/VirtualFireAlarmManagerService.java b/components/iot-plugins/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.plugin.impl/src/main/java/org/wso2/carbon/device/mgt/iot/virtualfirealarm/plugin/impl/VirtualFireAlarmManagerService.java index 68c8ec94f..214afd849 100644 --- a/components/iot-plugins/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.plugin.impl/src/main/java/org/wso2/carbon/device/mgt/iot/virtualfirealarm/plugin/impl/VirtualFireAlarmManagerService.java +++ b/components/iot-plugins/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.plugin.impl/src/main/java/org/wso2/carbon/device/mgt/iot/virtualfirealarm/plugin/impl/VirtualFireAlarmManagerService.java @@ -32,6 +32,8 @@ import java.util.List; public class VirtualFireAlarmManagerService implements DeviceManagementService{ private DeviceManager deviceManager; + private final static String DEVICE_TYPE_PROVIDER_DOMAIN = "carbon.super"; + @Override public String getType() { return VirtualFireAlarmConstants.DEVICE_TYPE; @@ -40,7 +42,7 @@ public class VirtualFireAlarmManagerService implements DeviceManagementService{ @Override public String getProviderTenantDomain() { - return "carbon.super"; + return DEVICE_TYPE_PROVIDER_DOMAIN; } @Override diff --git a/components/iot-plugins/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.service.impl/pom.xml b/components/iot-plugins/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.service.impl/pom.xml index abb81ac7e..4ff0bf500 100644 --- a/components/iot-plugins/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.service.impl/pom.xml +++ b/components/iot-plugins/virtual-fire-alarm-plugin/org.wso2.carbon.device.mgt.iot.virtualfirealarm.service.impl/pom.xml @@ -21,15 +21,14 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - device-mgt-iot-virtualfirealarm + virtual-fire-alarm-plugin org.wso2.carbon.devicemgt-plugins - 2.0.4-SNAPSHOT + 2.1.0-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.iot.virtualfirealarm.service.impl - 2.0.4-SNAPSHOT war WSO2 Carbon - IoT Server VirtualFireAlarm API WSO2 Carbon - Virtual FireAlarm Service Management API Implementation @@ -57,7 +56,6 @@ org.wso2.carbon.devicemgt org.wso2.carbon.device.mgt.analytics.data.publisher - 1.1.0-SNAPSHOT provided diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/pom.xml b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/pom.xml index 15f5e0f91..33605f760 100644 --- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/pom.xml +++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/pom.xml @@ -57,23 +57,14 @@ org.osgi.service.component, org.apache.commons.logging, javax.xml.bind.*, - javax.naming, javax.sql, - javax.xml.bind.annotation.*, - javax.xml.parsers.*;resolution:=optional, - org.w3c.dom, - org.wso2.carbon.core, org.wso2.carbon.context, - org.wso2.carbon.utils.*, org.wso2.carbon.device.mgt.common.*, org.wso2.carbon.device.mgt.mobile.*, org.wso2.carbon.ndatasource.core, org.wso2.carbon.policy.mgt.common.*, - org.wso2.carbon.policy.mgt.core.*, org.wso2.carbon.registry.core, - org.wso2.carbon.registry.core.exceptions, org.wso2.carbon.registry.core.service, - org.wso2.carbon.registry.core.session, org.wso2.carbon.registry.api, org.wso2.carbon.device.mgt.extensions.license.mgt.registry, com.google.gson.* diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/AndroidDeviceManagementService.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/AndroidDeviceManagementService.java index 9949b69ae..c9f8f2c73 100644 --- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/AndroidDeviceManagementService.java +++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android/src/main/java/org/wso2/carbon/device/mgt/mobile/android/impl/AndroidDeviceManagementService.java @@ -36,12 +36,23 @@ public class AndroidDeviceManagementService implements DeviceManagementService { private DeviceManager deviceManager; public static final String DEVICE_TYPE_ANDROID = "android"; + private static final String SUPER_TENANT_DOMAIN = "carbon.super"; @Override public String getType() { return AndroidDeviceManagementService.DEVICE_TYPE_ANDROID; } + @Override + public String getProviderTenantDomain() { + return SUPER_TENANT_DOMAIN; + } + + @Override + public boolean isSharedWithAllTenants() { + return false; + } + @Override public void init() throws DeviceManagementException { this.deviceManager = new AndroidDeviceManager(); diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/android/AndroidDeviceManagementService.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/android/AndroidDeviceManagementService.java index 18e088ee0..ee2729275 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/android/AndroidDeviceManagementService.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/android/AndroidDeviceManagementService.java @@ -34,12 +34,23 @@ public class AndroidDeviceManagementService implements DeviceManagementService { private DeviceManager deviceManager; public static final String DEVICE_TYPE_ANDROID = "android"; + private static final String SUPER_TENANT_DOMAIN = "carbon.super"; @Override public String getType() { return AndroidDeviceManagementService.DEVICE_TYPE_ANDROID; } + @Override + public String getProviderTenantDomain() { + return SUPER_TENANT_DOMAIN; + } + + @Override + public boolean isSharedWithAllTenants() { + return true; + } + @Override public void init() throws DeviceManagementException { this.deviceManager = new AndroidDeviceManager(); diff --git a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/WindowsDeviceManagementService.java b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/WindowsDeviceManagementService.java index 45426cd35..3ac01a301 100644 --- a/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/WindowsDeviceManagementService.java +++ b/components/mobile-plugins/mobile-base-plugin/org.wso2.carbon.device.mgt.mobile/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/windows/WindowsDeviceManagementService.java @@ -36,12 +36,23 @@ public class WindowsDeviceManagementService implements DeviceManagementService { private DeviceManager deviceManager; public static final String DEVICE_TYPE_WINDOWS = "windows"; + private static final String SUPER_TENANT_DOMAIN = "carbon.super"; @Override public String getType() { return WindowsDeviceManagementService.DEVICE_TYPE_WINDOWS; } + @Override + public String getProviderTenantDomain() { + return SUPER_TENANT_DOMAIN; + } + + @Override + public boolean isSharedWithAllTenants() { + return true; + } + @Override public void init() throws DeviceManagementException { this.deviceManager = new WindowsDeviceManager(); diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/pom.xml b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/pom.xml index 2440f0fff..66b075e66 100644 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/pom.xml +++ b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/pom.xml @@ -57,26 +57,15 @@ org.osgi.service.component, org.apache.commons.logging, javax.xml.bind.*, - javax.naming, javax.sql, - javax.xml.bind.annotation.*, - javax.xml.parsers.*;resolution:=optional, - org.w3c.dom, - org.wso2.carbon.core, - org.wso2.carbon.context, - org.wso2.carbon.utils.*, org.wso2.carbon.device.mgt.common.*, org.wso2.carbon.device.mgt.mobile.*, org.wso2.carbon.ndatasource.core, org.wso2.carbon.policy.mgt.common.*, - org.wso2.carbon.policy.mgt.core.*, org.wso2.carbon.registry.core, - org.wso2.carbon.registry.core.exceptions, org.wso2.carbon.registry.core.service, - org.wso2.carbon.registry.core.session, org.wso2.carbon.registry.api, - org.wso2.carbon.device.mgt.extensions.license.mgt.registry, - com.google.gson.* + org.wso2.carbon.device.mgt.extensions.license.mgt.registry !org.wso2.carbon.device.mgt.mobile.windows.internal, diff --git a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/WindowsDeviceManagementService.java b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/WindowsDeviceManagementService.java index 366fda747..74bb7992f 100644 --- a/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/WindowsDeviceManagementService.java +++ b/components/mobile-plugins/windows-plugin/org.wso2.carbon.device.mgt.mobile.windows/src/main/java/org/wso2/carbon/device/mgt/mobile/windows/impl/WindowsDeviceManagementService.java @@ -36,12 +36,23 @@ public class WindowsDeviceManagementService implements DeviceManagementService { private DeviceManager deviceManager; public static final String DEVICE_TYPE_WINDOWS = "windows"; + private final static String DEVICE_TYPE_PROVIDER_DOMAIN = "carbon.super"; @Override public String getType() { return WindowsDeviceManagementService.DEVICE_TYPE_WINDOWS; } + @Override + public String getProviderTenantDomain() { + return DEVICE_TYPE_PROVIDER_DOMAIN; + } + + @Override + public boolean isSharedWithAllTenants() { + return true; + } + @Override public void init() throws DeviceManagementException { this.deviceManager = new WindowsDeviceManager();