harshanl 8 years ago
commit 17127c3846

@ -139,6 +139,7 @@
org.wso2.carbon.context, org.wso2.carbon.context,
org.wso2.carbon.device.mgt.common.operation.mgt, org.wso2.carbon.device.mgt.common.operation.mgt,
org.wso2.carbon.device.mgt.common.push.notification, org.wso2.carbon.device.mgt.common.push.notification,
org.wso2.carbon.device.mgt.common,
org.wso2.carbon.device.mgt.core.service, org.wso2.carbon.device.mgt.core.service,
org.wso2.carbon.event.output.adapter.core, org.wso2.carbon.event.output.adapter.core,
org.wso2.carbon.event.output.adapter.core.exception, org.wso2.carbon.event.output.adapter.core.exception,

@ -20,6 +20,7 @@ package org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.mgt.common.push.notification.NotificationContext; import org.wso2.carbon.device.mgt.common.push.notification.NotificationContext;
import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy; import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig; import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
@ -32,6 +33,7 @@ import org.wso2.carbon.event.output.adapter.core.exception.OutputEventAdapterExc
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Properties;
public class MQTTNotificationStrategy implements NotificationStrategy { public class MQTTNotificationStrategy implements NotificationStrategy {
@ -75,7 +77,15 @@ public class MQTTNotificationStrategy implements NotificationStrategy {
@Override @Override
public void execute(NotificationContext ctx) throws PushNotificationExecutionFailedException { public void execute(NotificationContext ctx) throws PushNotificationExecutionFailedException {
Map<String, String> dynamicProperties = new HashMap<>(); Map<String, String> dynamicProperties = new HashMap<>();
dynamicProperties.put("topic", (String) ctx.getOperation().getProperties().get(MQTT_ADAPTER_TOPIC)); Properties properties = ctx.getOperation().getProperties();
if (properties != null && properties.get(MQTT_ADAPTER_TOPIC) != null) {
dynamicProperties.put("topic", (String) properties.get(MQTT_ADAPTER_TOPIC));
} else {
String topic = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain(true) + "/"
+ ctx.getDeviceId().getType() + "/" + ctx.getDeviceId().getId() + "/" + ctx.getOperation().getType();
dynamicProperties.put("topic", topic);
}
MQTTDataHolder.getInstance().getOutputEventAdapterService().publish(mqttAdapterName, dynamicProperties, MQTTDataHolder.getInstance().getOutputEventAdapterService().publish(mqttAdapterName, dynamicProperties,
ctx.getOperation().getPayLoad()); ctx.getOperation().getPayLoad());
} }

@ -48,27 +48,28 @@ if (!user) {
var deviceType = request.getParameter("deviceType"); // need a better solution here var deviceType = request.getParameter("deviceType"); // need a better solution here
deviceTypeConfig = utility.getDeviceTypeConfig(deviceType); deviceTypeConfig = utility.getDeviceTypeConfig(deviceType);
if (deviceTypeConfig && deviceTypeConfig.deviceType.downloadAgentUri) { if (deviceTypeConfig && deviceTypeConfig.deviceType.downloadAgentUri) {
hearders = [{"name": constants["ACCEPT_IDENTIFIER"], "value": constants["APPLICATION_ZIP"]}];
sketchDownloadEndPoint = devicemgtProps["httpsURL"] + "/" + deviceTypeConfig.deviceType.downloadAgentUri; sketchDownloadEndPoint = devicemgtProps["httpsURL"] + "/" + deviceTypeConfig.deviceType.downloadAgentUri;
serviceInvokers.HttpClient.get(sketchDownloadEndPoint + queryString, function (responsePayload, responseHeaders) { serviceInvokers.HttpClient.get(sketchDownloadEndPoint + queryString, function (responsePayload, responseHeaders) {
if (responseHeaders) { if (responseHeaders) {
for (var i = 0; i < responseHeaders.length; i++) { for (var i = 0; i < responseHeaders.length; i++) {
var header = responseHeaders[i] var header = responseHeaders[i];
var headerName = String(header.getName()); var headerName = String(header.getName());
var headerValue = String(header.getValue()); var headerValue = String(header.getValue());
response.addHeader(headerName, headerValue); response.addHeader(headerName, headerValue);
} }
var streamObject = new Stream(responsePayload); var streamObject = new Stream(responsePayload);
print(streamObject); print(streamObject);
} else { } else {
return responsePayload; return responsePayload;
} }
}, function (responsePayload) { }, function (responsePayload) {
log.error(responsePayload) log.error(responsePayload);
var response = {}; var response = {};
response["status"] = "error"; response["status"] = "error";
return response; return response;
} }
); , hearders);
} else { } else {
result = 400; result = 400;
} }
@ -143,14 +144,14 @@ if (!user) {
} }
serviceInvokers.XMLHttp.get( serviceInvokers.XMLHttp.get(
targetURL, function (responsePayload) { targetURL, function (responsePayload) {
response.status = 200; response.status = 200;
result = responsePayload; result = responsePayload;
}, },
function (responsePayload) { function (responsePayload) {
response.status = responsePayload.status; response.status = responsePayload.status;
result = responsePayload.responseText; result = responsePayload.responseText;
}); });
} else if (uriMatcher.match("/{context}/api/devices/")) { } else if (uriMatcher.match("/{context}/api/devices/")) {
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/list")) { if (userModule.isAuthorized("/permission/admin/device-mgt/devices/list")) {
result = deviceModule.listDevices(); result = deviceModule.listDevices();

@ -66,11 +66,15 @@ var invokers = function () {
* @param endpoint Backend REST API url. * @param endpoint Backend REST API url.
* @param responseCallback a function to be called with response retrieved. * @param responseCallback a function to be called with response retrieved.
* @param count a counter which hold the number of recursive execution * @param count a counter which hold the number of recursive execution
* @param headers a list of name value pairs for additional http headers
*/ */
privateMethods["execute"] = function (httpMethod, requestPayload, endpoint, responseCallback, count) { privateMethods["execute"] = function (httpMethod, requestPayload, endpoint, responseCallback, count, headers) {
var xmlHttpRequest = new XMLHttpRequest(); var xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.open(httpMethod, endpoint); xmlHttpRequest.open(httpMethod, endpoint);
for(var i in headers){
xmlHttpRequest.setRequestHeader(headers[i].name, headers[i].value);
}
xmlHttpRequest.setRequestHeader(constants["CONTENT_TYPE_IDENTIFIER"], constants["APPLICATION_JSON"]); xmlHttpRequest.setRequestHeader(constants["CONTENT_TYPE_IDENTIFIER"], constants["APPLICATION_JSON"]);
xmlHttpRequest.setRequestHeader(constants["ACCEPT_IDENTIFIER"], constants["APPLICATION_JSON"]); xmlHttpRequest.setRequestHeader(constants["ACCEPT_IDENTIFIER"], constants["APPLICATION_JSON"]);
@ -82,7 +86,7 @@ var invokers = function () {
}); });
} else { } else {
xmlHttpRequest.setRequestHeader(constants["AUTHORIZATION_HEADER"], xmlHttpRequest.setRequestHeader(constants["AUTHORIZATION_HEADER"],
constants["BEARER_PREFIX"] + accessToken); constants["BEARER_PREFIX"] + accessToken);
} }
} }
@ -98,9 +102,9 @@ var invokers = function () {
log.debug("Response payload if any : " + xmlHttpRequest.responseText); log.debug("Response payload if any : " + xmlHttpRequest.responseText);
if (xmlHttpRequest.status == 401 && (xmlHttpRequest.responseText == TOKEN_EXPIRED || if (xmlHttpRequest.status == 401 && (xmlHttpRequest.responseText == TOKEN_EXPIRED ||
xmlHttpRequest.responseText == TOKEN_INVALID ) && count < 5) { xmlHttpRequest.responseText == TOKEN_INVALID ) && count < 5) {
tokenUtil.refreshTokenPair(); tokenUtil.refreshTokenPair();
return privateMethods.execute(httpMethod, requestPayload, endpoint, responseCallback, ++count); return privateMethods.execute(httpMethod, requestPayload, endpoint, responseCallback, ++count, headers);
} else { } else {
return responseCallback(xmlHttpRequest); return responseCallback(xmlHttpRequest);
} }
@ -113,8 +117,8 @@ var invokers = function () {
* @param endpoint Backend REST API url. * @param endpoint Backend REST API url.
* @param responseCallback a function to be called with response retrieved. * @param responseCallback a function to be called with response retrieved.
*/ */
privateMethods["initiateXMLHTTPRequest"] = function (httpMethod, requestPayload, endpoint, responseCallback) { privateMethods["initiateXMLHTTPRequest"] = function (httpMethod, requestPayload, endpoint, responseCallback, headers) {
return privateMethods.execute(httpMethod, requestPayload, endpoint, responseCallback, 0); return privateMethods.execute(httpMethod, requestPayload, endpoint, responseCallback, 0, headers);
}; };
/** /**
@ -122,9 +126,9 @@ var invokers = function () {
* @param endpoint Backend REST API url. * @param endpoint Backend REST API url.
* @param responseCallback a function to be called with response retrieved. * @param responseCallback a function to be called with response retrieved.
*/ */
publicXMLHTTPInvokers["get"] = function (endpoint, responseCallback) { publicXMLHTTPInvokers["get"] = function (endpoint, responseCallback, headers) {
var requestPayload = null; var requestPayload = null;
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_GET"], requestPayload, endpoint, responseCallback); return privateMethods.initiateXMLHTTPRequest(constants["HTTP_GET"], requestPayload, endpoint, responseCallback, headers);
}; };
/** /**
@ -133,8 +137,8 @@ var invokers = function () {
* @param requestPayload payload/data if exists which is needed to be send. * @param requestPayload payload/data if exists which is needed to be send.
* @param responseCallback a function to be called with response retrieved. * @param responseCallback a function to be called with response retrieved.
*/ */
publicXMLHTTPInvokers["post"] = function (endpoint, requestPayload, responseCallback) { publicXMLHTTPInvokers["post"] = function (endpoint, requestPayload, responseCallback, headers) {
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_POST"], requestPayload, endpoint, responseCallback); return privateMethods.initiateXMLHTTPRequest(constants["HTTP_POST"], requestPayload, endpoint, responseCallback, headers);
}; };
/** /**
@ -143,8 +147,8 @@ var invokers = function () {
* @param requestPayload payload/data if exists which is needed to be send. * @param requestPayload payload/data if exists which is needed to be send.
* @param responseCallback a function to be called with response retrieved. * @param responseCallback a function to be called with response retrieved.
*/ */
publicXMLHTTPInvokers["put"] = function (endpoint, requestPayload, responseCallback) { publicXMLHTTPInvokers["put"] = function (endpoint, requestPayload, responseCallback, headers) {
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_PUT"], requestPayload, endpoint, responseCallback); return privateMethods.initiateXMLHTTPRequest(constants["HTTP_PUT"], requestPayload, endpoint, responseCallback, headers);
}; };
/** /**
@ -152,9 +156,9 @@ var invokers = function () {
* @param endpoint Backend REST API url. * @param endpoint Backend REST API url.
* @param responseCallback a function to be called with response retrieved. * @param responseCallback a function to be called with response retrieved.
*/ */
publicXMLHTTPInvokers["delete"] = function (endpoint, responseCallback) { publicXMLHTTPInvokers["delete"] = function (endpoint, responseCallback, headers) {
var requestPayload = null; var requestPayload = null;
return privateMethods.initiateXMLHTTPRequest(constants["HTTP_DELETE"], requestPayload, endpoint, responseCallback); return privateMethods.initiateXMLHTTPRequest(constants["HTTP_DELETE"], requestPayload, endpoint, responseCallback, headers);
}; };
/** /**
@ -239,8 +243,9 @@ var invokers = function () {
* @param payload payload/data which need to be send. * @param payload payload/data which need to be send.
* @param successCallback a function to be called if the respond if successful. * @param successCallback a function to be called if the respond if successful.
* @param errorCallback a function to be called if en error is reserved. * @param errorCallback a function to be called if en error is reserved.
* @param headers a list of name value pairs for additional http headers.
*/ */
privateMethods["initiateHTTPClientRequest"] = function (method, url, successCallback, errorCallback, payload) { privateMethods["initiateHTTPClientRequest"] = function (method, url, successCallback, errorCallback, payload, headers) {
//noinspection JSUnresolvedVariable //noinspection JSUnresolvedVariable
var HttpClient = Packages.org.apache.commons.httpclient.HttpClient; var HttpClient = Packages.org.apache.commons.httpclient.HttpClient;
var httpMethodObject; var httpMethodObject;
@ -269,8 +274,16 @@ var invokers = function () {
//noinspection JSUnresolvedFunction //noinspection JSUnresolvedFunction
throw new IllegalArgumentException("Invalid HTTP request method: " + method); throw new IllegalArgumentException("Invalid HTTP request method: " + method);
} }
//noinspection JSUnresolvedVariable //noinspection JSUnresolvedVariable
var Header = Packages.org.apache.commons.httpclient.Header; var Header = Packages.org.apache.commons.httpclient.Header;
for(var i in headers){
var header = new Header();
header.setName(headers[i].name);
header.setValue(headers[i].value);
httpMethodObject.addRequestHeader(header);
}
var header = new Header(); var header = new Header();
header.setName(constants["CONTENT_TYPE_IDENTIFIER"]); header.setName(constants["CONTENT_TYPE_IDENTIFIER"]);
header.setValue(constants["APPLICATION_JSON"]); header.setValue(constants["APPLICATION_JSON"]);
@ -295,9 +308,12 @@ var invokers = function () {
} }
} }
//noinspection JSUnresolvedFunction //noinspection JSUnresolvedFunction
var stringRequestEntity = new StringRequestEntity(stringify(payload)); if (payload != null) {
//noinspection JSUnresolvedFunction var StringRequestEntity = Packages.org.apache.commons.httpclient.methods.StringRequestEntity;
httpMethodObject.setRequestEntity(stringRequestEntity); var stringRequestEntity = new StringRequestEntity(stringify(payload));
//noinspection JSUnresolvedFunction
httpMethodObject.setRequestEntity(stringRequestEntity);
}
var client = new HttpClient(); var client = new HttpClient();
try { try {
//noinspection JSUnresolvedFunction //noinspection JSUnresolvedFunction
@ -305,17 +321,22 @@ var invokers = function () {
//noinspection JSUnresolvedFunction //noinspection JSUnresolvedFunction
var status = httpMethodObject.getStatusCode(); var status = httpMethodObject.getStatusCode();
if (status == 200) { if (status == 200) {
//noinspection JSUnresolvedFunction var responseContentDispositionHeader = httpMethodObject.getResponseHeader(constants["CONTENT_DISPOSITION_IDENTIFIER"]);
return successCallback(httpMethodObject.getResponseBody()); if (responseContentDispositionHeader) {
return successCallback(httpMethodObject.getResponseBodyAsStream(), httpMethodObject.getResponseHeaders());
} else {
return successCallback(httpMethodObject.getResponseBody());
}
} else { } else {
//noinspection JSUnresolvedFunction
return errorCallback(httpMethodObject.getResponseBody()); return errorCallback(httpMethodObject.getResponseBody());
} }
} catch (e) { } catch (e) {
return errorCallback(response); return errorCallback(response);
} finally { } finally {
//noinspection JSUnresolvedFunction //noinspection JSUnresolvedFunction
method.releaseConnection(); if (method != constants["HTTP_GET"]) {
method.releaseConnection();
}
} }
}; };
@ -324,11 +345,12 @@ var invokers = function () {
* @param url target url. * @param url target url.
* @param successCallback a function to be called if the respond if successful. * @param successCallback a function to be called if the respond if successful.
* @param errorCallback a function to be called if en error is reserved. * @param errorCallback a function to be called if en error is reserved.
* @param headers a list of name value pairs for additional http headers.
*/ */
publicHTTPClientInvokers["get"] = function (url, successCallback, errorCallback) { publicHTTPClientInvokers["get"] = function (url, successCallback, errorCallback, headers) {
var requestPayload = null; var requestPayload = null;
return privateMethods. return privateMethods.
initiateHTTPClientRequest(constants["HTTP_GET"], url, successCallback, errorCallback, requestPayload); initiateHTTPClientRequest(constants["HTTP_GET"], url, successCallback, errorCallback, requestPayload, headers);
}; };
/** /**
@ -337,10 +359,11 @@ var invokers = function () {
* @param payload payload/data which need to be send. * @param payload payload/data which need to be send.
* @param successCallback a function to be called if the respond if successful. * @param successCallback a function to be called if the respond if successful.
* @param errorCallback a function to be called if en error is reserved. * @param errorCallback a function to be called if en error is reserved.
* @param headers a list of name value pairs for additional http headers.
*/ */
publicHTTPClientInvokers["post"] = function (url, payload, successCallback, errorCallback) { publicHTTPClientInvokers["post"] = function (url, payload, successCallback, errorCallback, headers) {
return privateMethods. return privateMethods.
initiateHTTPClientRequest(constants["HTTP_POST"], url, successCallback, errorCallback, payload); initiateHTTPClientRequest(constants["HTTP_POST"], url, successCallback, errorCallback, payload, headers);
}; };
/** /**
@ -349,10 +372,11 @@ var invokers = function () {
* @param payload payload/data which need to be send. * @param payload payload/data which need to be send.
* @param successCallback a function to be called if the respond if successful. * @param successCallback a function to be called if the respond if successful.
* @param errorCallback a function to be called if en error is reserved. * @param errorCallback a function to be called if en error is reserved.
* @param headers a list of name value pairs for additional http headers.
*/ */
publicHTTPClientInvokers["put"] = function (url, payload, successCallback, errorCallback) { publicHTTPClientInvokers["put"] = function (url, payload, successCallback, errorCallback, headers) {
return privateMethods. return privateMethods.
initiateHTTPClientRequest(constants["HTTP_PUT"], url, successCallback, errorCallback, payload); initiateHTTPClientRequest(constants["HTTP_PUT"], url, successCallback, errorCallback, payload, headers);
}; };
/** /**
@ -360,11 +384,12 @@ var invokers = function () {
* @param url target url. * @param url target url.
* @param successCallback a function to be called if the respond if successful. * @param successCallback a function to be called if the respond if successful.
* @param errorCallback a function to be called if en error is reserved. * @param errorCallback a function to be called if en error is reserved.
* @param headers a list of name value pairs for additional http headers.
*/ */
publicHTTPClientInvokers["delete"] = function (url, successCallback, errorCallback) { publicHTTPClientInvokers["delete"] = function (url, successCallback, errorCallback, headers) {
var requestPayload = null; var requestPayload = null;
return privateMethods. return privateMethods.
initiateHTTPClientRequest(constants["HTTP_DELETE"], url, successCallback, errorCallback, requestPayload); initiateHTTPClientRequest(constants["HTTP_DELETE"], url, successCallback, errorCallback, requestPayload, headers);
}; };
var publicMethods = {}; var publicMethods = {};

@ -24,22 +24,22 @@ function onRequest(context) {
var groupName = request.getParameter("groupName"); var groupName = request.getParameter("groupName");
var groupOwner = request.getParameter("groupOwner"); var groupOwner = request.getParameter("groupOwner");
var page = {}; var viewModel = {};
var title = "Devices"; var title = "Devices";
if (groupName) { if (groupName) {
title = groupName + " " + title; title = groupName + " " + title;
page.groupName = groupName; viewModel.groupName = groupName;
} }
page.title = title; viewModel.title = title;
var currentUser = session.get(constants.USER_SESSION_KEY); var currentUser = session.get(constants.USER_SESSION_KEY);
if (currentUser) { if (currentUser) {
page.permissions = {}; viewModel.permissions = {};
var uiPermissions = userModule.getUIPermissions(); var uiPermissions = userModule.getUIPermissions();
page.permissions.list = stringify(uiPermissions); viewModel.permissions.list = stringify(uiPermissions);
if (uiPermissions.ADD_DEVICE) { if (uiPermissions.ADD_DEVICE) {
page.permissions.enroll = true; viewModel.permissions.enroll = true;
} }
page.currentUser = currentUser; viewModel.currentUser = currentUser;
var deviceCount = 0; var deviceCount = 0;
if (groupName && groupOwner) { if (groupName && groupOwner) {
var groupModule = require("/app/modules/business-controllers/group.js")["groupModule"]; var groupModule = require("/app/modules/business-controllers/group.js")["groupModule"];
@ -48,30 +48,30 @@ function onRequest(context) {
deviceCount = deviceModule.getDevicesCount(); deviceCount = deviceModule.getDevicesCount();
} }
if (deviceCount > 0) { if (deviceCount > 0) {
page.deviceCount = deviceCount; viewModel.deviceCount = deviceCount;
var utility = require("/app/modules/utility.js").utility; var utility = require("/app/modules/utility.js").utility;
var typesListResponse = deviceModule.getDeviceTypes(); var typesListResponse = deviceModule.getDeviceTypes();
var deviceTypes = []; var deviceTypes = [];
if (typesListResponse["status"] == "success") { if (typesListResponse["status"] == "success") {
var data = typesListResponse["content"]; var data = typesListResponse.content.deviceTypes;
if (data) { if (data) {
for (var i = 0; i < data.length; i++) { for (var i = 0; i < data.length; i++) {
var config = utility.getDeviceTypeConfig(data[i].name); var config = utility.getDeviceTypeConfig(data[i]);
if (!config) { if (!config) {
continue; continue;
} }
var deviceType = config.deviceType; var deviceType = config.deviceType;
deviceTypes.push({ deviceTypes.push({
"type": data[i].name, "type": data[i],
"category": deviceType.category, "category": deviceType.category,
"label": deviceType.label, "label": deviceType.label,
"thumb": utility.getDeviceThumb(data[i].name) "thumb": utility.getDeviceThumb(data[i])
}); });
} }
} }
} }
page.deviceTypes = stringify(deviceTypes); viewModel.deviceTypes = stringify(deviceTypes);
} }
} }
return page; return viewModel;
} }

Loading…
Cancel
Save