From a92eb8bd3493fbf860dcfe6dbc037187e20c869d Mon Sep 17 00:00:00 2001 From: ayyoob Date: Sun, 15 May 2016 17:46:30 +0530 Subject: [PATCH] refactored connected cup apis --- .../api/ConnectedCupManagerService.java | 60 ------- .../api/ConnectedCupManagerServiceImpl.java | 168 ------------------ ...rService.java => ConnectedCupService.java} | 10 +- ...Impl.java => ConnectedCupServiceImpl.java} | 45 ++++- .../src/main/webapp/META-INF/permissions.xml | 25 +-- .../src/main/webapp/WEB-INF/cxf-servlet.xml | 7 +- .../public/js/download.js | 2 +- 7 files changed, 57 insertions(+), 260 deletions(-) delete mode 100644 modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupManagerService.java delete mode 100644 modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupManagerServiceImpl.java rename modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/{ConnectedCupControllerService.java => ConnectedCupService.java} (79%) rename modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/{ConnectedCupControllerServiceImpl.java => ConnectedCupServiceImpl.java} (72%) diff --git a/modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupManagerService.java b/modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupManagerService.java deleted file mode 100644 index 8b26345c..00000000 --- a/modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupManagerService.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. - * - * WSO2 Inc. licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.coffeeking.api; - -import org.wso2.carbon.apimgt.annotations.api.API; -import org.wso2.carbon.device.mgt.extensions.feature.mgt.annotations.DeviceType; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -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.MediaType; -import javax.ws.rs.core.Response; - -@Path("enrollment") -@API( name="connectedcup_mgt", version="1.0.0", context="/connectedcup_mgt", tags = {"connectedcup"}) -@DeviceType("connectedcup") -public interface ConnectedCupManagerService { - - @Path("/devices/{device_id}") - @DELETE - Response removeDevice(@PathParam("device_id") String deviceId); - - @Path("/devices/{device_id}") - @PUT - Response updateDevice(@PathParam("device_id") String deviceId, - @QueryParam("name") String name); - - @Path("/devices/{device_id}") - @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - Response getDevice(@PathParam("device_id") String deviceId); - - @Path("/devices") - @POST - boolean register(@QueryParam("name") String name); - -} diff --git a/modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupManagerServiceImpl.java b/modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupManagerServiceImpl.java deleted file mode 100644 index d7b2e678..00000000 --- a/modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupManagerServiceImpl.java +++ /dev/null @@ -1,168 +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.coffeeking.api; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.coffeeking.api.util.APIUtil; -import org.coffeeking.connectedcup.plugin.constants.ConnectedCupConstants; -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.authorization.DeviceAccessAuthorizationException; -import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroupConstants; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -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.MediaType; -import javax.ws.rs.core.Response; -import java.nio.ByteBuffer; -import java.nio.charset.StandardCharsets; -import java.util.Date; -import java.util.UUID; - -@Path("enrollment") -public class ConnectedCupManagerServiceImpl implements ConnectedCupManagerService { - - private static Log log = LogFactory.getLog(ConnectedCupManagerServiceImpl.class); - - @Path("/devices/{device_id}") - @DELETE - public Response removeDevice(@PathParam("device_id") String deviceId) { - try { - DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); - deviceIdentifier.setId(deviceId); - deviceIdentifier.setType(ConnectedCupConstants.DEVICE_TYPE); - if (!APIUtil.getDeviceAccessAuthorizationService().isUserAuthorized(deviceIdentifier, DeviceGroupConstants. - Permissions.DEFAULT_ADMIN_PERMISSIONS)) { - return Response.status(Response.Status.UNAUTHORIZED.getStatusCode()).build(); - } - boolean removed = APIUtil.getDeviceManagementService().disenrollDevice( - deviceIdentifier); - if (removed) { - return Response.ok().build(); - } else { - return Response.status(Response.Status.NOT_ACCEPTABLE.getStatusCode()).build(); - } - } catch (DeviceManagementException e) { - return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build(); - }catch (DeviceAccessAuthorizationException e) { - log.error(e.getErrorMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build(); - } - } - - @Path("/devices/{device_id}") - @PUT - public Response updateDevice(@PathParam("device_id") String deviceId, @QueryParam("name") String name) { - DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); - deviceIdentifier.setId(deviceId); - deviceIdentifier.setType(ConnectedCupConstants.DEVICE_TYPE); - try { - if (!APIUtil.getDeviceAccessAuthorizationService().isUserAuthorized(deviceIdentifier, DeviceGroupConstants. - Permissions.DEFAULT_ADMIN_PERMISSIONS)) { - return Response.status(Response.Status.UNAUTHORIZED.getStatusCode()).build(); - } - Device device = APIUtil.getDeviceManagementService().getDevice(deviceIdentifier); - device.setDeviceIdentifier(deviceId); - device.getEnrolmentInfo().setDateOfLastUpdate(new Date().getTime()); - device.setName(name); - device.setType(ConnectedCupConstants.DEVICE_TYPE); - boolean updated = APIUtil.getDeviceManagementService().modifyEnrollment(device); - if (updated) { - return Response.ok().build(); - } else { - return Response.status(Response.Status.NOT_ACCEPTABLE.getStatusCode()).build(); - } - } catch (DeviceManagementException e) { - log.error(e.getErrorMessage()); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build(); - } catch (DeviceAccessAuthorizationException e) { - log.error(e.getErrorMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build(); - } - } - - @Path("/devices/{device_id}") - @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response getDevice(@PathParam("device_id") String deviceId) { - - DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); - deviceIdentifier.setId(deviceId); - deviceIdentifier.setType(ConnectedCupConstants.DEVICE_TYPE); - try { - if (!APIUtil.getDeviceAccessAuthorizationService().isUserAuthorized(deviceIdentifier)) { - return Response.status(Response.Status.UNAUTHORIZED.getStatusCode()).build(); - } - Device device = APIUtil.getDeviceManagementService().getDevice(deviceIdentifier); - return Response.ok().entity(device).build(); - } catch (DeviceManagementException ex) { - log.error("Error occurred while retrieving device with Id " + deviceId + "\n" + ex); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build(); - } catch (DeviceAccessAuthorizationException e) { - log.error(e.getErrorMessage(), e); - return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build(); - } - } - - @Path("/devices") - @POST - public boolean register(@QueryParam("name") String name) { - try { - DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); - String deviceId = shortUUID(); - deviceIdentifier.setId(deviceId); - deviceIdentifier.setType(ConnectedCupConstants.DEVICE_TYPE); - if (APIUtil.getDeviceManagementService().isEnrolled(deviceIdentifier)) { - return false; - } - Device device = new Device(); - device.setDeviceIdentifier(deviceId); - EnrolmentInfo enrolmentInfo = new EnrolmentInfo(); - enrolmentInfo.setDateOfEnrolment(new Date().getTime()); - enrolmentInfo.setDateOfLastUpdate(new Date().getTime()); - enrolmentInfo.setStatus(EnrolmentInfo.Status.ACTIVE); - enrolmentInfo.setOwnership(EnrolmentInfo.OwnerShip.BYOD); - device.setName(name); - device.setType(ConnectedCupConstants.DEVICE_TYPE); - enrolmentInfo.setOwner(APIUtil.getAuthenticatedUser()); - device.setEnrolmentInfo(enrolmentInfo); - return APIUtil.getDeviceManagementService().enrollDevice(device); - } catch (DeviceManagementException e) { - return false; - } - } - - private static String shortUUID() { - UUID uuid = UUID.randomUUID(); - long l = ByteBuffer.wrap(uuid.toString().getBytes(StandardCharsets.UTF_8)).getLong(); - return Long.toString(l, Character.MAX_RADIX); - } - -} \ No newline at end of file diff --git a/modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupControllerService.java b/modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupService.java similarity index 79% rename from modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupControllerService.java rename to modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupService.java index a41d44e2..46db399f 100644 --- a/modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupControllerService.java +++ b/modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupService.java @@ -19,6 +19,7 @@ package org.coffeeking.api; import org.wso2.carbon.apimgt.annotations.api.API; +import org.wso2.carbon.apimgt.annotations.api.Permission; import org.wso2.carbon.device.mgt.extensions.feature.mgt.annotations.DeviceType; import org.wso2.carbon.device.mgt.extensions.feature.mgt.annotations.Feature; @@ -35,11 +36,12 @@ import javax.ws.rs.core.Response; @API(name = "connectedcup", version = "1.0.0", context = "/connectedcup", tags = {"connectedcup"}) @DeviceType(value = "connectedcup") -public interface ConnectedCupControllerService { +public interface ConnectedCupService { @Path("device/ordercoffee") @POST @Feature(code = "ordercoffee", name = "Order Coffee", description = "Order coffee cup") + @Permission(scope = "connectedcup_user", permissions = {"/permission/admin/device-mgt/user/operations"}) Response orderCoffee(@QueryParam("deviceId") String deviceId); /** @@ -49,7 +51,13 @@ public interface ConnectedCupControllerService { @GET @Consumes("application/json") @Produces("application/json") + @Permission(scope = "connectedcup_user", permissions = {"/permission/admin/device-mgt/user/stats"}) Response getDeviceStats(@PathParam("deviceId") String deviceId, @PathParam("sensorName") String sensor, @QueryParam("from") long from, @QueryParam("to") long to); + @Path("device/register") + @POST + @Permission(scope = "connectedcup_user", permissions = {"/permission/admin/device-mgt/user/devices"}) + boolean register(@QueryParam("name") String name); + } diff --git a/modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupControllerServiceImpl.java b/modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupServiceImpl.java similarity index 72% rename from modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupControllerServiceImpl.java rename to modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupServiceImpl.java index f41e77c4..ca23eaf9 100644 --- a/modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupControllerServiceImpl.java +++ b/modules/samples/connectedcup/component/api/src/main/java/org/coffeeking/api/ConnectedCupServiceImpl.java @@ -23,7 +23,10 @@ import org.apache.commons.logging.LogFactory; import org.coffeeking.api.util.APIUtil; import org.coffeeking.api.util.SensorRecord; import org.coffeeking.connectedcup.plugin.constants.ConnectedCupConstants; +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.authorization.DeviceAccessAuthorizationException; import org.wso2.carbon.analytics.dataservice.commons.SORT; import org.wso2.carbon.analytics.dataservice.commons.SortByField; @@ -38,12 +41,16 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.UUID; -public class ConnectedCupControllerServiceImpl implements ConnectedCupControllerService { +public class ConnectedCupServiceImpl implements ConnectedCupService { - private static Log log = LogFactory.getLog(ConnectedCupControllerServiceImpl.class); + private static Log log = LogFactory.getLog(ConnectedCupServiceImpl.class); @Path("device/ordercoffee") @POST @@ -116,4 +123,38 @@ public class ConnectedCupControllerServiceImpl implements ConnectedCupController return sensorEventTableName; } + @Path("device/register") + @POST + public boolean register(@QueryParam("name") String name) { + try { + DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); + String deviceId = shortUUID(); + deviceIdentifier.setId(deviceId); + deviceIdentifier.setType(ConnectedCupConstants.DEVICE_TYPE); + if (APIUtil.getDeviceManagementService().isEnrolled(deviceIdentifier)) { + return false; + } + Device device = new Device(); + device.setDeviceIdentifier(deviceId); + EnrolmentInfo enrolmentInfo = new EnrolmentInfo(); + enrolmentInfo.setDateOfEnrolment(new Date().getTime()); + enrolmentInfo.setDateOfLastUpdate(new Date().getTime()); + enrolmentInfo.setStatus(EnrolmentInfo.Status.ACTIVE); + enrolmentInfo.setOwnership(EnrolmentInfo.OwnerShip.BYOD); + device.setName(name); + device.setType(ConnectedCupConstants.DEVICE_TYPE); + enrolmentInfo.setOwner(APIUtil.getAuthenticatedUser()); + device.setEnrolmentInfo(enrolmentInfo); + return APIUtil.getDeviceManagementService().enrollDevice(device); + } catch (DeviceManagementException e) { + return false; + } + } + + private static String shortUUID() { + UUID uuid = UUID.randomUUID(); + long l = ByteBuffer.wrap(uuid.toString().getBytes(StandardCharsets.UTF_8)).getLong(); + return Long.toString(l, Character.MAX_RADIX); + } + } diff --git a/modules/samples/connectedcup/component/api/src/main/webapp/META-INF/permissions.xml b/modules/samples/connectedcup/component/api/src/main/webapp/META-INF/permissions.xml index 9e9db10e..e216705b 100644 --- a/modules/samples/connectedcup/component/api/src/main/webapp/META-INF/permissions.xml +++ b/modules/samples/connectedcup/component/api/src/main/webapp/META-INF/permissions.xml @@ -29,31 +29,10 @@ - - Get device - /device-mgt/user/devices/list - /enrollment/devices/* - GET - connectedcup_user - - - Remove device - /device-mgt/user/devices/remove - /enrollment/devices/* - DELETE - connectedcup_user - - - Update device - /device-mgt/user/devices/update - /enrollment/devices/* - PUT - connectedcup_user - Register a device /device-mgt/user/devices - /enrollment/devices + /device/register POST connectedcup_user @@ -69,6 +48,6 @@ /device-mgt/user/stats /stats/*/sensors/* GET - android_sense_device + connectedcup_user \ No newline at end of file diff --git a/modules/samples/connectedcup/component/api/src/main/webapp/WEB-INF/cxf-servlet.xml b/modules/samples/connectedcup/component/api/src/main/webapp/WEB-INF/cxf-servlet.xml index b14eb4a0..5dfc1661 100644 --- a/modules/samples/connectedcup/component/api/src/main/webapp/WEB-INF/cxf-servlet.xml +++ b/modules/samples/connectedcup/component/api/src/main/webapp/WEB-INF/cxf-servlet.xml @@ -27,11 +27,8 @@ - - - + diff --git a/modules/samples/connectedcup/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.connectedcup.type-view/public/js/download.js b/modules/samples/connectedcup/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.connectedcup.type-view/public/js/download.js index 2a11e164..752690e3 100644 --- a/modules/samples/connectedcup/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.connectedcup.type-view/public/js/download.js +++ b/modules/samples/connectedcup/component/ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.connectedcup.type-view/public/js/download.js @@ -145,7 +145,7 @@ function downloadAgent() { payload.name = $inputs[0].value; payload.owner = $inputs[1].value; - var connectedCupRegisterURL = "/connectedcup/enrollment/devices?name=" + encodeURI(payload.name); + var connectedCupRegisterURL = "/connectedcup/device/register?name=" + encodeURI(payload.name); invokerUtil.post( connectedCupRegisterURL,