mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge pull request #281 from charithag/master
FIx for https://wso2.org/jira/browse/IOTS-169
This commit is contained in:
commit
d763d81404
@ -25,7 +25,7 @@ import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
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.DeviceGroupConstants;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyEixistException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyExistException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupUser;
|
||||
import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService;
|
||||
@ -50,6 +50,9 @@ import java.util.List;
|
||||
@SuppressWarnings("NonJaxWsWebServices")
|
||||
public class GroupImpl implements Group {
|
||||
|
||||
private static final String GROUP_CANNOT_NULL_MSG = "Group cannot be null.";
|
||||
private static final String GROUP_NAME_INVALID_MSG = "Provided group name is invalid. Should be in minimum 3 " +
|
||||
"characters long and should not include any whitespaces.";
|
||||
private static Log log = LogFactory.getLog(GroupImpl.class);
|
||||
|
||||
@Override
|
||||
@ -58,7 +61,9 @@ public class GroupImpl implements Group {
|
||||
public Response createGroup(DeviceGroup group) {
|
||||
String owner = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||
if (group == null) {
|
||||
return Response.status(Response.Status.BAD_REQUEST).build();
|
||||
return Response.status(Response.Status.BAD_REQUEST).entity(GROUP_CANNOT_NULL_MSG).build();
|
||||
} else if (group.getName() == null || !group.getName().matches("^[\\S]{3,30}$")) {
|
||||
return Response.status(Response.Status.BAD_REQUEST).entity(GROUP_NAME_INVALID_MSG).build();
|
||||
}
|
||||
group.setOwner(owner);
|
||||
group.setDateOfCreation(new Date().getTime());
|
||||
@ -78,7 +83,7 @@ public class GroupImpl implements Group {
|
||||
groupManagementService.addGroupSharingRole(owner, group.getName(), owner, DeviceGroupConstants.Roles.DEFAULT_VIEW_EVENTS,
|
||||
DeviceGroupConstants.Permissions.DEFAULT_VIEW_EVENTS_PERMISSIONS);
|
||||
return Response.status(Response.Status.CREATED).build();
|
||||
} catch (GroupAlreadyEixistException e) {
|
||||
} catch (GroupAlreadyExistException e) {
|
||||
return Response.status(Response.Status.CONFLICT).entity(e.getMessage()).build();
|
||||
} catch (GroupManagementException e) {
|
||||
log.error(e.getErrorMessage(), e);
|
||||
@ -92,9 +97,12 @@ public class GroupImpl implements Group {
|
||||
@Consumes("application/json")
|
||||
@Produces("application/json")
|
||||
public Response updateGroup(@PathParam("groupName") String groupName, @PathParam("owner") String owner,
|
||||
DeviceGroup deviceGroup) {
|
||||
DeviceGroup group) {
|
||||
if (group.getName() == null || !group.getName().matches("^[\\S]{3,30}$")) {
|
||||
return Response.status(Response.Status.BAD_REQUEST).entity(GROUP_NAME_INVALID_MSG).build();
|
||||
}
|
||||
try {
|
||||
DeviceMgtAPIUtils.getGroupManagementProviderService().updateGroup(deviceGroup, groupName, owner);
|
||||
DeviceMgtAPIUtils.getGroupManagementProviderService().updateGroup(group, groupName, owner);
|
||||
return Response.status(Response.Status.OK).build();
|
||||
} catch (GroupManagementException e) {
|
||||
log.error(e.getErrorMessage(), e);
|
||||
|
||||
@ -21,31 +21,31 @@ package org.wso2.carbon.device.mgt.common.group.mgt;
|
||||
/**
|
||||
* This class represents a custom exception specified for group management
|
||||
*/
|
||||
public class GroupAlreadyEixistException extends Exception {
|
||||
public class GroupAlreadyExistException extends Exception {
|
||||
|
||||
private static final long serialVersionUID = -312678379574816874L;
|
||||
private String errorMessage;
|
||||
|
||||
public GroupAlreadyEixistException(String msg, Exception nestedEx) {
|
||||
public GroupAlreadyExistException(String msg, Exception nestedEx) {
|
||||
super(msg, nestedEx);
|
||||
setErrorMessage(msg);
|
||||
}
|
||||
|
||||
public GroupAlreadyEixistException(String message, Throwable cause) {
|
||||
public GroupAlreadyExistException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
setErrorMessage(message);
|
||||
}
|
||||
|
||||
public GroupAlreadyEixistException(String msg) {
|
||||
public GroupAlreadyExistException(String msg) {
|
||||
super(msg);
|
||||
setErrorMessage(msg);
|
||||
}
|
||||
|
||||
public GroupAlreadyEixistException() {
|
||||
public GroupAlreadyExistException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public GroupAlreadyEixistException(Throwable cause) {
|
||||
public GroupAlreadyExistException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
@ -22,7 +22,7 @@ import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
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.GroupAlreadyEixistException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyExistException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupUser;
|
||||
import org.wso2.carbon.user.core.multiplecredentials.UserDoesNotExistException;
|
||||
@ -43,7 +43,7 @@ public interface GroupManagementProviderService {
|
||||
* @throws GroupManagementException
|
||||
*/
|
||||
void createGroup(DeviceGroup deviceGroup, String defaultRole,
|
||||
String[] defaultPermissions) throws GroupManagementException, GroupAlreadyEixistException;
|
||||
String[] defaultPermissions) throws GroupManagementException, GroupAlreadyExistException;
|
||||
|
||||
/**
|
||||
* Update existing device group.
|
||||
|
||||
@ -29,7 +29,7 @@ import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
import org.wso2.carbon.device.mgt.common.TransactionManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyEixistException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyExistException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupUser;
|
||||
import org.wso2.carbon.device.mgt.core.group.mgt.DeviceGroupBuilder;
|
||||
@ -69,7 +69,7 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
||||
*/
|
||||
@Override
|
||||
public void createGroup(DeviceGroup deviceGroup, String defaultRole, String[] defaultPermissions)
|
||||
throws GroupManagementException, GroupAlreadyEixistException {
|
||||
throws GroupManagementException, GroupAlreadyExistException {
|
||||
if (deviceGroup == null) {
|
||||
throw new GroupManagementException("DeviceGroup cannot be null.", new NullPointerException());
|
||||
}
|
||||
@ -83,7 +83,7 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
||||
groupId = this.groupDAO.addGroup(groupBroker, tenantId);
|
||||
GroupManagementDAOFactory.commitTransaction();
|
||||
} else {
|
||||
throw new GroupAlreadyEixistException("Group exist with name " + deviceGroup.getName());
|
||||
throw new GroupAlreadyExistException("Group exist with name " + deviceGroup.getName());
|
||||
}
|
||||
} catch (GroupManagementDAOException e) {
|
||||
GroupManagementDAOFactory.rollbackTransaction();
|
||||
|
||||
@ -37,6 +37,11 @@
|
||||
"emailJSRegEx" : "/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/",
|
||||
"emailRegExViolationErrorMsg" : "Provided email is invalid."
|
||||
},
|
||||
"groupValidationConfig": {
|
||||
"groupNameJSRegEx": "^[\\S]{3,30}$",
|
||||
"groupNameRegExViolationErrorMsg": "Provided group name is invalid.",
|
||||
"groupNameHelpMsg": "Should be in minimum 3 characters long and should not include any whitespaces."
|
||||
},
|
||||
"roleValidationConfig" : {
|
||||
"rolenameJSRegEx" : "^[\\S]{3,30}$",
|
||||
"rolenameRegExViolationErrorMsg" : "Provided role name is invalid.",
|
||||
|
||||
@ -1,20 +1,3 @@
|
||||
{{!
|
||||
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.
|
||||
}}
|
||||
{{unit "cdmf.unit.ui.title" pageTitle="Group Management"}}
|
||||
|
||||
{{#zone "breadcrumbs"}}
|
||||
@ -49,11 +32,12 @@
|
||||
</span>
|
||||
|
||||
<hr/>
|
||||
<form method="GET" class="form-login-box" action="groups">
|
||||
<div class="form-login-box">
|
||||
<label class="wr-input-label">Group Name</label>
|
||||
|
||||
<div class="wr-input-control">
|
||||
<input type="text right" id="name" placeholder="Group Name">
|
||||
<input type="text right" id="name" placeholder="Group Name" data-regex="{{groupNameJSRegEx}}"
|
||||
data-errormsg="{{groupNameRegExViolationErrorMsg}}">
|
||||
</div>
|
||||
|
||||
<label class="wr-input-label">Description</label>
|
||||
@ -68,7 +52,7 @@
|
||||
<button class="wr-btn" onclick="window.location = '{{@app.context}}/groups';return false;">
|
||||
Cancel </button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Returns the dynamic state to be populated by add-group page.
|
||||
*
|
||||
* @param context Object that gets updated with the dynamic state of this page to be presented
|
||||
* @returns {*} A context object that returns the dynamic state of this page to be presented
|
||||
*/
|
||||
function onRequest(context) {
|
||||
var devicemgtProps = require('/app/conf/devicemgt-props.js').config();
|
||||
var page = {};
|
||||
page["groupNameJSRegEx"] = devicemgtProps.groupValidationConfig.groupNameJSRegEx;
|
||||
page["groupNameRegExViolationErrorMsg"] = devicemgtProps.groupValidationConfig.groupNameRegExViolationErrorMsg;
|
||||
page["groupNameHelpMsg"] = devicemgtProps.groupValidationConfig.groupNameHelpMsg;
|
||||
return page;
|
||||
}
|
||||
@ -16,6 +16,18 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Checks if provided input is valid against RegEx input.
|
||||
*
|
||||
* @param regExp Regular expression
|
||||
* @param inputString Input string to check
|
||||
* @returns {boolean} Returns true if input matches RegEx
|
||||
*/
|
||||
function inputIsValid(regExp, inputString) {
|
||||
regExp = new RegExp(regExp);
|
||||
return regExp.test(inputString);
|
||||
}
|
||||
|
||||
$(function () {
|
||||
$("button#add-group-btn").click(function () {
|
||||
|
||||
@ -26,6 +38,10 @@ $(function () {
|
||||
$('.wr-validation-summary strong').text("Group Name is a required field. It cannot be empty.");
|
||||
$('.wr-validation-summary').removeClass("hidden");
|
||||
return false;
|
||||
} else if (!inputIsValid($("input#name").data("regex"), name)) {
|
||||
$('.wr-validation-summary strong').text($("input#name").data("errormsg"));
|
||||
$('.wr-validation-summary').removeClass("hidden");
|
||||
return false;
|
||||
} else {
|
||||
var group = {"name": name, "description": description};
|
||||
|
||||
|
||||
@ -226,8 +226,7 @@
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>Exception at backend. Try Later.</h3>
|
||||
|
||||
<h3 id="error-msg">Bad Request. Please contact your administrator.</h3>
|
||||
<div class="buttons">
|
||||
<a href="#" id="group-400-link" class="btn-operations">
|
||||
Ok
|
||||
|
||||
@ -484,6 +484,9 @@ function displayErrors(jqXHR) {
|
||||
showPopup();
|
||||
if (jqXHR.status == 400) {
|
||||
$(modalPopupContent).html($('#group-400-content').html());
|
||||
if (jqXHR.responseText) {
|
||||
$('#error-msg').html(jqXHR.responseText.replace(new RegExp("\"", 'g'), ""));
|
||||
}
|
||||
$("a#group-400-link").click(function () {
|
||||
hidePopup();
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user