forked from community/device-mgt-core
Merge branch 'master' of https://github.com/wso2/carbon-device-mgt
commit
24c38602b8
@ -1,113 +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.wso2.carbon.device.mgt.jaxrs.service.api;
|
|
||||||
|
|
||||||
import org.wso2.carbon.apimgt.annotations.api.API;
|
|
||||||
import org.wso2.carbon.apimgt.annotations.api.Permission;
|
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
@API(name = "GroupManagement", version = "1.0.0", context = "/api/device-mgt/v1.0/groups", tags = {"device_management"})
|
|
||||||
|
|
||||||
@Path("/groups")
|
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
|
||||||
public interface GroupManagementService {
|
|
||||||
|
|
||||||
@GET
|
|
||||||
@Permission(name = "View Group", permission = "/permission/admin/device-mgt/user/groups/list")
|
|
||||||
Response getGroups(@QueryParam("user") String user, @QueryParam("offset") int offset,
|
|
||||||
@QueryParam("limit") int limit);
|
|
||||||
|
|
||||||
@POST
|
|
||||||
@Permission(name = "Add Group", permission = "/permission/admin/device-mgt/user/groups/add")
|
|
||||||
Response createGroup(DeviceGroup group);
|
|
||||||
|
|
||||||
@Path("/{groupName}")
|
|
||||||
@GET
|
|
||||||
@Permission(name = "View Group", permission = "/permission/admin/device-mgt/user/groups/view")
|
|
||||||
Response getGroup(@PathParam("groupName") String groupName);
|
|
||||||
|
|
||||||
@Path("/{groupName}")
|
|
||||||
@PUT
|
|
||||||
@Permission(name = "Update Group", permission = "/permission/admin/device-mgt/user/groups/update")
|
|
||||||
Response updateGroup(@PathParam("groupName") String groupName, DeviceGroup deviceGroup);
|
|
||||||
|
|
||||||
@Path("/{groupName}")
|
|
||||||
@DELETE
|
|
||||||
@Permission(name = "Remove Groups", permission = "/permission/admin/device-mgt/user/groups/remove")
|
|
||||||
Response deleteGroup(@PathParam("groupName") String groupName);
|
|
||||||
|
|
||||||
@Path("/{groupName}/share-with-user")
|
|
||||||
@POST
|
|
||||||
@Permission(name = "Share Group to a User", permission = "/permission/admin/device-mgt/user/groups/share")
|
|
||||||
Response shareGroupWithUser(@PathParam("groupName") String groupName, String targetUser);
|
|
||||||
|
|
||||||
@Path("/{groupName}/share-with-role")
|
|
||||||
@POST
|
|
||||||
@Permission(name = "Share Group to a Role", permission = "/permission/admin/device-mgt/user/groups/share")
|
|
||||||
Response shareGroupWithRole(@PathParam("groupName") String groupName, String targetRole);
|
|
||||||
|
|
||||||
@Path("/{groupName}/remove-share-with-user")
|
|
||||||
@POST
|
|
||||||
@Permission(name = "Unshare a Group", permission = "/permission/admin/device-mgt/user/groups/unshare")
|
|
||||||
Response removeShareWithUser(@PathParam("groupName") String groupName, String targetUser);
|
|
||||||
|
|
||||||
@Path("/{groupName}/remove-share-with-role")
|
|
||||||
@POST
|
|
||||||
@Permission(name = "Unshare a Group", permission = "/permission/admin/device-mgt/user/groups/unshare")
|
|
||||||
Response removeShareWithRole(@PathParam("groupName") String groupName, String targetUser);
|
|
||||||
|
|
||||||
@GET
|
|
||||||
@Path("/{groupName}/users")
|
|
||||||
@Permission(name = "Get Users of Group", permission = "/permission/admin/device-mgt/user/groups/list")
|
|
||||||
Response getUsersOfGroup(@PathParam("groupName") String groupName);
|
|
||||||
|
|
||||||
@GET
|
|
||||||
@Path("/{groupName}/devices")
|
|
||||||
@Permission(name = "Get Devices of Group", permission = "/permission/admin/device-mgt/groups/roles")
|
|
||||||
Response getDevicesOfGroup(@PathParam("groupName") String groupName, @QueryParam("offset") int offset,
|
|
||||||
@QueryParam("limit") int limit);
|
|
||||||
|
|
||||||
@POST
|
|
||||||
@Path("/{groupName}/devices")
|
|
||||||
@Produces("application/json")
|
|
||||||
@Permission(name = "Add Device to a Group", permission = "/permission/admin/device-mgt/user/groups/devices/add")
|
|
||||||
Response addDeviceToGroup(@PathParam("groupName") String groupName, DeviceIdentifier deviceIdentifier);
|
|
||||||
|
|
||||||
@DELETE
|
|
||||||
@Path("/{groupName}/devices")
|
|
||||||
@Permission(name = "Remove Devices from Group",
|
|
||||||
permission = "/permission/admin/device-mgt/user/groups/devices/remove")
|
|
||||||
Response removeDeviceFromGroup(@PathParam("groupName") String groupName, @QueryParam("type") String type,
|
|
||||||
@QueryParam("id") String id);
|
|
||||||
|
|
||||||
}
|
|
@ -1,111 +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.wso2.carbon.device.mgt.jaxrs.service.api.admin;
|
|
||||||
|
|
||||||
import io.swagger.annotations.Api;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import io.swagger.annotations.ApiParam;
|
|
||||||
import io.swagger.annotations.ApiResponse;
|
|
||||||
import io.swagger.annotations.ApiResponses;
|
|
||||||
import io.swagger.annotations.ResponseHeader;
|
|
||||||
import org.wso2.carbon.apimgt.annotations.api.API;
|
|
||||||
import org.wso2.carbon.apimgt.annotations.api.Permission;
|
|
||||||
import org.wso2.carbon.policy.mgt.common.DeviceGroupWrapper;
|
|
||||||
|
|
||||||
import javax.ws.rs.Consumes;
|
|
||||||
import javax.ws.rs.GET;
|
|
||||||
import javax.ws.rs.HeaderParam;
|
|
||||||
import javax.ws.rs.Path;
|
|
||||||
import javax.ws.rs.Produces;
|
|
||||||
import javax.ws.rs.QueryParam;
|
|
||||||
import javax.ws.rs.core.MediaType;
|
|
||||||
import javax.ws.rs.core.Response;
|
|
||||||
|
|
||||||
@API(name = "GroupManagementAdmin", version = "1.0.0", context = "/api/device-mgt/v1.0/admin/groups", tags = {"device_management"})
|
|
||||||
|
|
||||||
@Path("/admin/groups")
|
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
|
||||||
@Api(value = "Group Management Administrative Service", description = "This an API intended to be used by " +
|
|
||||||
"'internal' components to log in as an admin user and do a selected number of operations. " +
|
|
||||||
"Further, this is strictly restricted to admin users only ")
|
|
||||||
public interface GroupManagementAdminService {
|
|
||||||
|
|
||||||
@GET
|
|
||||||
@ApiOperation(
|
|
||||||
produces = MediaType.APPLICATION_JSON,
|
|
||||||
httpMethod = "GET",
|
|
||||||
value = "Grouping Devices",
|
|
||||||
notes = "Many devices can be registered with WSO2 IoTS. In order to manage them in an efficient manner, " +
|
|
||||||
"you can group devices and view the data gathered by the devices or share the groups with users so that they can monitor the devices in the respective group.",
|
|
||||||
response = DeviceGroupWrapper.class,
|
|
||||||
responseContainer = "List",
|
|
||||||
tags = "Group Management Administrative Service")
|
|
||||||
@ApiResponses(value = {
|
|
||||||
@ApiResponse(code = 200, message = "OK. \n Successfully fetched the list of groups.",
|
|
||||||
response = DeviceGroupWrapper.class,
|
|
||||||
responseContainer = "List",
|
|
||||||
responseHeaders = {
|
|
||||||
@ResponseHeader(
|
|
||||||
name = "Content-Type",
|
|
||||||
description = "The content type of the body"),
|
|
||||||
@ResponseHeader(
|
|
||||||
name = "ETag",
|
|
||||||
description = "Entity Tag of the response resource.\n" +
|
|
||||||
"Used by caches, or in conditional requests."),
|
|
||||||
@ResponseHeader(
|
|
||||||
name = "Last-Modified",
|
|
||||||
description = "Date and time the resource was last modified.\n" +
|
|
||||||
"Used by caches, or in conditional requests."),
|
|
||||||
}),
|
|
||||||
@ApiResponse(
|
|
||||||
code = 304,
|
|
||||||
message = "Not Modified. \n Empty body because the client already has the latest version of the requested resource."),
|
|
||||||
@ApiResponse(
|
|
||||||
code = 406,
|
|
||||||
message = "Not Acceptable.\n The requested media type is not supported"),
|
|
||||||
@ApiResponse(
|
|
||||||
code = 500,
|
|
||||||
message = "Internal Server ErrorResponse. \n Server error occurred while fetching the list of device groups.")
|
|
||||||
})
|
|
||||||
@Permission(name = "View All Groups", permission = "/permission/admin/device-mgt/user/groups/list")
|
|
||||||
Response getGroupsOfUser(
|
|
||||||
@ApiParam(
|
|
||||||
name = "username",
|
|
||||||
value = "The sername of the user.",
|
|
||||||
required = true)
|
|
||||||
@QueryParam("username") String username,
|
|
||||||
@ApiParam(
|
|
||||||
name = "If-Modified-Since",
|
|
||||||
value = "Timestamp of the last modified date",
|
|
||||||
required = false)
|
|
||||||
@HeaderParam("If-Modified-Since") String timestamp,
|
|
||||||
@ApiParam(
|
|
||||||
name = "offset",
|
|
||||||
value = "Starting point within the complete list of items qualified.",
|
|
||||||
required = false,
|
|
||||||
defaultValue = "0")
|
|
||||||
@QueryParam("offset") int offset,
|
|
||||||
@ApiParam(
|
|
||||||
name = "limit",
|
|
||||||
value = "Maximum size of resource array to return.",
|
|
||||||
required = false,
|
|
||||||
defaultValue = "5")
|
|
||||||
@QueryParam("limit") int limit);
|
|
||||||
}
|
|
@ -1,136 +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.wso2.carbon.device.mgt.jaxrs.service.impl;
|
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
|
||||||
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.core.service.GroupManagementProviderService;
|
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.GroupManagementService;
|
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
|
||||||
import org.wso2.carbon.policy.mgt.common.DeviceGroupWrapper;
|
|
||||||
|
|
||||||
import javax.ws.rs.Consumes;
|
|
||||||
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.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Path("/groups")
|
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
|
||||||
public class GroupManagementServiceImpl implements GroupManagementService {
|
|
||||||
|
|
||||||
private static final Log log = LogFactory.getLog(GroupManagementServiceImpl.class);
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response getGroups(@QueryParam("user") String user, @QueryParam("offset") int offset,
|
|
||||||
@QueryParam("limit") int limit) {
|
|
||||||
try {
|
|
||||||
List<DeviceGroupWrapper> groupWrappers = new ArrayList<>();
|
|
||||||
GroupManagementProviderService service = DeviceMgtAPIUtils.getGroupManagementProviderService();
|
|
||||||
List<DeviceGroup> deviceGroups = service.getGroups(user);
|
|
||||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
|
||||||
for (DeviceGroup dg : deviceGroups) {
|
|
||||||
DeviceGroupWrapper gw = new DeviceGroupWrapper();
|
|
||||||
gw.setId(dg.getId());
|
|
||||||
gw.setOwner(dg.getOwner());
|
|
||||||
gw.setName(dg.getName());
|
|
||||||
gw.setTenantId(tenantId);
|
|
||||||
groupWrappers.add(gw);
|
|
||||||
}
|
|
||||||
return Response.status(Response.Status.OK).entity(groupWrappers).build();
|
|
||||||
} catch (GroupManagementException e) {
|
|
||||||
String error = "ErrorResponse occurred while getting the groups related to users for policy.";
|
|
||||||
log.error(error, e);
|
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error).build();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response createGroup(DeviceGroup group) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response getGroup(@PathParam("groupName") String groupName) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response updateGroup(@PathParam("groupName") String groupName, DeviceGroup deviceGroup) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response deleteGroup(@PathParam("groupName") String groupName) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response shareGroupWithUser(String groupName, String targetUser) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response shareGroupWithRole(String groupName, String targetRole) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response removeShareWithUser(@PathParam("groupName") String groupName,
|
|
||||||
@QueryParam("username") String targetUser) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response removeShareWithRole(@PathParam("groupName") String groupName,
|
|
||||||
@QueryParam("roleName") String targetUser) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response getUsersOfGroup(@PathParam("groupName") String groupName) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response getDevicesOfGroup(@PathParam("groupName") String groupName, @QueryParam("offset") int offset,
|
|
||||||
@QueryParam("limit") int limit) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response addDeviceToGroup(@PathParam("groupName") String groupName, DeviceIdentifier deviceIdentifier) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response removeDeviceFromGroup(@PathParam("groupName") String groupName, @QueryParam("type") String type,
|
|
||||||
@QueryParam("id") String id) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,66 +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.wso2.carbon.device.mgt.jaxrs.service.impl.admin;
|
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.admin.GroupManagementAdminService;
|
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
|
||||||
|
|
||||||
import javax.ws.rs.Consumes;
|
|
||||||
import javax.ws.rs.GET;
|
|
||||||
import javax.ws.rs.HeaderParam;
|
|
||||||
import javax.ws.rs.Path;
|
|
||||||
import javax.ws.rs.Produces;
|
|
||||||
import javax.ws.rs.QueryParam;
|
|
||||||
import javax.ws.rs.core.MediaType;
|
|
||||||
import javax.ws.rs.core.Response;
|
|
||||||
|
|
||||||
@Path("/admin/groups")
|
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
|
||||||
public class GroupManagementAdminServiceImpl implements GroupManagementAdminService {
|
|
||||||
|
|
||||||
private static final Log log = LogFactory.getLog(GroupManagementAdminServiceImpl.class);
|
|
||||||
|
|
||||||
@GET
|
|
||||||
@Override
|
|
||||||
public Response getGroupsOfUser(
|
|
||||||
@QueryParam("username") String username,
|
|
||||||
@HeaderParam("If-Modified-Since") String timestamp,
|
|
||||||
@QueryParam("offset") int offset,
|
|
||||||
@QueryParam("limit") int limit) {
|
|
||||||
try {
|
|
||||||
PaginationResult result =
|
|
||||||
DeviceMgtAPIUtils.getGroupManagementProviderService().getGroups(username, offset, limit);
|
|
||||||
if (result != null && result.getRecordsTotal() > 0) {
|
|
||||||
return Response.status(Response.Status.OK).entity(result).build();
|
|
||||||
} else {
|
|
||||||
return Response.status(Response.Status.NOT_FOUND).build();
|
|
||||||
}
|
|
||||||
} catch (GroupManagementException e) {
|
|
||||||
String msg = "ErrorResponse occurred while retrieving the groups of user '" + username + "'";
|
|
||||||
log.error(msg, e);
|
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in new issue