From 18957b0110bf717422fac4af4713031da5cc95d2 Mon Sep 17 00:00:00 2001 From: charitha Date: Wed, 11 May 2016 19:30:55 +0530 Subject: [PATCH 1/5] 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 9e4b4d22054225cac28385b198d4eb39755b4bf2 Mon Sep 17 00:00:00 2001 From: prabathabey Date: Fri, 13 May 2016 04:02:42 +0530 Subject: [PATCH 2/5] Improving swagger annotations --- .../org.wso2.carbon.device.mgt.api/pom.xml | 18 +++ .../device/mgt/jaxrs/ApiOriginFilter.java | 44 ++++++ .../device/mgt/jaxrs/api/Authentication.java | 34 ----- .../device/mgt/jaxrs/api/Certificate.java | 3 +- .../device/mgt/jaxrs/api/Configuration.java | 1 + .../carbon/device/mgt/jaxrs/api/Device.java | 8 +- .../mgt/jaxrs/api/DeviceInformation.java | 1 + .../mgt/jaxrs/api/DeviceNotification.java | 1 + .../device/mgt/jaxrs/api/DeviceSearch.java | 4 +- .../carbon/device/mgt/jaxrs/api/Feature.java | 1 + .../carbon/device/mgt/jaxrs/api/License.java | 1 + .../device/mgt/jaxrs/api/Operation.java | 5 +- .../carbon/device/mgt/jaxrs/api/Policy.java | 1 + .../carbon/device/mgt/jaxrs/api/Profile.java | 1 + .../carbon/device/mgt/jaxrs/api/Role.java | 20 +-- .../carbon/device/mgt/jaxrs/api/User.java | 5 +- .../jaxrs/api/impl/AuthenticationImpl.java | 36 ----- .../device/mgt/jaxrs/api/impl/DeviceImpl.java | 4 +- .../mgt/jaxrs/api/impl/DeviceSearchImpl.java | 2 +- .../mgt/jaxrs/api/impl/OperationImpl.java | 2 +- .../device/mgt/jaxrs/api/impl/RoleImpl.java | 4 +- .../device/mgt/jaxrs/api/impl/UserImpl.java | 4 +- .../src/main/webapp/WEB-INF/cxf-servlet.xml | 140 +++--------------- .../src/main/webapp/WEB-INF/web.xml | 21 ++- pom.xml | 19 ++- 25 files changed, 153 insertions(+), 227 deletions(-) create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/ApiOriginFilter.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Authentication.java delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/AuthenticationImpl.java diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml index 07ef52fde5..0d53ffbc05 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml @@ -207,6 +207,24 @@ io.swagger swagger-annotations + + + io.swagger + swagger-core + + + org.slf4j + slf4j-api + + + + + io.swagger + swagger-jaxrs + + + javax.servlet + servlet-api provided diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/ApiOriginFilter.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/ApiOriginFilter.java new file mode 100644 index 0000000000..9ba3b5b97b --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/ApiOriginFilter.java @@ -0,0 +1,44 @@ +/* + * 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; + +import javax.servlet.*; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public class ApiOriginFilter implements Filter { + + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + HttpServletResponse res = (HttpServletResponse) response; + res.addHeader("Access-Control-Allow-Origin", "*"); + res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT"); + res.addHeader("Access-Control-Allow-Headers", "Content-Type"); + chain.doFilter(request, response); + } + + public void destroy() { + //do nothing + } + + public void init(FilterConfig filterConfig) throws ServletException { + //do nothing + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Authentication.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Authentication.java deleted file mode 100644 index e28de808a0..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Authentication.java +++ /dev/null @@ -1,34 +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.api; - -import io.swagger.annotations.Api; - -import javax.ws.rs.Consumes; -import javax.ws.rs.Produces; - -/** - * Authentication related REST-API interface. - */ -@Api(value = "Authentication") -@Produces({ "application/json", "application/xml" }) -@Consumes({ "application/json", "application/xml" }) -public interface Authentication { - -} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Certificate.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Certificate.java index 8bfcd31f66..8a2662036b 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Certificate.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Certificate.java @@ -36,8 +36,9 @@ import javax.ws.rs.core.Response; /** * All the certificate related tasks such as saving certificates, can be done through this endpoint. */ -@Api(value = "Certificate", description = "certificate related tasks such as saving certificates") +@Api(value = "Certificate", description = "Certificate related tasks such as saving certificates") @SuppressWarnings("NonJaxWsWebServices") +@Path("/certificates") @Produces({ "application/json", "application/xml" }) @Consumes({ "application/json", "application/xml" }) public interface Certificate { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Configuration.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Configuration.java index c7bc7759cf..5e7c8a9cd2 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Configuration.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Configuration.java @@ -35,6 +35,7 @@ import javax.ws.rs.core.Response; * All end points support JSON, XMl with content negotiation. */ @Api(value = "Configuration", description = "General Tenant Configuration implementation") +@Path("/configuration") @SuppressWarnings("NonJaxWsWebServices") @Produces({ "application/json", "application/xml" }) @Consumes({ "application/json", "application/xml" }) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Device.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Device.java index 9710e6f426..97b34d16fe 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Device.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Device.java @@ -29,7 +29,8 @@ import javax.ws.rs.core.Response; /** * Device related operations such as get all the available devices, etc. */ -@Api(value = "Devices") +@Api(value = "Devices", description = "") +@Path("/devices") @SuppressWarnings("NonJaxWsWebServices") public interface Device { @@ -40,6 +41,7 @@ public interface Device { * @return Device List */ @GET + @Path("devices") @ApiOperation( consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON, @@ -94,7 +96,7 @@ public interface Device { */ @GET @Path("user/{user}") - Response getDevice(@PathParam("user") String user); + Response getDeviceOfUser(@PathParam("user") String user); /** * Fetch device count of a given user. @@ -104,7 +106,7 @@ public interface Device { */ @GET @Path("user/{user}/count") - Response getDeviceCount(@PathParam("user") String user); + Response getDeviceCountOfUser(@PathParam("user") String user); /** * Get current device count diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceInformation.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceInformation.java index d55477eb07..f03c5c6c73 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceInformation.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceInformation.java @@ -37,6 +37,7 @@ import javax.ws.rs.core.Response; * Device information related operations. */ @Api(value = "DeviceInfo") +@Path("/information") @SuppressWarnings("NonJaxWsWebServices") public interface DeviceInformation { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceNotification.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceNotification.java index f17e584051..9e1aa4ddfc 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceNotification.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceNotification.java @@ -42,6 +42,7 @@ import javax.ws.rs.core.Response; */ @Api(value = "DeviceNotification") @SuppressWarnings("NonJaxWsWebServices") +@Path("/notifications") @Produces({"application/json", "application/xml"}) @Consumes({ "application/json", "application/xml" }) public interface DeviceNotification { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceSearch.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceSearch.java index ec27086e36..9cf154e955 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceSearch.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/DeviceSearch.java @@ -28,6 +28,7 @@ import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper; import org.wso2.carbon.device.mgt.common.search.SearchContext; import javax.ws.rs.GET; +import javax.ws.rs.Path; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @@ -35,6 +36,7 @@ import javax.ws.rs.core.Response; * Device search related operations such as getting device information. */ @Api(value = "DeviceSearch") +@Path("/search") @SuppressWarnings("NonJaxWsWebServices") public interface DeviceSearch { @@ -50,6 +52,6 @@ public interface DeviceSearch { @ApiResponse(code = 200, message = "OK"), @ApiResponse(code = 500, message = "Error occurred while searching the device information") }) - Response getDeviceInfo(@ApiParam(name = "enrollmentCertificates", value = "List of search conditions", + Response getFilteredDeviceInfo(@ApiParam(name = "enrollmentCertificates", value = "List of search conditions", required = true) SearchContext searchContext); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Feature.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Feature.java index 42f23ae3b9..c95195714b 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Feature.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Feature.java @@ -33,6 +33,7 @@ import javax.ws.rs.core.Response; */ @Api(value = "Feature") @SuppressWarnings("NonJaxWsWebServices") +@Path("/features") @Produces({"application/json", "application/xml"}) @Consumes({"application/json", "application/xml"}) public interface Feature { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/License.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/License.java index fe07dce2e3..f8884e818c 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/License.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/License.java @@ -28,6 +28,7 @@ import javax.ws.rs.core.Response; * This class represents license related operations. */ @Api(value = "License") +@Path("/license") @SuppressWarnings("NonJaxWsWebServices") public interface License { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Operation.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Operation.java index 131eef9b2d..8c3bc55a97 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Operation.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Operation.java @@ -37,6 +37,7 @@ import javax.ws.rs.core.Response; * */ @Api(value = "Operation") +@Path("/operations") public interface Operation { /* @deprecated */ @@ -49,7 +50,7 @@ public interface Operation { consumes = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, produces = MediaType.APPLICATION_JSON + ", " + MediaType.APPLICATION_XML, httpMethod = "GET", - value = "Getting Pagination Details for Operations on a Device.", + value = "Getting Paginated Details for Operations on a Device.", notes = "You will carry out many operations on a device. In a situation where you wish to view the all" + " the operations carried out on a device it is not feasible to show all the details on one page" + " therefore the details are paginated." + @@ -89,7 +90,7 @@ public interface Operation { @ApiResponses(value = { @ApiResponse(code = 200, message = "List of Operations on a device."), @ApiResponse(code = 500, message = "Error occurred while fetching the operations for the " + "device.") }) - Response getDeviceOperations(@ApiParam(name = "type", value = "Define the device type as the value for {type}. " + + Response getAllDeviceOperations(@ApiParam(name = "type", value = "Define the device type as the value for {type}. " + "Example: ios, android or windows.", required = true) @PathParam("type") String type, @ApiParam(name = "id", value = "Define the device ID", diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Policy.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Policy.java index e266e8ee94..9cad917842 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Policy.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Policy.java @@ -39,6 +39,7 @@ import java.util.List; * */ @Api(value = "Policy") +@Path("/policies") public interface Policy { @POST diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Profile.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Profile.java index 182b1adbf6..7762048499 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Profile.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Profile.java @@ -30,6 +30,7 @@ import javax.ws.rs.core.Response; * These end points provide profile related operations. */ @Api(value = "Profile") +@Path("/profiles") @SuppressWarnings("NonJaxWsWebServices") public interface Profile { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Role.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Role.java index abf48eb8e5..57ec14ce76 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Role.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/Role.java @@ -19,27 +19,16 @@ package org.wso2.carbon.device.mgt.jaxrs.api; import io.swagger.annotations.*; -import org.wso2.carbon.device.mgt.common.app.mgt.Application; -import org.wso2.carbon.device.mgt.jaxrs.api.util.ResponsePayload; import org.wso2.carbon.device.mgt.jaxrs.beans.RoleWrapper; import org.wso2.carbon.user.mgt.common.UIPermissionNode; -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.*; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.util.List; -/** - * - */ @Api(value = "Role") +@Path("/roles") public interface Role { @GET @@ -54,7 +43,7 @@ public interface Role { response = String.class) @ApiResponses(value = { @ApiResponse(code = 200, message = "List of available roles"), @ApiResponse(code = 500, message = "Error occurred while fetching the role list.") }) - Response getRoles(); + Response getAllRoles(); @GET @Path("{userStore}") @@ -69,7 +58,7 @@ public interface Role { response = String.class) @ApiResponses(value = { @ApiResponse(code = 200, message = "List of available roles"), @ApiResponse(code = 500, message = "Error occurred while fetching the role list.") }) - Response getRoles(@ApiParam(name = "userStore", value = "Provide the name of the UserStore you wish to get the" + + Response getRolesOfUserStore(@ApiParam(name = "userStore", value = "Provide the name of the UserStore you wish to get the" + " details from ", required = true) @PathParam("userStore") String userStore); @@ -208,4 +197,5 @@ public interface Role { @ApiResponses(value = { @ApiResponse(code = 200, message = "Retrieved the role count."), @ApiResponse(code = 500, message = "Error occurred while retrieving the role count.") }) Response getRoleCount(); + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/User.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/User.java index 6c5e45b7b9..747abf0b4a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/User.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/User.java @@ -45,6 +45,7 @@ import java.util.List; * This represents the JAX-RS services of User related functionality. */ @Api(value = "User") +@Path("/users") public interface User { @POST @@ -139,7 +140,7 @@ public interface User { @ApiResponse(code = 400, message = "User by username: 'username' does not exist for role retrieval"), @ApiResponse(code = 500, message = "Exception in trying to retrieve roles for user by username: 'username'") }) - Response getRoles(@ApiParam(name = "username", value = "Provide the user name of the user you wish to get" + Response getRolesOfUser(@ApiParam(name = "username", value = "Provide the user name of the user you wish to get" + " the role details", required = true) @QueryParam("username") String username); @GET @@ -264,7 +265,7 @@ public interface User { @PUT @Path("{roleName}/users") @Produces({MediaType.APPLICATION_JSON}) - Response updateRoles(@PathParam("username") String username, List userList); + Response updateRoles(@PathParam("roleName") String roleName, List userList); @POST @Path("change-password") diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/AuthenticationImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/AuthenticationImpl.java deleted file mode 100644 index 8bc0cd78d8..0000000000 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/AuthenticationImpl.java +++ /dev/null @@ -1,36 +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.api.impl; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import javax.ws.rs.Consumes; -import javax.ws.rs.Produces; - -/** - * Authentication related REST-API implementation. - */ -@Produces({ "application/json", "application/xml" }) -@Consumes({ "application/json", "application/xml" }) -public class AuthenticationImpl { - - private static Log log = LogFactory.getLog(AuthenticationImpl.class); -} - diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceImpl.java index e25b9b9288..19ea361c08 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceImpl.java @@ -142,7 +142,7 @@ public class DeviceImpl implements Device{ */ @GET @Path("user/{user}") - public Response getDevice(@PathParam("user") String user) { + public Response getDeviceOfUser(@PathParam("user") String user) { List devices; try { devices = DeviceMgtAPIUtils.getDeviceManagementService().getDevicesOfUser(user); @@ -165,7 +165,7 @@ public class DeviceImpl implements Device{ */ @GET @Path("user/{user}/count") - public Response getDeviceCount(@PathParam("user") String user) { + public Response getDeviceCountOfUser(@PathParam("user") String user) { try { Integer count = DeviceMgtAPIUtils.getDeviceManagementService().getDeviceCount(user); return Response.status(Response.Status.OK).entity(count).build(); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceSearchImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceSearchImpl.java index 4582fa24d3..7ed9576d0b 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceSearchImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/DeviceSearchImpl.java @@ -38,7 +38,7 @@ public class DeviceSearchImpl implements DeviceSearch { private static Log log = LogFactory.getLog(DeviceSearchImpl.class); @GET - public Response getDeviceInfo(SearchContext searchContext) { + public Response getFilteredDeviceInfo(SearchContext searchContext) { SearchManagerService searchManagerService; List devices; try { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/OperationImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/OperationImpl.java index bdca4c5491..09beeeeda4 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/OperationImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/OperationImpl.java @@ -103,7 +103,7 @@ public class OperationImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Opera @Override @GET @Path("{type}/{id}") - public Response getDeviceOperations(@PathParam("type") String type, @PathParam("id") String id) { + public Response getAllDeviceOperations(@PathParam("type") String type, @PathParam("id") String id) { List operations; DeviceManagementProviderService dmService; DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/RoleImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/RoleImpl.java index 739f5f5678..278a7dfd26 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/RoleImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/RoleImpl.java @@ -65,7 +65,7 @@ public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role { @Override @GET @Produces({MediaType.APPLICATION_JSON}) - public Response getRoles() { + public Response getAllRoles() { List filteredRoles; try { filteredRoles = getRolesFromUserStore(); @@ -89,7 +89,7 @@ public class RoleImpl implements org.wso2.carbon.device.mgt.jaxrs.api.Role { @GET @Path("{userStore}") @Produces({MediaType.APPLICATION_JSON}) - public Response getRoles(@PathParam("userStore") String userStore) { + public Response getRolesOfUserStore(@PathParam("userStore") String userStore) { String[] roles; try { AbstractUserStoreManager abstractUserStoreManager = diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/UserImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/UserImpl.java index 2b136e6131..427a654e54 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/UserImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/api/impl/UserImpl.java @@ -371,7 +371,7 @@ public class UserImpl implements org.wso2.carbon.device.mgt.jaxrs.api.User { @GET @Path("roles") @Produces({MediaType.APPLICATION_JSON}) - public Response getRoles(@QueryParam("username") String username) { + public Response getRolesOfUser(@QueryParam("username") String username) { ResponsePayload responsePayload = new ResponsePayload(); try { UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); @@ -716,7 +716,7 @@ public class UserImpl implements org.wso2.carbon.device.mgt.jaxrs.api.User { @PUT @Path("{roleName}/users") @Produces({MediaType.APPLICATION_JSON}) - public Response updateRoles(@PathParam("username") String username, List userList) { + public Response updateRoles(@PathParam("roleName") String username, List userList) { try { final UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager(); if (log.isDebugEnabled()) { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml index 3f2159018c..05d9a6d8b4 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/cxf-servlet.xml @@ -24,145 +24,46 @@ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + + + + + + + + + + + + + + + @@ -175,9 +76,6 @@ - diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/web.xml b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/web.xml index ab8d04cbe8..97f0970968 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/web.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/WEB-INF/web.xml @@ -25,6 +25,16 @@ org.apache.cxf.transport.servlet.CXFServlet + + + + + + + + swagger.security.filter + ApiAuthorizationFilterImpl + 1 @@ -41,7 +51,7 @@ doAuthentication - true + false