From 1ffbb2183aa405530c0189c1a19cf71b9cb149c4 Mon Sep 17 00:00:00 2001 From: inoshperera Date: Fri, 27 May 2016 14:20:10 +0530 Subject: [PATCH 1/2] adding permissions for DM services --- .../api/ActivityInfoProviderService.java | 7 +- .../service/api/DeviceManagementService.java | 14 +- .../src/main/webapp/META-INF/permissions.xml | 166 ++++++++++-------- 3 files changed, 104 insertions(+), 83 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/ActivityInfoProviderService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/ActivityInfoProviderService.java index 895287c382..544389d841 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/ActivityInfoProviderService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/ActivityInfoProviderService.java @@ -42,17 +42,16 @@ public interface ActivityInfoProviderService { @ApiOperation( consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON, - httpMethod = "POST", + httpMethod = "GET", value = "Retrieving the operation details.", notes = "This will return the operation details including the responses from the devices.") @ApiResponses(value = { @ApiResponse(code = 200, message = "Activity details provided successfully."), @ApiResponse(code = 500, message = "Error occurred while fetching the activity for the supplied id.") }) - @Permission(scope = "operation-view", permissions = {"/permission/admin/device-mgt/admin/devices/view"}) + @Permission(scope = "activity-view", permissions = {"/permission/admin/device-mgt/admin/activities/view"}) Response getActivity( - @ApiParam(name = "id", value = "Activity id of the operation/activity to be retrieved.", - required = true) + @ApiParam(name = "id", value = "Activity id of the operation/activity to be retrieved.", required = true) @PathParam("id") String id); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceManagementService.java index cb1e4e395c..a7d6ce64f3 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceManagementService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/api/DeviceManagementService.java @@ -55,8 +55,8 @@ public interface DeviceManagementService { response = org.wso2.carbon.device.mgt.common.Device.class, responseContainer = "List") @ApiResponses(value = { - @ApiResponse(code = 200, message = "Successfully fetched the list of devices.", response = org.wso2.carbon - .device.mgt.common.Device.class, responseContainer = "List"), + @ApiResponse(code = 200, message = "Successfully fetched the list of devices.", + response = org.wso2.carbon.device.mgt.common.Device.class, responseContainer = "List"), @ApiResponse(code = 404, message = "No device has currently been under the provided type."), @ApiResponse(code = 500, message = "Error occurred while fetching the device list.") }) @@ -68,8 +68,14 @@ public interface DeviceManagementService { "index.", required = true) @QueryParam("limit") int limit); - Response getDevices(@HeaderParam("If-Modified-Since") Date timestamp, @QueryParam("offset") int offset, - @QueryParam("limit") int limit); + Response getDevices( + @ApiParam(name = "If-Modified-Since", value = "Time since the device information changed.") + @HeaderParam("If-Modified-Since") Date timestamp, + @ApiParam(name = "offset", value = "Starting pagination index.",required = true) + @QueryParam("offset") int offset, + @ApiParam(name = "limit", value = "How many device details are required from the starting pagination " + + "index.", required = true) + @QueryParam("limit") int limit); @GET @ApiOperation( diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/META-INF/permissions.xml b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/META-INF/permissions.xml index 8146d01640..a886c71925 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/META-INF/permissions.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/META-INF/permissions.xml @@ -29,7 +29,98 @@ --> + + + + Fetch Activity related details + /device-mgt/admin/activities/view + /activities/* + GET + + + + List devices + /device-mgt/admin/devices/list + /devices + GET + + + + List device types + /device-mgt/admin/devices/list + /devices/types + GET + + + + List device types + /device-mgt/user/devices/list + /devices/types + GET + + + + Add policy + /device-mgt/admin/policies/add + /devices/types + GET + + + + Add User policy + /device-mgt/user/policies/add + /devices/types + GET + + + + Edit policy + /device-mgt/admin/policies/update + /devices/types + GET + + + + Edit User policy + /device-mgt/user/policies/update + /devices/types + GET + + + + View device + /device-mgt/admin/devices/view + /devices/view + GET + + + + View user device + /device-mgt/user/devices/view + /devices/view + GET + + + + Modify user device + /device-mgt/user/devices/update + /devices/type/*/id/* + PUT + + + + Remove user device + /device-mgt/user/devices/remove + /devices/type/*/id/* + DELETE + + + + + + + Device Management @@ -143,82 +234,7 @@ GET - - List devices - /device-mgt/admin/devices/list - /devices - GET - - - - List device types - /device-mgt/admin/devices/list - /devices/types - GET - - - - List device types - /device-mgt/user/devices/list - /devices/types - GET - - - - Add policy - /device-mgt/admin/policies/add - /devices/types - GET - - - - Add User policy - /device-mgt/user/policies/add - /devices/types - GET - - - - Edit policy - /device-mgt/admin/policies/update - /devices/types - GET - - - - Edit User policy - /device-mgt/user/policies/update - /devices/types - GET - - - - View device - /device-mgt/admin/devices/view - /devices/view - GET - - - View user device - /device-mgt/user/devices/view - /devices/view - GET - - - - Modify user device - /device-mgt/user/devices/update - /devices/type/*/id/* - PUT - - - - Remove user device - /device-mgt/user/devices/remove - /devices/type/*/id/* - DELETE - From 3c73217e960eaca2244df5ce40d7e24da9dfa79e Mon Sep 17 00:00:00 2001 From: inoshperera Date: Fri, 27 May 2016 19:15:46 +0530 Subject: [PATCH 2/2] fixing osgi issue related to usage of carbon context. And adding api publishing check from config. --- .../APIPublisherLifecycleListener.java | 4 +++- .../impl/DeviceManagementServiceImpl.java | 3 +-- .../mgt/jaxrs/util/DeviceMgtAPIUtils.java | 22 +++++++++---------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/lifecycle/listener/APIPublisherLifecycleListener.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/lifecycle/listener/APIPublisherLifecycleListener.java index 042da6b8c2..2466c7cbe2 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/lifecycle/listener/APIPublisherLifecycleListener.java +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/lifecycle/listener/APIPublisherLifecycleListener.java @@ -29,6 +29,7 @@ import org.wso2.carbon.apimgt.webapp.publisher.APIConfig; import org.wso2.carbon.apimgt.webapp.publisher.APIPublisherService; import org.wso2.carbon.apimgt.webapp.publisher.APIPublisherUtil; import org.wso2.carbon.apimgt.webapp.publisher.config.APIResourceConfiguration; +import org.wso2.carbon.apimgt.webapp.publisher.config.WebappPublisherConfig; import org.wso2.carbon.apimgt.webapp.publisher.internal.APIPublisherDataHolder; import org.wso2.carbon.apimgt.webapp.publisher.lifecycle.util.AnnotationProcessor; @@ -48,7 +49,8 @@ public class APIPublisherLifecycleListener implements LifecycleListener { @Override public void lifecycleEvent(LifecycleEvent lifecycleEvent) { - if (Lifecycle.AFTER_START_EVENT.equals(lifecycleEvent.getType())) { + if (Lifecycle.AFTER_START_EVENT.equals(lifecycleEvent.getType()) && WebappPublisherConfig.getInstance() + .isPublished()) { StandardContext context = (StandardContext) lifecycleEvent.getLifecycle(); ServletContext servletContext = context.getServletContext(); String param = servletContext.getInitParameter(PARAM_MANAGED_API_ENABLED); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java index 485c2e5cec..c4d96f58f3 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java @@ -44,12 +44,11 @@ import java.util.Date; import java.util.List; @Path("/devices") -public class DeviceManagementServiceImpl implements DeviceManagementService { +public class DeviceManagementServiceImpl implements DeviceManagementService{ private static final Log log = LogFactory.getLog(DeviceManagementServiceImpl.class); @GET - @Override public Response getDevices(@QueryParam("offset") int offset, @QueryParam("limit") int limit) { try { DeviceManagementProviderService dms = DeviceMgtAPIUtils.getDeviceManagementService(); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/DeviceMgtAPIUtils.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/DeviceMgtAPIUtils.java index d34a284ac2..0d89dbc9a6 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/DeviceMgtAPIUtils.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/util/DeviceMgtAPIUtils.java @@ -82,7 +82,7 @@ public class DeviceMgtAPIUtils { } public static DeviceManagementProviderService getDeviceManagementService() { - CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); DeviceManagementProviderService deviceManagementProviderService = (DeviceManagementProviderService) ctx.getOSGiService(DeviceManagementProviderService.class, null); if (deviceManagementProviderService == null) { @@ -94,7 +94,7 @@ public class DeviceMgtAPIUtils { } public static GroupManagementProviderService getGroupManagementProviderService() { - CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); GroupManagementProviderService groupManagementProviderService = (GroupManagementProviderService) ctx.getOSGiService(GroupManagementProviderService.class, null); if (groupManagementProviderService == null) { @@ -108,7 +108,7 @@ public class DeviceMgtAPIUtils { public static UserStoreManager getUserStoreManager() throws UserStoreException { RealmService realmService; UserStoreManager userStoreManager; - CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); realmService = (RealmService) ctx.getOSGiService(RealmService.class, null); if (realmService == null) { String msg = "Realm service has not initialized."; @@ -126,7 +126,7 @@ public class DeviceMgtAPIUtils { public static UserRealm getUserRealm() throws UserStoreException { RealmService realmService; UserRealm realm; - CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); realmService = (RealmService) ctx.getOSGiService(RealmService.class, null); if (realmService == null) { @@ -140,7 +140,7 @@ public class DeviceMgtAPIUtils { public static AuthorizationManager getAuthorizationManager() throws UserStoreException { RealmService realmService; AuthorizationManager authorizationManager; - CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); realmService = (RealmService) ctx.getOSGiService(RealmService.class, null); if (realmService == null) { throw new IllegalStateException("Realm service is not initialized."); @@ -159,7 +159,7 @@ public class DeviceMgtAPIUtils { } public static ApplicationManagementProviderService getAppManagementService() { - CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); ApplicationManagementProviderService applicationManagementProviderService = (ApplicationManagementProviderService) ctx.getOSGiService(ApplicationManagementProviderService.class, null); if (applicationManagementProviderService == null) { @@ -170,7 +170,7 @@ public class DeviceMgtAPIUtils { public static PolicyManagerService getPolicyManagementService() { PolicyManagerService policyManagementService; - CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); policyManagementService = (PolicyManagerService) ctx.getOSGiService(PolicyManagerService.class, null); if (policyManagementService == null) { @@ -194,7 +194,7 @@ public class DeviceMgtAPIUtils { public static NotificationManagementService getNotificationManagementService() { NotificationManagementService notificationManagementService; - CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); notificationManagementService = (NotificationManagementService) ctx.getOSGiService( NotificationManagementService.class, null); if (notificationManagementService == null) { @@ -204,7 +204,7 @@ public class DeviceMgtAPIUtils { } public static CertificateManagementService getCertificateManagementService() { - CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); CertificateManagementService certificateManagementService = (CertificateManagementService) ctx.getOSGiService(CertificateManagementService.class, null); @@ -227,7 +227,7 @@ public class DeviceMgtAPIUtils { } public static DeviceInformationManager getDeviceInformationManagerService() { - CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); DeviceInformationManager deviceInformationManager = (DeviceInformationManager) ctx.getOSGiService(DeviceInformationManager.class, null); if (deviceInformationManager == null) { @@ -238,7 +238,7 @@ public class DeviceMgtAPIUtils { public static SearchManagerService getSearchManagerService() { - CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext(); + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); SearchManagerService searchManagerService = (SearchManagerService) ctx.getOSGiService(SearchManagerService.class, null); if (searchManagerService == null) {