From 18957b0110bf717422fac4af4713031da5cc95d2 Mon Sep 17 00:00:00 2001 From: charitha Date: Wed, 11 May 2016 19:30:55 +0530 Subject: [PATCH 1/2] Add required jagerry modules for the app --- .../carbon/device/mgt/jaxrs/api/Group.java | 6 +- .../src/assembly/src.xml | 9 +- .../jaggery-modules/utils/module.xml | 38 +++ .../utils/scripts/exception/exception.js | 62 +++++ .../utils/scripts/file/file.js | 167 +++++++++++++ .../utils/scripts/patterns/patterns.js | 128 ++++++++++ .../utils/scripts/reflection/reflection.js | 230 ++++++++++++++++++ .../utils/scripts/request/request.js | 57 +++++ .../utils/scripts/response/response.js | 96 ++++++++ .../utils/scripts/time/time.js | 35 +++ .../jaggery-modules/utils/scripts/url/url.js | 47 ++++ .../jaggery-modules/utils/scripts/xml/xml.js | 138 +++++++++++ .../pom.xml | 2 +- .../src/main/resources/p2.inf | 3 +- 14 files changed, 1010 insertions(+), 8 deletions(-) create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/module.xml create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/exception/exception.js create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/file/file.js create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/patterns/patterns.js create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/reflection/reflection.js create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/request/request.js create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/response/response.js create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/time/time.js create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/url/url.js create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/xml/xml.js diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Group.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Group.java index ab350b6b07..36e1723ba8 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Group.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Group.java @@ -43,7 +43,6 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; -import java.util.Arrays; import java.util.Date; import java.util.List; @@ -114,7 +113,7 @@ public class Group { @GET @Produces("application/json") - public Response getGroups(@QueryParam("start") int startIndex, @PathParam("length") int length) { + public Response getGroups(@QueryParam("start") int startIndex, @QueryParam("length") int length) { try { PaginationResult paginationResult = DeviceMgtAPIUtils.getGroupManagementProviderService() .getGroups(startIndex, length); @@ -318,8 +317,7 @@ public class Group { @Produces("application/json") public Response addSharing(@QueryParam("shareUser") String shareUser, @PathParam("groupName") String groupName, @PathParam("owner") String owner, - @PathParam("roleName") String roleName, - @FormParam("permissions") String[] permissions) { + @PathParam("roleName") String roleName, String[] permissions) { try { boolean isAdded = DeviceMgtAPIUtils.getGroupManagementProviderService().addGroupSharingRole( diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/assembly/src.xml b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/assembly/src.xml index 36997aa718..c9805f8946 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/assembly/src.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/assembly/src.xml @@ -29,12 +29,17 @@ ${basedir}/src/main/resources/jaggeryapps/devicemgt - / + /jaggeryapps/devicemgt-cdmf/ true ${basedir}/src/main/resources/jaggeryapps/uuf-template-app - / + /jaggeryapps/devicemgt-cdmf/ + true + + + ${basedir}/src/main/resources/jaggery-modules + /jaggery-modules/ true diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/module.xml b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/module.xml new file mode 100644 index 0000000000..485112332c --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/module.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/exception/exception.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/exception/exception.js new file mode 100644 index 0000000000..a80361dec0 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/exception/exception.js @@ -0,0 +1,62 @@ +/* + * Copyright (c) WSO2 Inc. (http://wso2.com) All Rights Reserved. + * + * Licensed 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. + */ + +/** + * Description: The response of the currently invoked api enpoint is organized + */ + +var exception = {}; +var log = new Log('exception_module'); + +(function(exception) { + /** + * + * @param message The exception description + * @param code HTTP STATUS CODE related to the exception + * @return The error object + */ + exception.buildExceptionObject = function(message, code) { + var error = {}; + error.message = message; + error.code = code; + return error; + }; + + exception.handleError = function (exception, type, code){ + var constants = require('rxt').constants; + + if (type == constants.THROW_EXCEPTION_TO_CLIENT) { + log.debug(exception); + var e = exceptionModule.buildExceptionObject(exception, code); + throw e; + } else if (type == constants.LOG_AND_THROW_EXCEPTION) { + log.error(exception); + throw exception; + } else if (type == constants.LOG_EXCEPTION_AND_TERMINATE) { + log.error(exception); + var msg = 'An error occurred while serving the request!'; + var e = exceptionModule.buildExceptionObject(msg, constants.STATUS_CODES.INTERNAL_SERVER_ERROR); + throw e; + } else if (type == constants.LOG_EXCEPTION_AND_CONTINUE) { + log.debug(exception); + } + else { + log.error(exception); + throw e; + } + }; +}(exception)) + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/file/file.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/file/file.js new file mode 100644 index 0000000000..f3aa6578f5 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/file/file.js @@ -0,0 +1,167 @@ +/* + * Copyright (c) 2005-2014, 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. + * + */ +var file = {}; +(function() { + var log = new Log('utils-file'); + var CONTENT_MAP = { + 'js': 'application/javascript', + 'css': 'text/css', + 'csv': 'text/csv', + 'html': 'text/html', + 'json': 'application/json', + 'png': 'image/png', + 'jpeg': 'image/jpeg', + 'gif': 'image/gif', + 'svg': 'image/svg+xml', + 'ttf': 'application/x-font-ttf', + 'eot': 'application/vnd.ms-fontobject', + 'woff': 'application/font-woff', + 'otf': 'application/x-font-otf', + 'zip': 'application/zip', + 'xml': 'text/xml', + 'xhtml': 'application/xhtml+xml', + 'pdf': 'application/pdf' + }; + /** + * The function checks whether a directory contains a particular file + * @param dir The directory in which the file must be checked + * @param file A File object if the file exists,else null + */ + file.getFileInDir = function(dir, fileName) { + var isFilePresent = false; + var files = dir.listFiles(); + for (var index in files) { + if (files[index].getName() == fileName) { + return files[index]; + } + } + return null; + }; + /** + * The function returns the file extension of a filename + * @param file + * @return: The extension of the file + */ + file.getExtension = function(file) { + var baseFileName = file.getName(); + //Break up the name by . + var baseNameComponents = baseFileName.split('.'); + var extension = baseNameComponents[baseNameComponents.length - 1]; + return extension; + }; + /** + * The function obtains the MIME type based on the extension + * @param The extension + * @return The mime type + */ + file.getMimeType = function(extension) { + return CONTENT_MAP[extension]; + }; + /** + * The function returns the name of the file without the file extension + * @param file A file object + * @return: The name of the file without the extension + */ + file.getFileName = function(file) { + //Get the name of the file + var baseFileName = file.getName(); + //Break up the name by . + var baseNameComponents = baseFileName.split('.'); + //Get all of the components except the last one + baseNameComponents.splice(baseNameComponents.length - 1, 1); + return baseNameComponents.join('.'); + }; + /** + * The function returns the contents of a directory as a JSON object.The name of the + * file is used as the property names without the extensions. + * NOTE: The method will not traverse sub folders. + * @param The directory to be inspected + * @return A JSON object which contains the files in the directory + */ + file.getDirectoryContents = function(dir) { + var dirContents = {}; + //Check if it is a directory + if (!dir.isDirectory()) { + log.info('Not a directory'); + return dirContents; + } + //Obtain a list of all files + var files = this.getAllFiles(dir); + var name; + log.info('Files: ' + files); + //Create the directory object with each file been a property + for (var index in files) { + dirContents[this.getFileName(files[index])] = files[index]; + } + return dirContents; + }; + /** + * The function obtains a list of files that are not directories + * @param dir The directory to be inspected + * @return An array with all of the files in the directory + */ + file.getAllFiles = function(dir) { + var filesInDir = []; + if (!dir.isDirectory()) { + return filesInDir; + } + //Obtain a list of all files + var files = dir.listFiles(); + for (var index in files) { + log.info('Checking file: ' + files[index].getName()); + //Check if the file is a directory + if (!files[index].isDirectory()) { + filesInDir.push(files[index]); + } + } + return filesInDir; + }; + /** + * The function returns a list of all file names in a directory + * @param dir The directory to be inspected + * @return {An array containing the name of all files in a directory + */ + file.getAllFileNames = function(dir) { + var files = dir.listFiles(); + var list = []; + var fileName; + for (var index in files) { + if (files[index].isDirectory()) { + fileName=this.getFileName(files[index].getName()); + list.push(fileName); + } + } + return list; + }; + /** + * The function returns a list of all sub directories in a given directory + * @param dir The root directory + * @return: An array containing all sub directories + */ + file.getAllSubDirs = function(dir) { + var files = dir.listFiles(); + var subDirs = []; + for (var index in files) { + if (files[index].isDirectory()) { + subDirs.push(files[index]); + } + } + return subDirs; + }; +}()); \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/patterns/patterns.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/patterns/patterns.js new file mode 100644 index 0000000000..f0e55bb254 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/patterns/patterns.js @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2005-2014, 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. + * + */ +var patterns = {}; + +(function () { + + var DEF_ERR_ARITY = 3; + var DEF_HANDLE_ARITY = 2; + var log = new Log('utils.patterns.GenericPipe'); + + function GenericPipe(options) { + this.errHandlerArity = DEF_ERR_ARITY || options.errArity; + this.handlerArity = DEF_HANDLE_ARITY || options.handlerArity; + this.plugins = []; + this.finalHandler = function () { + }; + } + + + /** + *The function registers the provided plugin + */ + GenericPipe.prototype.plug = function (plugin, options) { + var options = options || {}; + //Only a function + if (plugin instanceof Function) { + this.plugins.push({ + handle: plugin, + options: options + }); + } + //Is it a plugin object + else if (plugin instanceof Object) { + plugin.options = options; + this.plugins.push(plugin); + } + + return this; + }; + + GenericPipe.prototype.finally = function (plugin) { + this.finalHandler = plugin; + return this; + }; + + GenericPipe.prototype.resolve = function (data, req, res, session) { + var context = {}; + context.req = req; + context.res = res; + context.session = session; + context.data = data; + handle(context, this.plugins, this.errHandlerArity, this.handlerArity, this.finalHandler); + }; + + var handle = function (context, plugins, errArity, handlerArity, finallyHandler) { + var index = 0; + var currentPlugin; + + var recursiveHandle = function (err) { + + currentPlugin = plugins[index]; + + index++; + + //Check if there is a plugin + if (!currentPlugin) { + //log.warn('No plugin found at index: ' + index); + return; + } + + //Populate the options object for the plugin + context.options=currentPlugin.options;; + + //Check if an error has been provided + if (err) { + //Can the current plugin handle the err + if (currentPlugin.handle.length == errArity) { + try { + currentPlugin.handle(err, context,recursiveHandle); + } + catch (e) { + recursiveHandle(e); + } + } + else { + recursiveHandle(err); + } + } + //There is no error so try to invoke the current plugin + else { + if (currentPlugin.handle.length == handlerArity) { + try { + + + currentPlugin.handle(context,recursiveHandle); + } catch (e) { + recursiveHandle(e); + } + } + else { + recursiveHandle(); + } + } + }; + + recursiveHandle(); + finallyHandler(context); + }; + + patterns.GenericPipe = GenericPipe; + +}()); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/reflection/reflection.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/reflection/reflection.js new file mode 100644 index 0000000000..77ff58d49e --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/reflection/reflection.js @@ -0,0 +1,230 @@ +/* + * Copyright (c) 2005-2014, 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. + * + */ +var reflection = {}; +/** + * Description: The script encapsulates any reflection related utility functions + */ +(function() { + var log = new Log('utils-reflection'); + reflection.copyPropKeys = function(from, to) { + for (var key in from) { + if (from.hasOwnProperty(key)) { + to[key] = ''; + } + } + return to; + }; + /** + * The function recursively copies all property keys in an object + * @param from + * @param to + */ + reflection.copyAllPropKeys = function(from, to) { + recurse(from, to, function(from, to, key) { + if (from[key] instanceof Object) { + to[key] = from[key]; + } else { + to[key] = null; + } + }); + }; + reflection.copyAllPropValues = function(from, to) { + recurse(from, to, function(from, to, key) { + //Create an instance if the property does not exist + if (!to[key]) { + to[key] = {}; + } + //Copy the values over + if (!(from[key] instanceof Object)) { + to[key] = from[key]; + } else { + log.debug('Not copying values of key: ' + key); + } + }); + }; + /** + * The function will only copy public properties + * @param from + * @param to + */ + reflection.copyPublicPropValues = function(from, to) { + recurse(from, to, function(from, to, key) { + //Ignore any hidden properties + if (key.charAt(0) == '_') { + log.warn('Drop key: ' + key); + return; + } + //Create an instance if the property does not exist + if (!to[key]) { + to[key] = {}; + } + //Copy the values over + if (!(from[key] instanceof Object)) { + to[key] = from[key]; + } else { + log.warn('Not copying values of key: ' + key); + } + }); + }; + reflection.inspect = function(from, to, cb) { + recurse(from, to, cb); + }; + /** + * The function recursively traverses an object and then invokes the provided + * callback + * @param root + * @param clone + * @param cb + */ + var recurse = function(root, clone, cb) { + var key; + //Check if the root is an object + if (!(root instanceof Object)) { + return; + } else { + var keys = Object.keys(root); + //Go through all the other keys in the current root + for (var index in keys) { + key = keys[index]; + cb(root, clone, key); + recurse(root[key], clone[key], cb); + } + } + }; + reflection.copyProps = function(from, to) { + for (var key in from) { + if (from.hasOwnProperty(key)) { + to[key] = from[key]; + } + } + return to; + }; + reflection.getProps = function(obj) { + var props = {}; + for (var key in obj) { + if (!(obj[key] instanceof Function)) { + props[key] = obj[key]; + } + } + return props; + }; + reflection.printProps = function(obj) { + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + log.info('key: ' + key); + } + } + }; + /** + * The function determines if a property is hidden based on _ + * @param key + * @returns {boolean} + */ + reflection.isHiddenProp = function(key) { + if (key == '') { + return false; + } + return (key.charAt(0) == '_') ? true : false; + }; + var getDiff = function(a, b, diff) {}; + /** + * The function calculates the differences between two simple JSON objects + * @param a The object with which b is compared + * @param b The target of the comparison + * @return An object which records the differences between the two objects + */ + reflection.diff = function(a, b) {}; + /** + * The function merges the two provided objects to create a new + * object.In the case where b has the same property as a; the property of b + * will have precedence + * @param {[type]} a [description] + * @param {[type]} b [description] + * @return A new object having the properties of both object a and b + */ + reflection.merge = function(a, b) { + var newObj = {}; + //Copy the properties of a first + for (var key in a) { + newObj[key] = b[key]; + } + //Override with the properties of b + for (var key in b) { + newObj[key] = b[key]; + } + return newObj; + }; + /** + * The function allows a child class to override a select set of methods of + * a parent class.The original methods of the parent can be accessed + * using the this._super keyword + * @param {[type]} parent The parent class instance to be overriden + * @param {[type]} child The child class instance containing methods which will override the parent + */ + reflection.override = function(parent, child) { + //Make a clone of the parent + var super = parse(stringify(parent)); + for (var childKey in child) { + for (var parentKey in parent) { + //Only override those methods that are common + if (childKey === parentKey) { + var parentPtr = parent[parentKey]; + var childPtr = child[childKey]; + //Update the clone with the old parent method + super[parentKey] = parentPtr; + parent[parentKey] = childPtr; + /*parent[parentKey] = function() { + var result=childPtr.apply(this, arguments)||null; + return result; + };*/ + } + } + } + //Allow the child object to call methods of the parent + parent._super = super; + }; + reflection.overrideAll=function(parent,child){ + //Make a clone of the parent + var super = parse(stringify(parent)); + for (var childKey in child) { + for (var parentKey in parent) { + //Only override those methods that are common + if ( (child.hasOwnProperty(childKey))&&(parent.hasOwnProperty(parentKey)) ) { + var parentPtr = parent[parentKey]; + var childPtr = child[childKey]; + //Update the clone with the old parent method + super[parentKey] = parentPtr; + parent[parentKey] = childPtr; + /*parent[parentKey] = function() { + var result=childPtr.apply(this, arguments)||null; + return result; + };*/ + } + } + } + //Allow the child object to call methods of the parent + parent._super = super; + }; + reflection.isArray = function(object) { + if (Object.prototype.toString.call(object) === '[object Array]') { + return true; + } + return false; + }; +}()); \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/request/request.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/request/request.js new file mode 100644 index 0000000000..4218da70fd --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/request/request.js @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2005-2014, 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. + * + */ +var request = {}; +(function(request) { + var hasOwnProperty = function(obj, element) { + return Object.prototype.hasOwnProperty.call(obj, element); + }; + var isObject = function(object) {; + return typeof object === 'object'; + }; + /* + * ECMA Standard (ECMA-262 : 5.1 Edition)*/ + var decodes = function(encodedURI) { + return decodeURIComponent(encodedURI); + }; + request.getQueryOptions = function(queryString) { + var opt={}; + var sep = opt.sep || '&', + assign = opt.assign || '=', + compoArray = []; + var obj = {}; + var decodedURI = decodes(queryString); + decodedURI.split(sep).forEach(function(comp) { + comp.split(assign).some(function(element, index, array) { + if (hasOwnProperty(obj, element.toString())) { + compoArray.push(obj[element]); + compoArray.push(array[1]); + obj[element] = compoArray; + } else { + Object.defineProperty(obj, element, { + enumerable: true, + writable: true, + value: array[1] + }); + } + return true; + }); + }); + return obj; + }; +}(request)) \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/response/response.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/response/response.js new file mode 100644 index 0000000000..a8dae44247 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/response/response.js @@ -0,0 +1,96 @@ +/* + * Copyright (c) WSO2 Inc. (http://wso2.com) All Rights Reserved. + * + * Licensed 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. + */ + +/** + * Description: The response of the currently invoked api endpoint is organized + */ + +var response = {}; +var log = new Log("response"); + +(function(response) { + + /** + * Build Error response + * @param resp jaggery-response object to retrieve to client + * @param code status code + * @param message message to the client side + * @return return response + */ + response.buildErrorResponse = function(resp,code,message) { + var content={}; + content.error = message; + resp = processResponse(resp,code,content); + return resp; + }; + + /** + * Build success response + * @param resp jaggery response object + * @param code status code + * @param data the result to client + * @return return response + */ + response.buildSuccessResponse= function(resp, code, data){ + var content={}; + content.data = data; + resp = processResponse(resp,code,content); + return resp; + }; + + /** + * process General response + * @param resp jaggery response + * @param code status code + * @param data success result + * @return resp jaggery response + */ + response.buildSuccessResponseForRxt= function(resp, code, data){ + resp.status = code; + resp.content = data; + return resp; + }; + + /** + * General response builder + * @param resp jaggery response + * @param code status code + * @param content what ever the content to be sent as response + * @return resp jaggery response + */ + function processResponse(resp, code, content){ + resp.status = code; + resp.contentType = 'application/json'; + resp.content = content; + return resp; + + }; + + /** + * + * @param resp + * @param code + * @param data + * @return The http response + */ + response.buildSuccessResponseForRxt= function(resp, code, data){ + resp.contentType = 'application/json'; + resp.status = code; + resp.content = data; + return resp; + }; + +}(response)) \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/time/time.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/time/time.js new file mode 100644 index 0000000000..142d4fa73c --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/time/time.js @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2005-2014, 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. + * + */ +var time = {}; +(function(time) { + time.getCurrentTime = function(dateLength) { + var dateLength=dateLength||20; + var now = new String(new Date().valueOf()); + var length = now.length; + var prefix = dateLength; + var onsetVal = ''; + if (length != prefix) { + var onset = prefix - length; + for (var i = 0; i < onset; i++) { + onsetVal += '0'; + } + } + return onsetVal + now; + }; +}(time)); \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/url/url.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/url/url.js new file mode 100644 index 0000000000..5f8154607a --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/url/url.js @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2005-2014, 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. + * + */ +var url = {}; +(function() { + var log=new Log('utils-url'); + url.popServerDetails = function(obj) { + var process = require('process'); + var localIP = process.getProperty('server.host'); + var httpPort = process.getProperty('http.port'); + var httpsPort = process.getProperty('https.port'); + var value = ''; + var carbonLocalIP = process.getProperty('carbon.local.ip'); + + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + value = obj[key]; + if ((typeof value === 'string') && value.indexOf('%https.host%') > -1) { + value=value.replace('%https.host%', 'https://' + localIP + ':' + httpsPort); + } else if ((typeof value === 'string') && value.indexOf('%http.host%') > -1) { + value=value.replace('%http.host%', 'http://' + localIP + ':' + httpPort); + } else if ((typeof value === 'string') && value.indexOf('%https.carbon.local.ip%') > -1) { + value=value.replace('%https.carbon.local.ip%', 'https://' + carbonLocalIP + ':' + httpsPort); + } else if ((typeof value === 'string') && value.indexOf('%http.carbon.local.ip%') > -1) { + value=value.replace('%http.carbon.local.ip%', 'http://' + carbonLocalIP + ':' + httpPort); + } + obj[key] = value; + } + } + return obj; + }; +}(url)); \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/xml/xml.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/xml/xml.js new file mode 100644 index 0000000000..7caefe9d07 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggery-modules/utils/scripts/xml/xml.js @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2005-2014, 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. + * + */ +var xml = {}; + +(function () { + + var log=new Log('util.xml') + + /* + The method is used to create a JSON object using + an xml object. + @xmlElement: An xml element object to be processed + @return: A pseudo object containing the properties of the + xml element. + */ + var createJSONObject = function (xmlElement) { + + var pseudo = {}; + + //Extract all attributes + var attributes = xmlElement.@*; + + //Fill the pseudo object with the attributes of the element + for (var attributeKey in attributes) { + var attribute = attributes[attributeKey]; + pseudo[attribute.localName()] = attribute.toString(); + } + + return pseudo; + }; + + /* + The function converts an E4X Xml object to a JSON object + This function has been adapted from the work of Oleg Podsechin available at + https://gist.github.com/olegp/642667 + It uses a slightly modified version of his algorithm , therefore + all credit should be attributed to Oleg Podsechin. + IMPORTANT: + 1. It does not create a 1..1 mapping due to the differences + between Xml and JSON.It is IMPORTANT that you verify the structure + of the object generated before using it. + 2. The input xml object must not contain the xml header information + This is a known bug 336551 (Mozilla Developer Network) + Source: https://developer.mozilla.org/en/docs/E4X + Please remove the header prior to sending the xml object for processing. + @root: A starting element in an E4X Xml object + @return: A JSON object mirroring the provided Xml object + */ + var recursiveConvertE4XtoJSON = function (root) { + + log.debug('Root: ' + root.localName()); + + //Obtain child nodes + var children = root.*; + + //The number of children + var numChildren = children.length(); + + //No children + if (numChildren == 0) { + + //Extract contents + return createJSONObject(root); + } + else { + + //Create an empty object + var rootObject = createJSONObject(root); + + //Could be multiple children + for (var childElementKey in children) { + + var child = children[childElementKey]; + + log.debug('Examining child: ' + child.localName()); + + //If the child just contains a single value then stop + if (child.localName() == undefined) { + + log.debug('Child is undefined: ' + child.toString()); + + //Change the object to just a key value pair + rootObject[root.localName()] = child.toString(); + return rootObject; + } + + //Make a recursive call to construct the child element + var createdObject = recursiveConvertE4XtoJSON(child); + + log.debug('Converted object: ' + stringify(createdObject)); + + //Check if the root object has the property + if (rootObject.hasOwnProperty(child.localName())) { + + log.debug('key: ' + child.localName() + ' already present.'); + rootObject[child.localName()].push(createdObject); + } + else { + + log.debug('key: ' + child.localName() + ' not present.'); + rootObject[child.localName()] = []; + rootObject[child.localName()].push(createdObject); + + } + } + + log.debug('root: ' + root.localName()); + + return rootObject; + } + }; + + /** + * The function is used to convert an E4X xml to JSON + * @param root + */ + xml.convertE4XtoJSON = function (root) { + return recursiveConvertE4XtoJSON(root); + }; + + +}()); diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml index 883cc9f3c3..d00f2d3213 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml +++ b/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml @@ -57,7 +57,7 @@ zip true - ${project.build.directory}/maven-shared-archive-resources/jaggeryapps/devicemgt-cdmf + ${project.build.directory}/maven-shared-archive-resources **/* diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/src/main/resources/p2.inf b/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/src/main/resources/p2.inf index d4cb94274f..47e5f30872 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/src/main/resources/p2.inf +++ b/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/src/main/resources/p2.inf @@ -1,3 +1,4 @@ instructions.configure = \ org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt-cdmf);\ -org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.ui_${feature.version}/jaggeryapps/devicemgt-cdmf,target:${installFolder}/../../deployment/server/jaggeryapps/devicemgt-cdmf,overwrite:true);\ \ No newline at end of file +org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.ui_${feature.version}/jaggeryapps/devicemgt-cdmf,target:${installFolder}/../../deployment/server/jaggeryapps/devicemgt-cdmf,overwrite:true);\ +org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.ui_${feature.version}/jaggery-modules/utils/,target:${installFolder}/../../modules/utils,overwrite:true);\ \ No newline at end of file From 973e1ce40ffc54d2773c583acd394d1c9f80e026 Mon Sep 17 00:00:00 2001 From: charitha Date: Fri, 13 May 2016 13:52:35 +0530 Subject: [PATCH 2/2] Fix issues in group api --- .../org/wso2/carbon/device/mgt/jaxrs/api/Group.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Group.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Group.java index cc8ce89039..3f50b33596 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Group.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Group.java @@ -35,10 +35,8 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; import java.util.List; -/** - * - */ -@Api(value = "Group") +@Path("/groups") +@Api(value = "Group", description = "Group related operations such as get all the available groups, etc.") @SuppressWarnings("NonJaxWsWebServices") public interface Group { @@ -59,7 +57,7 @@ public interface Group { @GET @Produces("application/json") - Response getGroups(@QueryParam("start") int startIndex, @PathParam("length") int length); + Response getGroups(@QueryParam("start") int startIndex, @QueryParam("length") int length); @Path("/all") @GET @@ -119,8 +117,7 @@ public interface Group { @PUT @Produces("application/json") Response addSharing(@QueryParam("shareUser") String shareUser, @PathParam("groupName") String groupName, - @PathParam("owner") String owner, @PathParam("roleName") String roleName, - @FormParam("permissions") String[] permissions); + @PathParam("owner") String owner, @PathParam("roleName") String roleName, String[] permissions); @DELETE @Path("/owner/{owner}/name/{groupName}/share/roles/{roleName}/permissions")