forked from community/device-mgt-core
parent
0c8f1ce770
commit
18957b0110
@ -0,0 +1,38 @@
|
|||||||
|
<module name="utils" xmlns="http://wso2.org/projects/jaggery/module.xml">
|
||||||
|
<script>
|
||||||
|
<name>reflection</name>
|
||||||
|
<path>scripts/reflection/reflection.js</path>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
<name>file</name>
|
||||||
|
<path>scripts/file/file.js</path>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
<name>patterns</name>
|
||||||
|
<path>scripts/patterns/patterns.js</path>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
<name>xml</name>
|
||||||
|
<path>scripts/xml/xml.js</path>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
<name>request</name>
|
||||||
|
<path>scripts/request/request.js</path>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
<name>response</name>
|
||||||
|
<path>scripts/response/response.js</path>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
<name>time</name>
|
||||||
|
<path>scripts/time/time.js</path>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
<name>url</name>
|
||||||
|
<path>scripts/url/url.js</path>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
<name>exception</name>
|
||||||
|
<path>scripts/exception/exception.js</path>
|
||||||
|
</script>
|
||||||
|
</module>
|
@ -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))
|
||||||
|
|
@ -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;
|
||||||
|
};
|
||||||
|
}());
|
@ -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;
|
||||||
|
|
||||||
|
}());
|
@ -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;
|
||||||
|
};
|
||||||
|
}());
|
@ -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))
|
@ -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))
|
@ -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));
|
@ -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));
|
@ -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);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
}());
|
@ -1,3 +1,4 @@
|
|||||||
instructions.configure = \
|
instructions.configure = \
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt-cdmf);\
|
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);\
|
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);\
|
Loading…
Reference in new issue