mirror of
https://repository.entgra.net/community/device-mgt-plugins.git
synced 2025-09-16 23:42:15 +00:00
Merge pull request #677 from ayyoob/new-master
fixed issues related to multi tenancy and feature definition for reference device types & added global configuration for mqtt adapter
This commit is contained in:
commit
057f6dffa8
@ -18,7 +18,7 @@
|
|||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div id="general-config-heading" class="panel-heading" role="tab">
|
<div id="general-config-heading" class="panel-heading" role="tab">
|
||||||
<h2 class="sub-title panel-title">
|
<h2 class="sub-title panel-title">
|
||||||
Android Sense Endpoint Configuration
|
Android Sense Configuration
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
<div id="android_sense-config-body" class="panel-collapse panel-body"
|
<div id="android_sense-config-body" class="panel-collapse panel-body"
|
||||||
@ -27,22 +27,32 @@
|
|||||||
class="alert alert-danger hidden" role="alert">
|
class="alert alert-danger hidden" role="alert">
|
||||||
<i class="icon fw fw-error"></i><span></span>
|
<i class="icon fw fw-error"></i><span></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="wr-input-control">
|
|
||||||
<label class="wr-input-label" for="email-config-host">
|
|
||||||
Mqtt Endpoint
|
|
||||||
<span class="helper" title="SMTP Server Host">
|
|
||||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
|
||||||
</span>
|
|
||||||
<br>
|
|
||||||
</label>
|
|
||||||
<input id="mqtt-endpoint" type="text" class="form-control"
|
|
||||||
placeholder="[ Required Field ]">
|
|
||||||
<br>
|
|
||||||
</div>
|
|
||||||
<div class="wr-input-control wr-btn-grp">
|
<div class="wr-input-control wr-btn-grp">
|
||||||
<button id="save-general-btn" class="wr-btn" onclick="addConfiguration();">
|
<button id="save-general-btn" class="wr-btn" onclick="artifactUpload();">
|
||||||
Save
|
Deploy Analytics Artifacts
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="androidsense-statistic-response-template" style="display: none">
|
||||||
|
<div class="content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-5 col-md-6 col-centered">
|
||||||
|
<h3>
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-circle-outline fw-stack-2x"></i>
|
||||||
|
<i id="status-icon" class="fw fw-error fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
<br>
|
||||||
|
</h3>
|
||||||
|
<h4>
|
||||||
|
<span id="title"></span>
|
||||||
|
<br>
|
||||||
|
</h4>
|
||||||
|
<span id="description"></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -95,3 +95,30 @@ var addConfiguration = function () {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var artifactUpload = function () {
|
||||||
|
var contentType = "application/json";
|
||||||
|
var backendEndBasePath = "/api/device-mgt/v1.0";
|
||||||
|
var urix = backendEndBasePath + "/admin/devicetype/deploy/android_sense";
|
||||||
|
var defaultStatusClasses = "fw fw-stack-1x";
|
||||||
|
var content = $("#androidsense-statistic-response-template").find(".content");
|
||||||
|
var title = content.find("#title");
|
||||||
|
var statusIcon = content.find("#status-icon");
|
||||||
|
var data = {}
|
||||||
|
invokerUtil.post(urix, data, function (data) {
|
||||||
|
title.html("Deploying statistic artifacts. Please wait...");
|
||||||
|
statusIcon.attr("class", defaultStatusClasses + " fw-check");
|
||||||
|
$(modalPopupContent).html(content.html());
|
||||||
|
showPopup();
|
||||||
|
setTimeout(function () {
|
||||||
|
hidePopup();
|
||||||
|
location.reload(true);
|
||||||
|
}, 5000);
|
||||||
|
|
||||||
|
}, function (jqXHR) {
|
||||||
|
title.html("Failed to deploy artifacts, Please contact administrator.");
|
||||||
|
statusIcon.attr("class", defaultStatusClasses + " fw-error");
|
||||||
|
$(modalPopupContent).html(content.html());
|
||||||
|
showPopup();
|
||||||
|
}, contentType);
|
||||||
|
};
|
||||||
@ -73,30 +73,3 @@ function attachEvents() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function artifactUpload() {
|
|
||||||
var contentType = "application/json";
|
|
||||||
|
|
||||||
var urix = backendEndBasePath + "/admin/devicetype/deploy/android_sense";
|
|
||||||
var defaultStatusClasses = "fw fw-stack-1x";
|
|
||||||
var content = $("#androidsense-statistic-response-template").find(".content");
|
|
||||||
var title = content.find("#title");
|
|
||||||
var statusIcon = content.find("#status-icon");
|
|
||||||
var data = {}
|
|
||||||
invokerUtil.post(urix, data, function (data) {
|
|
||||||
title.html("Deploying statistic artifacts. Please wait...");
|
|
||||||
statusIcon.attr("class", defaultStatusClasses + " fw-check");
|
|
||||||
$(modalPopupContent).html(content.html());
|
|
||||||
showPopup();
|
|
||||||
setTimeout(function () {
|
|
||||||
hidePopup();
|
|
||||||
location.reload(true);
|
|
||||||
}, 5000);
|
|
||||||
|
|
||||||
}, function (jqXHR) {
|
|
||||||
title.html("Failed to deploy artifacts, Please contact administrator.");
|
|
||||||
statusIcon.attr("class", defaultStatusClasses + " fw-error");
|
|
||||||
$(modalPopupContent).html(content.html());
|
|
||||||
showPopup();
|
|
||||||
}, contentType);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
@ -41,9 +41,6 @@
|
|||||||
<a href="#" class="download-link btn-operations"><i class="fw fw-mobile fw-inverse fw-lg add-margin-1x"></i> Enroll Device</a>
|
<a href="#" class="download-link btn-operations"><i class="fw fw-mobile fw-inverse fw-lg add-margin-1x"></i> Enroll Device</a>
|
||||||
<a href="{{hostName}}{{@unit.publicUri}}/asset/androidsense.apk" class="btn-operations"><i class="fw fw-download fw-inverse fw-lg add-margin-1x"></i> Download APK</a>
|
<a href="{{hostName}}{{@unit.publicUri}}/asset/androidsense.apk" class="btn-operations"><i class="fw fw-download fw-inverse fw-lg add-margin-1x"></i> Download APK</a>
|
||||||
<a href="javascript:toggleEmailInvite()" class="btn-operations"><i class="fw fw-mail fw-inverse fw-lg add-margin-1x"></i> Invite by Email</a>
|
<a href="javascript:toggleEmailInvite()" class="btn-operations"><i class="fw fw-mail fw-inverse fw-lg add-margin-1x"></i> Invite by Email</a>
|
||||||
{{#if permissions.IS_ADMIN}}
|
|
||||||
<a href="javascript:artifactUpload()" class="btn-operations"><i class="fw fw-upload fw-inverse fw-lg add-margin-1x"></i> Deploy Analytics Artifacts</a>
|
|
||||||
{{/if}}
|
|
||||||
<p class="doc-link">Click <a href="https://docs.wso2.com/display/IoTS300/Android+Sense"
|
<p class="doc-link">Click <a href="https://docs.wso2.com/display/IoTS300/Android+Sense"
|
||||||
target="_blank">[ here ]</a> for latest instructions and
|
target="_blank">[ here ]</a> for latest instructions and
|
||||||
troubleshooting.</p>
|
troubleshooting.</p>
|
||||||
|
|||||||
@ -20,7 +20,10 @@
|
|||||||
<param-name>doAuthentication</param-name>
|
<param-name>doAuthentication</param-name>
|
||||||
<param-value>true</param-value>
|
<param-value>true</param-value>
|
||||||
</context-param>
|
</context-param>
|
||||||
|
<context-param>
|
||||||
|
<param-name>isSharedWithAllTenants</param-name>
|
||||||
|
<param-value>true</param-value>
|
||||||
|
</context-param>
|
||||||
<!--publish to apim-->
|
<!--publish to apim-->
|
||||||
<context-param>
|
<context-param>
|
||||||
<param-name>managed-api-enabled</param-name>
|
<param-name>managed-api-enabled</param-name>
|
||||||
|
|||||||
@ -27,36 +27,35 @@
|
|||||||
class="alert alert-danger hidden" role="alert">
|
class="alert alert-danger hidden" role="alert">
|
||||||
<i class="icon fw fw-error"></i><span></span>
|
<i class="icon fw fw-error"></i><span></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="wr-input-control">
|
|
||||||
<label class="wr-input-label" for="email-config-host">
|
|
||||||
Http Server IP
|
|
||||||
<span class="helper" title="SMTP Server Host">
|
|
||||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
|
||||||
</span>
|
|
||||||
<br>
|
|
||||||
</label>
|
|
||||||
<input id="http-endpoint" type="text" class="form-control"
|
|
||||||
placeholder="[ Required Field ]">
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<label class="wr-input-label" for="email-config-host">
|
|
||||||
Http Server Port
|
|
||||||
<span class="helper" title="SMTP Server Host">
|
|
||||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
|
||||||
</span>
|
|
||||||
<br>
|
|
||||||
</label>
|
|
||||||
<input id="https-endpoint" type="text" class="form-control"
|
|
||||||
placeholder="[ Required Field ]">
|
|
||||||
<br>
|
|
||||||
</div>
|
|
||||||
<div class="wr-input-control wr-btn-grp">
|
<div class="wr-input-control wr-btn-grp">
|
||||||
<button id="save-general-btn" class="wr-btn" onclick="addConfiguration();">
|
<button id="save-general-btn" class="wr-btn" onclick="artifactUpload();">
|
||||||
Save
|
Deploy Analytics Artifacts
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="arduino-statistic-response-template" style="display: none">
|
||||||
|
<div class="content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-5 col-md-6 col-centered">
|
||||||
|
<h3>
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-circle-outline fw-stack-2x"></i>
|
||||||
|
<i id="status-icon" class="fw fw-error fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
<br>
|
||||||
|
</h3>
|
||||||
|
<h4>
|
||||||
|
<span id="title"></span>
|
||||||
|
<br>
|
||||||
|
</h4>
|
||||||
|
<span id="description"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
{{js "js/platform-configuration.js"}}
|
{{js "js/platform-configuration.js"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|||||||
@ -103,3 +103,30 @@ var addConfiguration = function () {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var artifactUpload = function () {
|
||||||
|
var contentType = "application/json";
|
||||||
|
var backendEndBasePath = "/api/device-mgt/v1.0";
|
||||||
|
var urix = backendEndBasePath + "/admin/devicetype/deploy/arduino";
|
||||||
|
var defaultStatusClasses = "fw fw-stack-1x";
|
||||||
|
var content = $("#arduino-statistic-response-template").find(".content");
|
||||||
|
var title = content.find("#title");
|
||||||
|
var statusIcon = content.find("#status-icon");
|
||||||
|
var data = {}
|
||||||
|
invokerUtil.post(urix, data, function (data) {
|
||||||
|
title.html("Deploying statistic artifacts. Please wait...");
|
||||||
|
statusIcon.attr("class", defaultStatusClasses + " fw-check");
|
||||||
|
$(modalPopupContent).html(content.html());
|
||||||
|
showPopup();
|
||||||
|
setTimeout(function () {
|
||||||
|
hidePopup();
|
||||||
|
location.reload(true);
|
||||||
|
}, 5000);
|
||||||
|
|
||||||
|
}, function (jqXHR) {
|
||||||
|
title.html("Failed to deploy artifacts, Please contact administrator.");
|
||||||
|
statusIcon.attr("class", defaultStatusClasses + " fw-error");
|
||||||
|
$(modalPopupContent).html(content.html());
|
||||||
|
showPopup();
|
||||||
|
}, contentType);
|
||||||
|
};
|
||||||
@ -31,12 +31,23 @@ function onRequest(context) {
|
|||||||
if (encodedClientKeys) {
|
if (encodedClientKeys) {
|
||||||
var tokenUtil = require("/app/modules/oauth/token-handler-utils.js")["utils"];
|
var tokenUtil = require("/app/modules/oauth/token-handler-utils.js")["utils"];
|
||||||
var resp = tokenUtil.decode(encodedClientKeys).split(":");
|
var resp = tokenUtil.decode(encodedClientKeys).split(":");
|
||||||
var tokenPair = jwtClient.getAccessToken(resp[0], resp[1], context.user.username, "default", {});
|
|
||||||
if (tokenPair) {
|
if (user.domain == "carbon.super") {
|
||||||
token = tokenPair.accessToken;
|
var tokenPair = jwtClient.getAccessToken(resp[0], resp[1], context.user.username , "default", {});
|
||||||
}
|
if (tokenPair) {
|
||||||
websocketEndpoint = websocketEndpoint + "/secured-websocket/org.wso2.iot.devices.temperature/1.0.0?"
|
token = tokenPair.accessToken;
|
||||||
+ "deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type + "&websocketToken=" + token;
|
}
|
||||||
|
websocketEndpoint = websocketEndpoint + "/secured-websocket/org.wso2.iot.devices.temperature/1.0.0?"
|
||||||
|
+ "deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type + "&websocketToken=" + token;
|
||||||
|
} else {
|
||||||
|
var tokenPair = jwtClient.getAccessToken(resp[0], resp[1], context.user.username + "@" + user.domain
|
||||||
|
, "default", {});
|
||||||
|
if (tokenPair) {
|
||||||
|
token = tokenPair.accessToken;
|
||||||
|
}
|
||||||
|
websocketEndpoint = websocketEndpoint + "/secured-websocket/t/" + user.domain + "/org.wso2.iot.devices.temperature/1.0.0?"
|
||||||
|
+ "deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type + "&websocketToken=" + token;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return {"device": device, "websocketEndpoint": websocketEndpoint};
|
return {"device": device, "websocketEndpoint": websocketEndpoint};
|
||||||
}
|
}
|
||||||
@ -184,30 +184,3 @@ function doAction(data) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function artifactUpload() {
|
|
||||||
var contentType = "application/json";
|
|
||||||
|
|
||||||
var urix = backendEndBasePath + "/admin/devicetype/deploy/arduino";
|
|
||||||
var defaultStatusClasses = "fw fw-stack-1x";
|
|
||||||
var content = $("#arduino-statistic-response-template").find(".content");
|
|
||||||
var title = content.find("#title");
|
|
||||||
var statusIcon = content.find("#status-icon");
|
|
||||||
var data = {}
|
|
||||||
invokerUtil.post(urix, data, function (data) {
|
|
||||||
title.html("Deploying statistic artifacts. Please wait...");
|
|
||||||
statusIcon.attr("class", defaultStatusClasses + " fw-check");
|
|
||||||
$(modalPopupContent).html(content.html());
|
|
||||||
showPopup();
|
|
||||||
setTimeout(function () {
|
|
||||||
hidePopup();
|
|
||||||
location.reload(true);
|
|
||||||
}, 5000);
|
|
||||||
|
|
||||||
}, function (jqXHR) {
|
|
||||||
title.html("Failed to deploy artifacts, Please contact administrator.");
|
|
||||||
statusIcon.attr("class", defaultStatusClasses + " fw-error");
|
|
||||||
$(modalPopupContent).html(content.html());
|
|
||||||
showPopup();
|
|
||||||
}, contentType);
|
|
||||||
}
|
|
||||||
@ -66,11 +66,6 @@
|
|||||||
<a href="#" class="download-link btn-operations">
|
<a href="#" class="download-link btn-operations">
|
||||||
<i class="fw fw-download add-margin-1x"></i>Download Sketch
|
<i class="fw fw-download add-margin-1x"></i>Download Sketch
|
||||||
</a>
|
</a>
|
||||||
{{#if permissions.IS_ADMIN}}
|
|
||||||
<a href="javascript:artifactUpload()" class="btn-operations"><i
|
|
||||||
class="fw fw-upload fw-inverse fw-lg add-margin-1x"></i> Deploy Analytics Artifacts</a>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
<p class="doc-link">Click <a href="https://docs.wso2.com/display/IoTS300/Arduino"
|
<p class="doc-link">Click <a href="https://docs.wso2.com/display/IoTS300/Arduino"
|
||||||
target="_blank">here</a> for latest instructions and
|
target="_blank">here</a> for latest instructions and
|
||||||
troubleshooting.</p>
|
troubleshooting.</p>
|
||||||
|
|||||||
@ -19,8 +19,6 @@
|
|||||||
|
|
||||||
<artifacts>
|
<artifacts>
|
||||||
<artifact name="raspberrypi" version="1.0.0" type="carbon/application">
|
<artifact name="raspberrypi" version="1.0.0" type="carbon/application">
|
||||||
<dependency artifact="raspberrypi_stream" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
|
|
||||||
<dependency artifact="raspberrypi_receiver" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
|
|
||||||
<dependency artifact="raspberrypi_execution" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
|
<dependency artifact="raspberrypi_execution" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
|
||||||
</artifact>
|
</artifact>
|
||||||
</artifacts>
|
</artifacts>
|
||||||
|
|||||||
@ -1,22 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
~ 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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<artifact name="raspberrypi_receiver" version="1.0.0" type="event/receiver" serverRole="DataAnalyticsServer">
|
|
||||||
<file>raspberrypi_receiver.xml</file>
|
|
||||||
</artifact>
|
|
||||||
@ -27,43 +27,32 @@
|
|||||||
class="alert alert-danger hidden" role="alert">
|
class="alert alert-danger hidden" role="alert">
|
||||||
<i class="icon fw fw-error"></i><span></span>
|
<i class="icon fw fw-error"></i><span></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="wr-input-control">
|
|
||||||
<label class="wr-input-label" for="email-config-host">
|
|
||||||
Http Endpoint
|
|
||||||
<span class="helper" title="SMTP Server Host">
|
|
||||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
|
||||||
</span>
|
|
||||||
<br>
|
|
||||||
</label>
|
|
||||||
<input id="http-endpoint" type="text" class="form-control"
|
|
||||||
placeholder="[ Required Field ]">
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<label class="wr-input-label" for="email-config-host">
|
|
||||||
Https Endpoint
|
|
||||||
<span class="helper" title="SMTP Server Host">
|
|
||||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
|
||||||
</span>
|
|
||||||
<br>
|
|
||||||
</label>
|
|
||||||
<input id="https-endpoint" type="text" class="form-control"
|
|
||||||
placeholder="[ Required Field ]">
|
|
||||||
<br>
|
|
||||||
<label class="wr-input-label" for="email-config-host">
|
|
||||||
Mqtt Endpoint
|
|
||||||
<span class="helper" title="SMTP Server Host">
|
|
||||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
|
||||||
</span>
|
|
||||||
<br>
|
|
||||||
</label>
|
|
||||||
<input id="mqtt-endpoint" type="text" class="form-control"
|
|
||||||
placeholder="[ Required Field ]">
|
|
||||||
<br>
|
|
||||||
</div>
|
|
||||||
<div class="wr-input-control wr-btn-grp">
|
<div class="wr-input-control wr-btn-grp">
|
||||||
<button id="save-general-btn" class="wr-btn" onclick="addConfiguration();">
|
<button id="save-general-btn" class="wr-btn" onclick="artifactUpload();">
|
||||||
Save
|
Deploy Analytics Artifacts
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="raspberrypi-statistic-response-template" style="display: none">
|
||||||
|
<div class="content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-5 col-md-6 col-centered">
|
||||||
|
<h3>
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-circle-outline fw-stack-2x"></i>
|
||||||
|
<i id="status-icon" class="fw fw-error fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
<br>
|
||||||
|
</h3>
|
||||||
|
<h4>
|
||||||
|
<span id="title"></span>
|
||||||
|
<br>
|
||||||
|
</h4>
|
||||||
|
<span id="description"></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -16,7 +16,7 @@
|
|||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function onRequest(context) {
|
function onRequest(context){
|
||||||
var viewModel = {};
|
var viewModel = {};
|
||||||
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
|
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
|
||||||
viewModel["permissions"] = userModule.getUIPermissions();
|
viewModel["permissions"] = userModule.getUIPermissions();
|
||||||
@ -113,3 +113,30 @@ var addConfiguration = function () {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var artifactUpload = function () {
|
||||||
|
var contentType = "application/json";
|
||||||
|
var backendEndBasePath = "/api/device-mgt/v1.0";
|
||||||
|
var urix = backendEndBasePath + "/admin/devicetype/deploy/raspberrypi";
|
||||||
|
var defaultStatusClasses = "fw fw-stack-1x";
|
||||||
|
var content = $("#raspberrypi-statistic-response-template").find(".content");
|
||||||
|
var title = content.find("#title");
|
||||||
|
var statusIcon = content.find("#status-icon");
|
||||||
|
var data = {}
|
||||||
|
invokerUtil.post(urix, data, function (data) {
|
||||||
|
title.html("Deploying statistic artifacts. Please wait...");
|
||||||
|
statusIcon.attr("class", defaultStatusClasses + " fw-check");
|
||||||
|
$(modalPopupContent).html(content.html());
|
||||||
|
showPopup();
|
||||||
|
setTimeout(function () {
|
||||||
|
hidePopup();
|
||||||
|
location.reload(true);
|
||||||
|
}, 5000);
|
||||||
|
|
||||||
|
}, function (jqXHR) {
|
||||||
|
title.html("Failed to deploy artifacts, Please contact administrator.");
|
||||||
|
statusIcon.attr("class", defaultStatusClasses + " fw-error");
|
||||||
|
$(modalPopupContent).html(content.html());
|
||||||
|
showPopup();
|
||||||
|
}, contentType);
|
||||||
|
};
|
||||||
|
|||||||
@ -28,15 +28,32 @@ function onRequest(context) {
|
|||||||
var jwtClient = jwtService.getJWTClient();
|
var jwtClient = jwtService.getJWTClient();
|
||||||
var encodedClientKeys = session.get(constants["ENCODED_TENANT_BASED_WEB_SOCKET_CLIENT_CREDENTIALS"]);
|
var encodedClientKeys = session.get(constants["ENCODED_TENANT_BASED_WEB_SOCKET_CLIENT_CREDENTIALS"]);
|
||||||
var token = "";
|
var token = "";
|
||||||
|
var user = session.get(constants.USER_SESSION_KEY);
|
||||||
|
if (!user) {
|
||||||
|
log.error("User object was not found in the session");
|
||||||
|
throw constants.ERRORS.USER_NOT_FOUND;
|
||||||
|
}
|
||||||
if (encodedClientKeys) {
|
if (encodedClientKeys) {
|
||||||
var tokenUtil = require("/app/modules/oauth/token-handler-utils.js")["utils"];
|
var tokenUtil = require("/app/modules/oauth/token-handler-utils.js")["utils"];
|
||||||
var resp = tokenUtil.decode(encodedClientKeys).split(":");
|
var resp = tokenUtil.decode(encodedClientKeys).split(":");
|
||||||
var tokenPair = jwtClient.getAccessToken(resp[0], resp[1], context.user.username,"default", {});
|
|
||||||
if (tokenPair) {
|
if (user.domain == "carbon.super") {
|
||||||
token = tokenPair.accessToken;
|
var tokenPair = jwtClient.getAccessToken(resp[0], resp[1], context.user.username , "default", {});
|
||||||
}
|
if (tokenPair) {
|
||||||
websocketEndpoint = websocketEndpoint + "/secured-websocket/org.wso2.iot.devices.temperature/1.0.0?"
|
token = tokenPair.accessToken;
|
||||||
+ "deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type + "&websocketToken=" + token;
|
}
|
||||||
|
websocketEndpoint = websocketEndpoint + "/secured-websocket/org.wso2.iot.devices.temperature/1.0.0?"
|
||||||
|
+ "deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type + "&websocketToken=" + token;
|
||||||
|
} else {
|
||||||
|
var tokenPair = jwtClient.getAccessToken(resp[0], resp[1], context.user.username + "@" + user.domain
|
||||||
|
, "default", {});
|
||||||
|
if (tokenPair) {
|
||||||
|
token = tokenPair.accessToken;
|
||||||
|
}
|
||||||
|
websocketEndpoint = websocketEndpoint + "/secured-websocket/t/" + user.domain + "/org.wso2.iot.devices.temperature/1.0.0?"
|
||||||
|
+ "deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type + "&websocketToken=" + token;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return {"device": device, "websocketEndpoint": websocketEndpoint};
|
return {"device": device, "websocketEndpoint": websocketEndpoint};
|
||||||
}
|
}
|
||||||
@ -182,31 +182,4 @@ function doAction(data) {
|
|||||||
hidePopup();
|
hidePopup();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
function artifactUpload() {
|
|
||||||
var contentType = "application/json";
|
|
||||||
|
|
||||||
var urix = backendEndBasePath + "/admin/devicetype/deploy/raspberrypi";
|
|
||||||
var defaultStatusClasses = "fw fw-stack-1x";
|
|
||||||
var content = $("#raspberrypi-statistic-response-template").find(".content");
|
|
||||||
var title = content.find("#title");
|
|
||||||
var statusIcon = content.find("#status-icon");
|
|
||||||
var data = {}
|
|
||||||
invokerUtil.post(urix, data, function (data) {
|
|
||||||
title.html("Deploying statistic artifacts. Please wait...");
|
|
||||||
statusIcon.attr("class", defaultStatusClasses + " fw-check");
|
|
||||||
$(modalPopupContent).html(content.html());
|
|
||||||
showPopup();
|
|
||||||
setTimeout(function () {
|
|
||||||
hidePopup();
|
|
||||||
location.reload(true);
|
|
||||||
}, 5000);
|
|
||||||
|
|
||||||
}, function (jqXHR) {
|
|
||||||
title.html("Failed to deploy artifacts, Please contact administrator.");
|
|
||||||
statusIcon.attr("class", defaultStatusClasses + " fw-error");
|
|
||||||
$(modalPopupContent).html(content.html());
|
|
||||||
showPopup();
|
|
||||||
}, contentType);
|
|
||||||
}
|
}
|
||||||
@ -61,9 +61,6 @@
|
|||||||
<a href="#" class="download-link btn-operations">
|
<a href="#" class="download-link btn-operations">
|
||||||
<i class="fw fw-download add-margin-1x"></i>Download Agent
|
<i class="fw fw-download add-margin-1x"></i>Download Agent
|
||||||
</a>
|
</a>
|
||||||
{{#if permissions.IS_ADMIN}}
|
|
||||||
<a href="javascript:artifactUpload()" class="btn-operations"><i class="fw fw-upload fw-inverse fw-lg add-margin-1x"></i> Deploy Analytics Artifacts</a>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
<p class="doc-link">Click <a href="https://docs.wso2.com/display/IoTS300/Raspberry+Pi"
|
<p class="doc-link">Click <a href="https://docs.wso2.com/display/IoTS300/Raspberry+Pi"
|
||||||
target="_blank">here</a> for latest instructions and
|
target="_blank">here</a> for latest instructions and
|
||||||
|
|||||||
@ -19,8 +19,6 @@
|
|||||||
|
|
||||||
<artifacts>
|
<artifacts>
|
||||||
<artifact name="virtualfirealarm" version="1.0.0" type="carbon/application">
|
<artifact name="virtualfirealarm" version="1.0.0" type="carbon/application">
|
||||||
<dependency artifact="virtualfirealarm_stream" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
|
|
||||||
<dependency artifact="virtualfirealarm_receiver" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
|
|
||||||
<dependency artifact="virtualfirealarm_execution" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
|
<dependency artifact="virtualfirealarm_execution" version="1.0.0" include="true" serverRole="DataAnalyticsServer"/>
|
||||||
</artifact>
|
</artifact>
|
||||||
</artifacts>
|
</artifacts>
|
||||||
|
|||||||
@ -1,22 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
~ 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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<artifact name="virtualfirealarm_receiver" version="1.0.0" type="event/receiver" serverRole="DataAnalyticsServer">
|
|
||||||
<file>virtualfirealarm_receiver.xml</file>
|
|
||||||
</artifact>
|
|
||||||
@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
~ 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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<artifact name= "virtualfirealarm_stream" version="1.0.0" type="event/stream" serverRole="DataAnalyticsServer">
|
|
||||||
<file>org.wso2.iot.virtualfirealarm_1.0.0.json</file>
|
|
||||||
</artifact>
|
|
||||||
|
|
||||||
@ -20,6 +20,10 @@
|
|||||||
<param-name>doAuthentication</param-name>
|
<param-name>doAuthentication</param-name>
|
||||||
<param-value>true</param-value>
|
<param-value>true</param-value>
|
||||||
</context-param>
|
</context-param>
|
||||||
|
<context-param>
|
||||||
|
<param-name>isSharedWithAllTenants</param-name>
|
||||||
|
<param-value>true</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
<!--publish to apim-->
|
<!--publish to apim-->
|
||||||
<context-param>
|
<context-param>
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div id="general-config-heading" class="panel-heading" role="tab">
|
<div id="general-config-heading" class="panel-heading" role="tab">
|
||||||
<h2 class="sub-title panel-title">
|
<h2 class="sub-title panel-title">
|
||||||
Virtual Firealarm Endpoint Configuration
|
Virtual Firealarm Configuration
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
<div id="virtual-alarm-config-body" class="panel-collapse panel-body"
|
<div id="virtual-alarm-config-body" class="panel-collapse panel-body"
|
||||||
@ -28,43 +28,32 @@
|
|||||||
class="alert alert-danger hidden" role="alert">
|
class="alert alert-danger hidden" role="alert">
|
||||||
<i class="icon fw fw-error"></i><span></span>
|
<i class="icon fw fw-error"></i><span></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="wr-input-control">
|
|
||||||
<label class="wr-input-label" for="email-config-host">
|
|
||||||
Http Endpoint
|
|
||||||
<span class="helper" title="SMTP Server Host">
|
|
||||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
|
||||||
</span>
|
|
||||||
<br>
|
|
||||||
</label>
|
|
||||||
<input id="http-endpoint" type="text" class="form-control"
|
|
||||||
placeholder="[ Required Field ]">
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<label class="wr-input-label" for="email-config-host">
|
|
||||||
Https Endpoint
|
|
||||||
<span class="helper" title="SMTP Server Host">
|
|
||||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
|
||||||
</span>
|
|
||||||
<br>
|
|
||||||
</label>
|
|
||||||
<input id="https-endpoint" type="text" class="form-control"
|
|
||||||
placeholder="[ Required Field ]">
|
|
||||||
<br>
|
|
||||||
<label class="wr-input-label" for="email-config-host">
|
|
||||||
Mqtt Endpoint
|
|
||||||
<span class="helper" title="SMTP Server Host">
|
|
||||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
|
||||||
</span>
|
|
||||||
<br>
|
|
||||||
</label>
|
|
||||||
<input id="mqtt-endpoint" type="text" class="form-control"
|
|
||||||
placeholder="[ Required Field ]">
|
|
||||||
<br>
|
|
||||||
</div>
|
|
||||||
<div class="wr-input-control wr-btn-grp">
|
<div class="wr-input-control wr-btn-grp">
|
||||||
<button id="save-general-btn-virtualfirealarm" class="wr-btn" onclick="addConfiguration();">
|
<button id="save-general-btn" class="wr-btn" onclick="artifactUpload();">
|
||||||
Save
|
Deploy Analytics Artifacts
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="virtual-firealarm-statistic-response-template" style="display: none">
|
||||||
|
<div class="content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-5 col-md-6 col-centered">
|
||||||
|
<h3>
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-circle-outline fw-stack-2x"></i>
|
||||||
|
<i id="status-icon" class="fw fw-error fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
<br>
|
||||||
|
</h3>
|
||||||
|
<h4>
|
||||||
|
<span id="title"></span>
|
||||||
|
<br>
|
||||||
|
</h4>
|
||||||
|
<span id="description"></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function onRequest(context){
|
||||||
|
var viewModel = {};
|
||||||
|
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
|
||||||
|
viewModel["permissions"] = userModule.getUIPermissions();
|
||||||
|
return viewModel;
|
||||||
|
}
|
||||||
@ -103,3 +103,30 @@ var addConfiguration = function () {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var artifactUpload = function () {
|
||||||
|
var contentType = "application/json";
|
||||||
|
var backendEndBasePath = "/api/device-mgt/v1.0";
|
||||||
|
var urix = backendEndBasePath + "/admin/devicetype/deploy/virtual_firealarm";
|
||||||
|
var defaultStatusClasses = "fw fw-stack-1x";
|
||||||
|
var content = $("#virtual-firealarm-statistic-response-template").find(".content");
|
||||||
|
var title = content.find("#title");
|
||||||
|
var statusIcon = content.find("#status-icon");
|
||||||
|
var data = {}
|
||||||
|
invokerUtil.post(urix, data, function (data) {
|
||||||
|
title.html("Deploying statistic artifacts. Please wait...");
|
||||||
|
statusIcon.attr("class", defaultStatusClasses + " fw-check");
|
||||||
|
$(modalPopupContent).html(content.html());
|
||||||
|
showPopup();
|
||||||
|
setTimeout(function () {
|
||||||
|
hidePopup();
|
||||||
|
location.reload(true);
|
||||||
|
}, 5000);
|
||||||
|
|
||||||
|
}, function (jqXHR) {
|
||||||
|
title.html("Failed to deploy artifacts, Please contact administrator.");
|
||||||
|
statusIcon.attr("class", defaultStatusClasses + " fw-error");
|
||||||
|
$(modalPopupContent).html(content.html());
|
||||||
|
showPopup();
|
||||||
|
}, contentType);
|
||||||
|
};
|
||||||
|
|||||||
@ -28,15 +28,31 @@ function onRequest(context) {
|
|||||||
var jwtClient = jwtService.getJWTClient();
|
var jwtClient = jwtService.getJWTClient();
|
||||||
var encodedClientKeys = session.get(constants["ENCODED_TENANT_BASED_WEB_SOCKET_CLIENT_CREDENTIALS"]);
|
var encodedClientKeys = session.get(constants["ENCODED_TENANT_BASED_WEB_SOCKET_CLIENT_CREDENTIALS"]);
|
||||||
var token = "";
|
var token = "";
|
||||||
|
var user = session.get(constants.USER_SESSION_KEY);
|
||||||
|
if (!user) {
|
||||||
|
log.error("User object was not found in the session");
|
||||||
|
throw constants.ERRORS.USER_NOT_FOUND;
|
||||||
|
}
|
||||||
|
|
||||||
if (encodedClientKeys) {
|
if (encodedClientKeys) {
|
||||||
var tokenUtil = require("/app/modules/oauth/token-handler-utils.js")["utils"];
|
var tokenUtil = require("/app/modules/oauth/token-handler-utils.js")["utils"];
|
||||||
var resp = tokenUtil.decode(encodedClientKeys).split(":");
|
var resp = tokenUtil.decode(encodedClientKeys).split(":");
|
||||||
var tokenPair = jwtClient.getAccessToken(resp[0], resp[1], context.user.username,"default", {});
|
if (user.domain == "carbon.super") {
|
||||||
if (tokenPair) {
|
var tokenPair = jwtClient.getAccessToken(resp[0], resp[1], context.user.username , "default", {});
|
||||||
token = tokenPair.accessToken;
|
if (tokenPair) {
|
||||||
}
|
token = tokenPair.accessToken;
|
||||||
websocketEndpoint = websocketEndpoint + "/secured-websocket/org.wso2.iot.devices.temperature/1.0.0?"
|
}
|
||||||
+ "deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type + "&websocketToken=" + token;
|
websocketEndpoint = websocketEndpoint + "/secured-websocket/org.wso2.iot.devices.temperature/1.0.0?"
|
||||||
|
+ "deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type + "&websocketToken=" + token;
|
||||||
|
} else {
|
||||||
|
var tokenPair = jwtClient.getAccessToken(resp[0], resp[1], context.user.username + "@" + user.domain
|
||||||
|
, "default", {});
|
||||||
|
if (tokenPair) {
|
||||||
|
token = tokenPair.accessToken;
|
||||||
|
}
|
||||||
|
websocketEndpoint = websocketEndpoint + "/secured-websocket/t/" + user.domain + "/org.wso2.iot.devices.temperature/1.0.0?"
|
||||||
|
+ "deviceId=" + device.deviceIdentifier + "&deviceType=" + device.type + "&websocketToken=" + token;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return {"device": device, "websocketEndpoint": websocketEndpoint};
|
return {"device": device, "websocketEndpoint": websocketEndpoint};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -134,31 +134,4 @@ function doAction(data) {
|
|||||||
hideAgentDownloadPopup();
|
hideAgentDownloadPopup();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
function artifactUpload() {
|
|
||||||
var contentType = "application/json";
|
|
||||||
|
|
||||||
var urix = backendEndBasePath + "/admin/devicetype/deploy/virtual_firealarm";
|
|
||||||
var defaultStatusClasses = "fw fw-stack-1x";
|
|
||||||
var content = $("#virtualfirealarm-statistic-response-template").find(".content");
|
|
||||||
var title = content.find("#title");
|
|
||||||
var statusIcon = content.find("#status-icon");
|
|
||||||
var data = {}
|
|
||||||
invokerUtil.post(urix, data, function (data) {
|
|
||||||
title.html("Deploying statistic artifacts. Please wait...");
|
|
||||||
statusIcon.attr("class", defaultStatusClasses + " fw-check");
|
|
||||||
$(modalPopupContent).html(content.html());
|
|
||||||
showPopup();
|
|
||||||
setTimeout(function () {
|
|
||||||
hidePopup();
|
|
||||||
location.reload(true);
|
|
||||||
}, 5000);
|
|
||||||
|
|
||||||
}, function (jqXHR) {
|
|
||||||
title.html("Failed to deploy artifacts, Please contact administrator.");
|
|
||||||
statusIcon.attr("class", defaultStatusClasses + " fw-error");
|
|
||||||
$(modalPopupContent).html(content.html());
|
|
||||||
showPopup();
|
|
||||||
}, contentType);
|
|
||||||
}
|
}
|
||||||
@ -54,9 +54,6 @@
|
|||||||
</a>
|
</a>
|
||||||
<a href="#" class="download-link btn-operations">
|
<a href="#" class="download-link btn-operations">
|
||||||
<i class="fw fw-download"></i>Download Agent</a>
|
<i class="fw fw-download"></i>Download Agent</a>
|
||||||
{{#if permissions.IS_ADMIN}}
|
|
||||||
<a href="javascript:artifactUpload()" class="btn-operations"><i class="fw fw-upload fw-inverse fw-lg add-margin-1x"></i> Deploy Analytics Artifacts</a>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
<p class="doc-link">Click <a href="https://docs.wso2.com/display/IoTS300/Virtual+Firealarm"
|
<p class="doc-link">Click <a href="https://docs.wso2.com/display/IoTS300/Virtual+Firealarm"
|
||||||
target="_blank">[ here ]</a> for latest instructions and
|
target="_blank">[ here ]</a> for latest instructions and
|
||||||
|
|||||||
@ -69,9 +69,14 @@ public class HTTPMessageServlet extends HttpServlet {
|
|||||||
this.tenantId = tenantId;
|
this.tenantId = tenantId;
|
||||||
this.exposedTransports = eventAdapterConfiguration.getProperties().get(
|
this.exposedTransports = eventAdapterConfiguration.getProperties().get(
|
||||||
HTTPEventAdapterConstants.EXPOSED_TRANSPORTS);
|
HTTPEventAdapterConstants.EXPOSED_TRANSPORTS);
|
||||||
|
String globalContentValidator = globalProperties.get(HTTPEventAdapterConstants.
|
||||||
|
ADAPTER_CONF_CONTENT_VALIDATOR_TYPE);
|
||||||
|
|
||||||
String contentValidatorType = eventAdapterConfiguration.getProperties().get(
|
String contentValidatorType = eventAdapterConfiguration.getProperties().get(
|
||||||
HTTPEventAdapterConstants.ADAPTER_CONF_CONTENT_VALIDATOR_TYPE);
|
HTTPEventAdapterConstants.ADAPTER_CONF_CONTENT_VALIDATOR_TYPE);
|
||||||
|
if (globalContentValidator != null && !globalContentValidator.isEmpty() ) {
|
||||||
|
contentValidatorType = globalContentValidator;
|
||||||
|
}
|
||||||
if (contentValidatorType == null || HTTPEventAdapterConstants.DEFAULT.equals(contentValidatorType)) {
|
if (contentValidatorType == null || HTTPEventAdapterConstants.DEFAULT.equals(contentValidatorType)) {
|
||||||
contentValidator = InputAdapterServiceDataHolder.getInputAdapterExtensionService()
|
contentValidator = InputAdapterServiceDataHolder.getInputAdapterExtensionService()
|
||||||
.getDefaultContentValidator();
|
.getDefaultContentValidator();
|
||||||
|
|||||||
@ -93,6 +93,10 @@ public class MQTTEventAdapter implements InputEventAdapter {
|
|||||||
public void disconnect() {
|
public void disconnect() {
|
||||||
//when mqtt and this feature both together then this method becomes a blocking method, Therefore
|
//when mqtt and this feature both together then this method becomes a blocking method, Therefore
|
||||||
// have used a thread to skip it.
|
// have used a thread to skip it.
|
||||||
|
if (!PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain()
|
||||||
|
.equals(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
Thread thread = new Thread(new Runnable() {
|
Thread thread = new Thread(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|||||||
@ -120,7 +120,7 @@ public class MQTTEventAdapterFactory extends InputEventAdapterFactory {
|
|||||||
// set clientId
|
// set clientId
|
||||||
Property clientId = new Property(MQTTEventAdapterConstants.ADAPTER_CONF_CLIENTID);
|
Property clientId = new Property(MQTTEventAdapterConstants.ADAPTER_CONF_CLIENTID);
|
||||||
clientId.setDisplayName(resourceBundle.getString(MQTTEventAdapterConstants.ADAPTER_CONF_CLIENTID));
|
clientId.setDisplayName(resourceBundle.getString(MQTTEventAdapterConstants.ADAPTER_CONF_CLIENTID));
|
||||||
clientId.setRequired(false);
|
clientId.setRequired(true);
|
||||||
clientId.setHint(resourceBundle.getString(MQTTEventAdapterConstants.ADAPTER_CONF_CLIENTID_HINT));
|
clientId.setHint(resourceBundle.getString(MQTTEventAdapterConstants.ADAPTER_CONF_CLIENTID_HINT));
|
||||||
propertyList.add(clientId);
|
propertyList.add(clientId);
|
||||||
|
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import org.apache.commons.logging.LogFactory;
|
|||||||
import org.apache.http.HttpResponse;
|
import org.apache.http.HttpResponse;
|
||||||
import org.apache.http.client.HttpClient;
|
import org.apache.http.client.HttpClient;
|
||||||
import org.apache.http.client.methods.HttpPost;
|
import org.apache.http.client.methods.HttpPost;
|
||||||
|
import org.apache.http.conn.HttpHostConnectException;
|
||||||
import org.apache.http.entity.ContentType;
|
import org.apache.http.entity.ContentType;
|
||||||
import org.apache.http.entity.StringEntity;
|
import org.apache.http.entity.StringEntity;
|
||||||
import org.apache.http.message.BasicHeader;
|
import org.apache.http.message.BasicHeader;
|
||||||
@ -131,7 +132,7 @@ public class MQTTAdapterListener implements MqttCallback, Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startListener() throws MqttException {
|
public boolean startListener() throws MqttException {
|
||||||
if (this.mqttBrokerConnectionConfiguration.getUsername() != null &&
|
if (this.mqttBrokerConnectionConfiguration.getUsername() != null &&
|
||||||
this.mqttBrokerConnectionConfiguration.getDcrUrl() != null) {
|
this.mqttBrokerConnectionConfiguration.getDcrUrl() != null) {
|
||||||
String username = this.mqttBrokerConnectionConfiguration.getUsername();
|
String username = this.mqttBrokerConnectionConfiguration.getUsername();
|
||||||
@ -151,12 +152,12 @@ public class MQTTAdapterListener implements MqttCallback, Runnable {
|
|||||||
registrationProfile.setTokenScope(MQTTEventAdapterConstants.TOKEN_SCOPE);
|
registrationProfile.setTokenScope(MQTTEventAdapterConstants.TOKEN_SCOPE);
|
||||||
if (!mqttBrokerConnectionConfiguration.isGlobalCredentailSet()) {
|
if (!mqttBrokerConnectionConfiguration.isGlobalCredentailSet()) {
|
||||||
registrationProfile.setClientName(MQTTEventAdapterConstants.APPLICATION_NAME_PREFIX
|
registrationProfile.setClientName(MQTTEventAdapterConstants.APPLICATION_NAME_PREFIX
|
||||||
+ mqttBrokerConnectionConfiguration.getAdapterName() +
|
+ mqttBrokerConnectionConfiguration.getAdapterName() +
|
||||||
"_" + tenantDomain);
|
"_" + tenantDomain);
|
||||||
registrationProfile.setIsSaasApp(false);
|
registrationProfile.setIsSaasApp(false);
|
||||||
} else {
|
} else {
|
||||||
registrationProfile.setClientName(MQTTEventAdapterConstants.APPLICATION_NAME_PREFIX
|
registrationProfile.setClientName(MQTTEventAdapterConstants.APPLICATION_NAME_PREFIX
|
||||||
+ mqttBrokerConnectionConfiguration.getAdapterName());
|
+ mqttBrokerConnectionConfiguration.getAdapterName());
|
||||||
registrationProfile.setIsSaasApp(true);
|
registrationProfile.setIsSaasApp(true);
|
||||||
}
|
}
|
||||||
String jsonString = registrationProfile.toJSON();
|
String jsonString = registrationProfile.toJSON();
|
||||||
@ -164,8 +165,8 @@ public class MQTTAdapterListener implements MqttCallback, Runnable {
|
|||||||
postMethod.setEntity(requestEntity);
|
postMethod.setEntity(requestEntity);
|
||||||
String basicAuth = getBase64Encode(username, password);
|
String basicAuth = getBase64Encode(username, password);
|
||||||
postMethod.setHeader(new BasicHeader(MQTTEventAdapterConstants.AUTHORIZATION_HEADER_NAME,
|
postMethod.setHeader(new BasicHeader(MQTTEventAdapterConstants.AUTHORIZATION_HEADER_NAME,
|
||||||
MQTTEventAdapterConstants.AUTHORIZATION_HEADER_VALUE_PREFIX +
|
MQTTEventAdapterConstants.AUTHORIZATION_HEADER_VALUE_PREFIX +
|
||||||
basicAuth));
|
basicAuth));
|
||||||
HttpResponse httpResponse = httpClient.execute(postMethod);
|
HttpResponse httpResponse = httpClient.execute(postMethod);
|
||||||
if (httpResponse != null) {
|
if (httpResponse != null) {
|
||||||
String response = MQTTUtil.getResponseString(httpResponse);
|
String response = MQTTUtil.getResponseString(httpResponse);
|
||||||
@ -182,17 +183,34 @@ public class MQTTAdapterListener implements MqttCallback, Runnable {
|
|||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (HttpHostConnectException e) {
|
||||||
|
log.error("Keymanager is unreachable, Waiting....");
|
||||||
|
return false;
|
||||||
} catch (MalformedURLException e) {
|
} catch (MalformedURLException e) {
|
||||||
log.error("Invalid dcrUrl : " + dcrUrlString);
|
log.error("Invalid dcrUrl : " + dcrUrlString);
|
||||||
|
return false;
|
||||||
} catch (JWTClientException | UserStoreException e) {
|
} catch (JWTClientException | UserStoreException e) {
|
||||||
log.error("Failed to create an oauth token with jwt grant type.", e);
|
log.error("Failed to create an oauth token with jwt grant type.", e);
|
||||||
|
return false;
|
||||||
} catch (NoSuchAlgorithmException | KeyManagementException | KeyStoreException | IOException e) {
|
} catch (NoSuchAlgorithmException | KeyManagementException | KeyStoreException | IOException e) {
|
||||||
log.error("Failed to create a http connection.", e);
|
log.error("Failed to create a http connection.", e);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mqttClient.connect(connectionOptions);
|
try {
|
||||||
mqttClient.subscribe(topic);
|
mqttClient.connect(connectionOptions);
|
||||||
|
} catch (MqttException e) {
|
||||||
|
log.warn("Broker is unreachable, Waiting.....");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
mqttClient.subscribe(topic);
|
||||||
|
} catch (MqttException e) {
|
||||||
|
log.error("Failed to subscribe to topic: " + topic + ", Retrying.....");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -267,10 +285,14 @@ public class MQTTAdapterListener implements MqttCallback, Runnable {
|
|||||||
while (!connectionSucceeded) {
|
while (!connectionSucceeded) {
|
||||||
try {
|
try {
|
||||||
connectionDuration = connectionDuration * MQTTEventAdapterConstants.RECONNECTION_PROGRESS_FACTOR;
|
connectionDuration = connectionDuration * MQTTEventAdapterConstants.RECONNECTION_PROGRESS_FACTOR;
|
||||||
|
if (connectionDuration > MQTTEventAdapterConstants.MAXIMUM_RECONNECTION_DURATION) {
|
||||||
|
connectionDuration = MQTTEventAdapterConstants.MAXIMUM_RECONNECTION_DURATION;
|
||||||
|
}
|
||||||
Thread.sleep(connectionDuration);
|
Thread.sleep(connectionDuration);
|
||||||
startListener();
|
if (startListener()) {
|
||||||
connectionSucceeded = true;
|
connectionSucceeded = true;
|
||||||
log.info("MQTT Connection successful");
|
log.info("MQTT Connection successful");
|
||||||
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
log.error("Interruption occurred while waiting for reconnection", e);
|
log.error("Interruption occurred while waiting for reconnection", e);
|
||||||
} catch (MqttException e) {
|
} catch (MqttException e) {
|
||||||
|
|||||||
@ -105,10 +105,18 @@ public class MQTTBrokerConnectionConfiguration {
|
|||||||
this.brokerUrl = PropertyUtils.replaceMqttProperty(url);
|
this.brokerUrl = PropertyUtils.replaceMqttProperty(url);
|
||||||
this.dcrUrl = PropertyUtils
|
this.dcrUrl = PropertyUtils
|
||||||
.replaceMqttProperty(globalProperties.get(MQTTEventAdapterConstants.ADAPTER_CONF_DCR_URL));
|
.replaceMqttProperty(globalProperties.get(MQTTEventAdapterConstants.ADAPTER_CONF_DCR_URL));
|
||||||
this.contentValidatorType = eventAdapterConfiguration.getProperties()
|
this.contentValidatorType = globalProperties.get(MQTTEventAdapterConstants.ADAPTER_CONF_CONTENT_VALIDATOR_TYPE);
|
||||||
.get(MQTTEventAdapterConstants.ADAPTER_CONF_CONTENT_VALIDATOR_TYPE);
|
if (contentValidatorType == null || contentValidatorType.isEmpty()) {
|
||||||
this.cleanSession = Boolean.parseBoolean(eventAdapterConfiguration.getProperties()
|
this.contentValidatorType = eventAdapterConfiguration.getProperties()
|
||||||
.get(MQTTEventAdapterConstants.ADAPTER_CONF_CLEAN_SESSION));
|
.get(MQTTEventAdapterConstants.ADAPTER_CONF_CONTENT_VALIDATOR_TYPE);
|
||||||
|
}
|
||||||
|
String cleanSession = globalProperties.get(MQTTEventAdapterConstants.ADAPTER_CONF_CLEAN_SESSION);
|
||||||
|
if (cleanSession == null || cleanSession.isEmpty()) {
|
||||||
|
this.cleanSession = Boolean.parseBoolean(eventAdapterConfiguration.getProperties()
|
||||||
|
.get(MQTTEventAdapterConstants.ADAPTER_CONF_CLEAN_SESSION));
|
||||||
|
} else {
|
||||||
|
this.cleanSession = Boolean.parseBoolean(cleanSession);
|
||||||
|
}
|
||||||
//If global properties are available those will be assigned else constant values will be assigned
|
//If global properties are available those will be assigned else constant values will be assigned
|
||||||
if (globalProperties.get(MQTTEventAdapterConstants.ADAPTER_CONF_KEEP_ALIVE) != null) {
|
if (globalProperties.get(MQTTEventAdapterConstants.ADAPTER_CONF_KEEP_ALIVE) != null) {
|
||||||
keepAlive = Integer.parseInt((globalProperties.get(MQTTEventAdapterConstants.ADAPTER_CONF_KEEP_ALIVE)));
|
keepAlive = Integer.parseInt((globalProperties.get(MQTTEventAdapterConstants.ADAPTER_CONF_KEEP_ALIVE)));
|
||||||
|
|||||||
@ -50,6 +50,7 @@ public class MQTTEventAdapterConstants {
|
|||||||
|
|
||||||
public static final int INITIAL_RECONNECTION_DURATION = 4000;
|
public static final int INITIAL_RECONNECTION_DURATION = 4000;
|
||||||
public static final int RECONNECTION_PROGRESS_FACTOR = 2;
|
public static final int RECONNECTION_PROGRESS_FACTOR = 2;
|
||||||
|
public static final int MAXIMUM_RECONNECTION_DURATION = 60000;
|
||||||
|
|
||||||
public static final String EMPTY_STRING = "";
|
public static final String EMPTY_STRING = "";
|
||||||
public static final String GRANT_TYPE_PARAM_NAME = "grant_type";
|
public static final String GRANT_TYPE_PARAM_NAME = "grant_type";
|
||||||
|
|||||||
@ -44,10 +44,10 @@ public class MQTTEventAdapter implements OutputEventAdapter {
|
|||||||
private Map<String, String> globalProperties;
|
private Map<String, String> globalProperties;
|
||||||
private MQTTAdapterPublisher mqttAdapterPublisher;
|
private MQTTAdapterPublisher mqttAdapterPublisher;
|
||||||
private int connectionKeepAliveInterval;
|
private int connectionKeepAliveInterval;
|
||||||
private String qos;
|
|
||||||
private static ThreadPoolExecutor threadPoolExecutor;
|
private static ThreadPoolExecutor threadPoolExecutor;
|
||||||
private static final Log log = LogFactory.getLog(MQTTEventAdapter.class);
|
private static final Log log = LogFactory.getLog(MQTTEventAdapter.class);
|
||||||
private int tenantId;
|
private int tenantId;
|
||||||
|
private MQTTBrokerConnectionConfiguration mqttBrokerConnectionConfiguration;
|
||||||
|
|
||||||
public MQTTEventAdapter(OutputEventAdapterConfiguration eventAdapterConfiguration,
|
public MQTTEventAdapter(OutputEventAdapterConfiguration eventAdapterConfiguration,
|
||||||
Map<String, String> globalProperties) {
|
Map<String, String> globalProperties) {
|
||||||
@ -117,11 +117,11 @@ public class MQTTEventAdapter implements OutputEventAdapter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void connect() {
|
public void connect() {
|
||||||
MQTTBrokerConnectionConfiguration mqttBrokerConnectionConfiguration =
|
mqttBrokerConnectionConfiguration =
|
||||||
new MQTTBrokerConnectionConfiguration(eventAdapterConfiguration, globalProperties);
|
new MQTTBrokerConnectionConfiguration(eventAdapterConfiguration, globalProperties);
|
||||||
String clientId = eventAdapterConfiguration.getStaticProperties().get(
|
String clientId = eventAdapterConfiguration.getStaticProperties().get(
|
||||||
MQTTEventAdapterConstants.ADAPTER_CONF_CLIENTID);
|
MQTTEventAdapterConstants.ADAPTER_CONF_CLIENTID);
|
||||||
qos = eventAdapterConfiguration.getStaticProperties().get(MQTTEventAdapterConstants.ADAPTER_MESSAGE_QOS);
|
|
||||||
mqttAdapterPublisher = new MQTTAdapterPublisher(mqttBrokerConnectionConfiguration, clientId, tenantId);
|
mqttAdapterPublisher = new MQTTAdapterPublisher(mqttBrokerConnectionConfiguration, clientId, tenantId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,11 +179,7 @@ public class MQTTEventAdapter implements OutputEventAdapter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (qos == null || qos.trim().isEmpty()) {
|
mqttAdapterPublisher.publish(mqttBrokerConnectionConfiguration.getQos(), message.toString(), topic);
|
||||||
mqttAdapterPublisher.publish(message.toString(), topic);
|
|
||||||
} else {
|
|
||||||
mqttAdapterPublisher.publish(Integer.parseInt(qos), message.toString(), topic);
|
|
||||||
}
|
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
EventAdapterUtil.logAndDrop(eventAdapterConfiguration.getName(), message, null, t, log, tenantId);
|
EventAdapterUtil.logAndDrop(eventAdapterConfiguration.getName(), message, null, t, log, tenantId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -90,9 +90,9 @@ public class MQTTEventAdapterFactory extends OutputEventAdapterFactory {
|
|||||||
// set Quality of Service
|
// set Quality of Service
|
||||||
Property qos = new Property(MQTTEventAdapterConstants.ADAPTER_MESSAGE_QOS);
|
Property qos = new Property(MQTTEventAdapterConstants.ADAPTER_MESSAGE_QOS);
|
||||||
qos.setDisplayName(resourceBundle.getString(MQTTEventAdapterConstants.ADAPTER_MESSAGE_QOS));
|
qos.setDisplayName(resourceBundle.getString(MQTTEventAdapterConstants.ADAPTER_MESSAGE_QOS));
|
||||||
qos.setRequired(true);
|
qos.setRequired(false);
|
||||||
qos.setOptions(new String[]{"0", "1", "2"});
|
qos.setOptions(new String[]{"0", "1", "2"});
|
||||||
qos.setDefaultValue("1");
|
qos.setDefaultValue("2");
|
||||||
|
|
||||||
staticPropertyList.add(brokerUrl);
|
staticPropertyList.add(brokerUrl);
|
||||||
staticPropertyList.add(userName);
|
staticPropertyList.add(userName);
|
||||||
|
|||||||
@ -34,6 +34,7 @@ public class MQTTBrokerConnectionConfiguration {
|
|||||||
private boolean cleanSession = true;
|
private boolean cleanSession = true;
|
||||||
private int keepAlive;
|
private int keepAlive;
|
||||||
private boolean globalCredentailSet;
|
private boolean globalCredentailSet;
|
||||||
|
private int qos;
|
||||||
|
|
||||||
public String getTokenUrl() {
|
public String getTokenUrl() {
|
||||||
return tokenUrl;
|
return tokenUrl;
|
||||||
@ -75,6 +76,9 @@ public class MQTTBrokerConnectionConfiguration {
|
|||||||
return globalCredentailSet;
|
return globalCredentailSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getQos() {
|
||||||
|
return qos;
|
||||||
|
}
|
||||||
public MQTTBrokerConnectionConfiguration(OutputEventAdapterConfiguration eventAdapterConfiguration,
|
public MQTTBrokerConnectionConfiguration(OutputEventAdapterConfiguration eventAdapterConfiguration,
|
||||||
Map<String, String> globalProperties) {
|
Map<String, String> globalProperties) {
|
||||||
adapterName = eventAdapterConfiguration.getName();
|
adapterName = eventAdapterConfiguration.getName();
|
||||||
@ -98,14 +102,28 @@ public class MQTTBrokerConnectionConfiguration {
|
|||||||
if (scopes == null) {
|
if (scopes == null) {
|
||||||
this.scopes = MQTTEventAdapterConstants.EMPTY_STRING;
|
this.scopes = MQTTEventAdapterConstants.EMPTY_STRING;
|
||||||
}
|
}
|
||||||
this.cleanSession = Boolean.parseBoolean(eventAdapterConfiguration.getStaticProperties()
|
String cleanSession = globalProperties.get(MQTTEventAdapterConstants.ADAPTER_CONF_CLEAN_SESSION);
|
||||||
.get(MQTTEventAdapterConstants.ADAPTER_CONF_CLEAN_SESSION));
|
if (cleanSession == null || cleanSession.isEmpty()) {
|
||||||
|
this.cleanSession = Boolean.parseBoolean(eventAdapterConfiguration.getStaticProperties()
|
||||||
|
.get(MQTTEventAdapterConstants.ADAPTER_CONF_CLEAN_SESSION));
|
||||||
|
} else {
|
||||||
|
this.cleanSession = Boolean.parseBoolean(cleanSession);
|
||||||
|
}
|
||||||
//If global properties are available those will be assigned else constant values will be assigned
|
//If global properties are available those will be assigned else constant values will be assigned
|
||||||
if (globalProperties.get(MQTTEventAdapterConstants.ADAPTER_CONF_KEEP_ALIVE) != null) {
|
if (globalProperties.get(MQTTEventAdapterConstants.ADAPTER_CONF_KEEP_ALIVE) != null) {
|
||||||
keepAlive = Integer.parseInt((globalProperties.get(MQTTEventAdapterConstants.ADAPTER_CONF_KEEP_ALIVE)));
|
keepAlive = Integer.parseInt((globalProperties.get(MQTTEventAdapterConstants.ADAPTER_CONF_KEEP_ALIVE)));
|
||||||
} else {
|
} else {
|
||||||
keepAlive = MQTTEventAdapterConstants.ADAPTER_CONF_DEFAULT_KEEP_ALIVE;
|
keepAlive = MQTTEventAdapterConstants.ADAPTER_CONF_DEFAULT_KEEP_ALIVE;
|
||||||
}
|
}
|
||||||
|
String qosVal = globalProperties.get(MQTTEventAdapterConstants.ADAPTER_MESSAGE_QOS);
|
||||||
|
if (qosVal != null && !qosVal.isEmpty()) {
|
||||||
|
this.qos = Integer.parseInt(qosVal);
|
||||||
|
} else {
|
||||||
|
qosVal = eventAdapterConfiguration.getStaticProperties().get(MQTTEventAdapterConstants.ADAPTER_MESSAGE_QOS);
|
||||||
|
this.qos = Integer.parseInt(qosVal);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,23 +63,14 @@ public class DeviceAuthorizer implements Authorizer {
|
|||||||
private static DeviceAccessAuthorizationAdminService deviceAccessAuthorizationAdminService;
|
private static DeviceAccessAuthorizationAdminService deviceAccessAuthorizationAdminService;
|
||||||
private static final String CDMF_SERVER_BASE_CONTEXT = "/api/device-mgt/v1.0";
|
private static final String CDMF_SERVER_BASE_CONTEXT = "/api/device-mgt/v1.0";
|
||||||
private static final String DEVICE_MGT_SERVER_URL = "deviceMgtServerUrl";
|
private static final String DEVICE_MGT_SERVER_URL = "deviceMgtServerUrl";
|
||||||
private static final String STAT_PERMISSION = "statsPermission";
|
|
||||||
private static final String DEVICE_ID = "deviceId";
|
private static final String DEVICE_ID = "deviceId";
|
||||||
private static final String DEVICE_TYPE = "deviceType";
|
private static final String DEVICE_TYPE = "deviceType";
|
||||||
private static Log log = LogFactory.getLog(DeviceAuthorizer.class);
|
private static Log log = LogFactory.getLog(DeviceAuthorizer.class);
|
||||||
private static List<String> statPermissions;
|
|
||||||
|
|
||||||
public DeviceAuthorizer() {
|
public DeviceAuthorizer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(Map<String, String> globalProperties) {
|
public void init(Map<String, String> globalProperties) {
|
||||||
statPermissions = getPermissions(globalProperties);
|
|
||||||
if (statPermissions != null && !statPermissions.isEmpty()) {
|
|
||||||
for (String permission : statPermissions) {
|
|
||||||
PermissionUtil.putPermission(permission);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
deviceAccessAuthorizationAdminService = Feign.builder().client(getSSLClient()).logger(new Slf4jLogger())
|
deviceAccessAuthorizationAdminService = Feign.builder().client(getSSLClient()).logger(new Slf4jLogger())
|
||||||
.logLevel(Logger.Level.FULL).requestInterceptor(new OAuthRequestInterceptor(globalProperties))
|
.logLevel(Logger.Level.FULL).requestInterceptor(new OAuthRequestInterceptor(globalProperties))
|
||||||
@ -102,9 +93,6 @@ public class DeviceAuthorizer implements Authorizer {
|
|||||||
|
|
||||||
AuthorizationRequest authorizationRequest = new AuthorizationRequest();
|
AuthorizationRequest authorizationRequest = new AuthorizationRequest();
|
||||||
authorizationRequest.setTenantDomain(authenticationInfo.getTenantDomain());
|
authorizationRequest.setTenantDomain(authenticationInfo.getTenantDomain());
|
||||||
if (statPermissions != null && !statPermissions.isEmpty()) {
|
|
||||||
authorizationRequest.setPermissions(statPermissions);
|
|
||||||
}
|
|
||||||
authorizationRequest.setUsername(authenticationInfo.getUsername());
|
authorizationRequest.setUsername(authenticationInfo.getUsername());
|
||||||
DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
|
DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
|
||||||
deviceIdentifier.setId(deviceId);
|
deviceIdentifier.setId(deviceId);
|
||||||
@ -137,14 +125,6 @@ public class DeviceAuthorizer implements Authorizer {
|
|||||||
return deviceMgtServerUrl;
|
return deviceMgtServerUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<String> getPermissions(Map<String, String> properties) {
|
|
||||||
String stats = properties.get(STAT_PERMISSION);
|
|
||||||
if (stats != null && !stats.isEmpty()) {
|
|
||||||
return Arrays.asList(stats.replace("\n", "").split(" "));
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Client getSSLClient() {
|
private static Client getSSLClient() {
|
||||||
return new Client.Default(getTrustedSSLSocketFactory(), new HostnameVerifier() {
|
return new Client.Default(getTrustedSSLSocketFactory(), new HostnameVerifier() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -1,76 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2015, 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.output.adapter.websocket.authorization;
|
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
import org.wso2.carbon.base.MultitenantConstants;
|
|
||||||
import org.wso2.carbon.device.mgt.output.adapter.websocket.internal.WebsocketEventAdaptorServiceDataHolder;
|
|
||||||
import org.wso2.carbon.registry.api.Resource;
|
|
||||||
import org.wso2.carbon.registry.core.Registry;
|
|
||||||
import org.wso2.carbon.registry.core.exceptions.RegistryException;
|
|
||||||
|
|
||||||
import java.util.StringTokenizer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Utility class which holds necessary utility methods required for persisting permissions in
|
|
||||||
* registry.
|
|
||||||
*/
|
|
||||||
public class PermissionUtil {
|
|
||||||
|
|
||||||
public static final String PERMISSION_PROPERTY_NAME = "name";
|
|
||||||
private static Log log = LogFactory.getLog(DeviceAuthorizer.class);
|
|
||||||
|
|
||||||
public static void putPermission(String permission) {
|
|
||||||
try {
|
|
||||||
StringTokenizer tokenizer = new StringTokenizer(permission, "/");
|
|
||||||
String lastToken = "", currentToken, tempPath;
|
|
||||||
while (tokenizer.hasMoreTokens()) {
|
|
||||||
currentToken = tokenizer.nextToken();
|
|
||||||
tempPath = lastToken + "/" + currentToken;
|
|
||||||
if (!checkResourceExists(tempPath)) {
|
|
||||||
createRegistryCollection(tempPath, currentToken);
|
|
||||||
|
|
||||||
}
|
|
||||||
lastToken = tempPath;
|
|
||||||
}
|
|
||||||
} catch (org.wso2.carbon.registry.api.RegistryException e) {
|
|
||||||
log.error("Failed to creation permission in registry" + permission, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void createRegistryCollection(String path, String resourceName)
|
|
||||||
throws org.wso2.carbon.registry.api.RegistryException {
|
|
||||||
Resource resource = getGovernanceRegistry().newCollection();
|
|
||||||
resource.addProperty(PERMISSION_PROPERTY_NAME, resourceName);
|
|
||||||
getGovernanceRegistry().beginTransaction();
|
|
||||||
getGovernanceRegistry().put(path, resource);
|
|
||||||
getGovernanceRegistry().commitTransaction();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean checkResourceExists(String path)
|
|
||||||
throws RegistryException {
|
|
||||||
return getGovernanceRegistry().resourceExists(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Registry getGovernanceRegistry() throws RegistryException {
|
|
||||||
return WebsocketEventAdaptorServiceDataHolder.getRegistryService()
|
|
||||||
.getGovernanceSystemRegistry(MultitenantConstants.SUPER_TENANT_ID);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -28,7 +28,7 @@ import javax.ws.rs.core.MediaType;
|
|||||||
|
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
@Path("/admin/authorization")
|
@Path("/admin/authorization/stat")
|
||||||
/**
|
/**
|
||||||
* This interface provided the definition of the device - user access verification service.
|
* This interface provided the definition of the device - user access verification service.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -77,12 +77,14 @@ public class DeviceAccessBasedMQTTAuthorizer implements IAuthorizer {
|
|||||||
private static final String CACHE_MANAGER_NAME = "mqttAuthorizationCacheManager";
|
private static final String CACHE_MANAGER_NAME = "mqttAuthorizationCacheManager";
|
||||||
private static final String CACHE_NAME = "mqttAuthorizationCache";
|
private static final String CACHE_NAME = "mqttAuthorizationCache";
|
||||||
private static DeviceAccessAuthorizationAdminService deviceAccessAuthorizationAdminService;
|
private static DeviceAccessAuthorizationAdminService deviceAccessAuthorizationAdminService;
|
||||||
|
private static OAuthRequestInterceptor oAuthRequestInterceptor;
|
||||||
|
private static final String GATEWAY_ERROR_CODE = "<am:code>404</am:code>";
|
||||||
|
|
||||||
public DeviceAccessBasedMQTTAuthorizer() {
|
public DeviceAccessBasedMQTTAuthorizer() {
|
||||||
|
oAuthRequestInterceptor = new OAuthRequestInterceptor();
|
||||||
this.MQTTAuthorizationConfiguration = AuthorizationConfigurationManager.getInstance();
|
this.MQTTAuthorizationConfiguration = AuthorizationConfigurationManager.getInstance();
|
||||||
deviceAccessAuthorizationAdminService = Feign.builder().client(getSSLClient()).logger(new Slf4jLogger())
|
deviceAccessAuthorizationAdminService = Feign.builder().client(getSSLClient()).logger(new Slf4jLogger())
|
||||||
.logLevel(Logger.Level.FULL).requestInterceptor(new OAuthRequestInterceptor())
|
.logLevel(Logger.Level.FULL).requestInterceptor(oAuthRequestInterceptor)
|
||||||
.contract(new JAXRSContract()).encoder(new GsonEncoder()).decoder(new GsonDecoder())
|
.contract(new JAXRSContract()).encoder(new GsonEncoder()).decoder(new GsonDecoder())
|
||||||
.target(DeviceAccessAuthorizationAdminService.class,
|
.target(DeviceAccessAuthorizationAdminService.class,
|
||||||
MQTTAuthorizationConfiguration.getDeviceMgtServerUrl() + CDMF_SERVER_BASE_CONTEXT);
|
MQTTAuthorizationConfiguration.getDeviceMgtServerUrl() + CDMF_SERVER_BASE_CONTEXT);
|
||||||
@ -121,7 +123,12 @@ public class DeviceAccessBasedMQTTAuthorizer implements IAuthorizer {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
} catch (FeignException e) {
|
} catch (FeignException e) {
|
||||||
log.error(e.getMessage(), e);
|
oAuthRequestInterceptor.resetApiApplicationKey();
|
||||||
|
if (e.getMessage().contains(GATEWAY_ERROR_CODE)) {
|
||||||
|
log.error("Failed to connect to the device authorization service.");
|
||||||
|
} else {
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -164,6 +171,12 @@ public class DeviceAccessBasedMQTTAuthorizer implements IAuthorizer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (FeignException e) {
|
} catch (FeignException e) {
|
||||||
|
oAuthRequestInterceptor.resetApiApplicationKey();
|
||||||
|
if (e.getMessage().contains(GATEWAY_ERROR_CODE)) {
|
||||||
|
log.error("Failed to connect to the device authorization service.");
|
||||||
|
} else {
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
}
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@ -123,6 +123,10 @@ public class OAuthRequestInterceptor implements RequestInterceptor {
|
|||||||
template.header("Authorization", headerValue);
|
template.header("Authorization", headerValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void resetApiApplicationKey() {
|
||||||
|
apiApplicationKey = null;
|
||||||
|
}
|
||||||
|
|
||||||
private static Client getSSLClient() {
|
private static Client getSSLClient() {
|
||||||
return new Client.Default(getTrustedSSLSocketFactory(), new HostnameVerifier() {
|
return new Client.Default(getTrustedSSLSocketFactory(), new HostnameVerifier() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -77,7 +77,7 @@
|
|||||||
org.wso2.extension.siddhi.execution.json.*
|
org.wso2.extension.siddhi.execution.json.*
|
||||||
</Export-Package>
|
</Export-Package>
|
||||||
<Import-Package>
|
<Import-Package>
|
||||||
org.json,
|
org.json;version="${orbit.version.json.range}",
|
||||||
org.wso2.siddhi.core.*,
|
org.wso2.siddhi.core.*,
|
||||||
org.wso2.siddhi.query.api.*,
|
org.wso2.siddhi.query.api.*,
|
||||||
</Import-Package>
|
</Import-Package>
|
||||||
|
|||||||
@ -384,31 +384,4 @@ $(document).ready(function () {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function artifactUpload() {
|
|
||||||
var contentType = "application/json";
|
|
||||||
|
|
||||||
var urix = backendEndBasePath + "/admin/devicetype/deploy/android";
|
|
||||||
var defaultStatusClasses = "fw fw-stack-1x";
|
|
||||||
var content = $("#android-statistic-response-template").find(".content");
|
|
||||||
var title = content.find("#title");
|
|
||||||
var statusIcon = content.find("#status-icon");
|
|
||||||
var data = {}
|
|
||||||
invokerUtil.post(urix, data, function (data) {
|
|
||||||
title.html("Deploying statistic artifacts. Please wait...");
|
|
||||||
statusIcon.attr("class", defaultStatusClasses + " fw-check");
|
|
||||||
$(modalPopupContent).html(content.html());
|
|
||||||
showPopup();
|
|
||||||
setTimeout(function () {
|
|
||||||
hidePopup();
|
|
||||||
location.reload(true);
|
|
||||||
}, 5000);
|
|
||||||
|
|
||||||
}, function (jqXHR) {
|
|
||||||
title.html("Failed to deploy artifacts, Please contact administrator.");
|
|
||||||
statusIcon.attr("class", defaultStatusClasses + " fw-error");
|
|
||||||
$(modalPopupContent).html(content.html());
|
|
||||||
showPopup();
|
|
||||||
}, contentType);
|
|
||||||
}
|
|
||||||
@ -43,10 +43,6 @@
|
|||||||
<a href="{{host}}/android-web-agent/public/mdm.page.enrollments.android.download-agent/asset/android-agent.apk"
|
<a href="{{host}}/android-web-agent/public/mdm.page.enrollments.android.download-agent/asset/android-agent.apk"
|
||||||
class="btn-operations remove-margin download_agent">
|
class="btn-operations remove-margin download_agent">
|
||||||
<i class="fw fw-download fw-inverse fw-lg add-margin-1x"></i> Download APK</a>
|
<i class="fw fw-download fw-inverse fw-lg add-margin-1x"></i> Download APK</a>
|
||||||
{{#if permissions.IS_ADMIN}}
|
|
||||||
<a href="javascript:artifactUpload()" class="btn-operations">
|
|
||||||
<i class="fw fw-upload fw-inverse fw-lg add-margin-1x"></i> Deploy Geo Dashboard</a>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
@ -19,8 +19,6 @@
|
|||||||
function onRequest(context) {
|
function onRequest(context) {
|
||||||
var viewModel = {};
|
var viewModel = {};
|
||||||
var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"];
|
var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"];
|
||||||
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
|
|
||||||
viewModel["permissions"] = userModule.getUIPermissions();
|
|
||||||
var isCloud = devicemgtProps["isCloud"];
|
var isCloud = devicemgtProps["isCloud"];
|
||||||
viewModel["isVirtual"] = request.getParameter("type") == 'virtual';
|
viewModel["isVirtual"] = request.getParameter("type") == 'virtual';
|
||||||
viewModel["isCloud"] = isCloud;
|
viewModel["isCloud"] = isCloud;
|
||||||
|
|||||||
@ -2,4 +2,8 @@ instructions.configure = \
|
|||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/devicetypes/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/devicetypes/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/devicetypes/device_management/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/devicetypes/device_management/);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/carbonapps/);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.cdmf.analytics_${feature.version}/carbonapps/,target:${installFolder}/../../deployment/server/carbonapps/,overwrite:true);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.cdmf.analytics_${feature.version}/carbonapps/,target:${installFolder}/../../resources/devicetypes/device_management/,overwrite:true);\
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.cdmf.analytics_${feature.version}/carbonapps/,target:${installFolder}/../../resources/devicetypes/device_management/,overwrite:true);\
|
||||||
@ -1,5 +1,9 @@
|
|||||||
instructions.configure = \
|
instructions.configure = \
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/devicetypes/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/devicetypes/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/devicetypes/common);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.analytics_${feature.version}/carbonapps/,target:${installFolder}/../../resources/devicetypes/common/,overwrite:true);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/carbonapps/);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.analytics_${feature.version}/carbonapps/,target:${installFolder}/../../deployment/server/carbonapps/,overwrite:true);\
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,4 +2,8 @@ instructions.configure = \
|
|||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/devicetypes/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/devicetypes/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/devicetypes/device_management/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/devicetypes/device_management/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.iot.device.statistics.dashboard_${feature.version}/carbonapps/,target:${installFolder}/../../resources/devicetypes/device_management/,overwrite:true);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/carbonapps/);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.iot.device.statistics.dashboard_${feature.version}/carbonapps/,target:${installFolder}/../../resources/devicetypes/device_management/,overwrite:true);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.iot.device.statistics.dashboard_${feature.version}/carbonapps/,target:${installFolder}/../../deployment/server/carbonapps/,overwrite:true);\
|
||||||
@ -36,59 +36,6 @@
|
|||||||
<description>This feature contains the Android Sense Device type specific analytics implementations for the IoT Server
|
<description>This feature contains the Android Sense Device type specific analytics implementations for the IoT Server
|
||||||
</description>
|
</description>
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>default-profile</id>
|
|
||||||
<activation>
|
|
||||||
<activeByDefault>true</activeByDefault>
|
|
||||||
</activation>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-antrun-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<phase>test</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>run</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<tasks>
|
|
||||||
<copy file="src/main/resources/default.p2.inf" tofile="src/main/resources/p2.inf" />
|
|
||||||
</tasks>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
|
|
||||||
<profile>
|
|
||||||
<id>cloud</id>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-antrun-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<phase>test</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>run</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<tasks>
|
|
||||||
<copy file="src/main/resources/cloud.p2.inf" tofile="src/main/resources/p2.inf" />
|
|
||||||
</tasks>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
@ -210,11 +157,6 @@
|
|||||||
<propertyDef>org.eclipse.equinox.p2.type.group:true</propertyDef>
|
<propertyDef>org.eclipse.equinox.p2.type.group:true</propertyDef>
|
||||||
</properties>
|
</properties>
|
||||||
</adviceFile>
|
</adviceFile>
|
||||||
<includedFeatures>
|
|
||||||
<includedFeatureDef>
|
|
||||||
org.wso2.carbon.devicemgt-plugins:org.wso2.carbon.device.mgt.iot.analytics.feature:${carbon.devicemgt.plugins.version}
|
|
||||||
</includedFeatureDef>
|
|
||||||
</includedFeatures>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
|
|||||||
@ -1,9 +0,0 @@
|
|||||||
instructions.configure = \
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../analytics/repository/deployment/server/carbonapps/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.analytics_${feature.version}/carbonapps/,target:${installFolder}/../../analytics/repository/deployment/server/carbonapps/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.analytics_${feature.version}/receiver/,target:${installFolder}/../../analytics/repository/deployment/server/eventreceivers/,overwrite:true);\
|
|
||||||
|
|
||||||
instructions.unconfigure = \
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../analytics/repository/deployment/server/carbonapps/android_sense.car);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../analytics/repository/deployment/server/eventreceivers/android_sense_receiver-carbon.super.xml);\
|
|
||||||
|
|
||||||
@ -1,7 +1,8 @@
|
|||||||
instructions.configure = \
|
instructions.configure = \
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/carbonapps/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/carbonapps/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.analytics_${feature.version}/carbonapps/,target:${installFolder}/../../resources/devicetypes/android_sense/,overwrite:true);\
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.analytics_${feature.version}/carbonapps/,target:${installFolder}/../../deployment/server/carbonapps/,overwrite:true);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.analytics_${feature.version}/receiver/,target:${installFolder}/../../../../analytics/repository/deployment/server/eventreceivers/,overwrite:true);\
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.analytics_${feature.version}/receiver/,target:${installFolder}/../../deployment/server/eventreceivers/,overwrite:true);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.analytics_${feature.version}/streams/,target:${installFolder}/../../deployment/server/eventstreams/,overwrite:true);\
|
||||||
|
|
||||||
instructions.unconfigure = \
|
instructions.unconfigure = \
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/carbonapps/android_sense.car);\
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/carbonapps/android_sense.car);\
|
||||||
@ -20,8 +20,6 @@
|
|||||||
<eventReceiver name="android_sense_receiver-carbon.super" statistics="disable" trace="disable" xmlns="http://wso2.org/carbon/eventreceiver">
|
<eventReceiver name="android_sense_receiver-carbon.super" statistics="disable" trace="disable" xmlns="http://wso2.org/carbon/eventreceiver">
|
||||||
<from eventAdapterType="oauth-mqtt">
|
<from eventAdapterType="oauth-mqtt">
|
||||||
<property name="topic">carbon.super/android_sense/+/data</property>
|
<property name="topic">carbon.super/android_sense/+/data</property>
|
||||||
<property name="contentValidator">iot-mqtt</property>
|
|
||||||
<property name="cleanSession">true</property>
|
|
||||||
<property name="clientId">android_sense_receiver-carbon.super</property>
|
<property name="clientId">android_sense_receiver-carbon.super</property>
|
||||||
</from>
|
</from>
|
||||||
<mapping customMapping="disable" type="json"/>
|
<mapping customMapping="disable" type="json"/>
|
||||||
|
|||||||
@ -60,4 +60,4 @@
|
|||||||
{"name": "data_sent", "type": "LONG"},
|
{"name": "data_sent", "type": "LONG"},
|
||||||
{"name": "data_received", "type": "LONG"}
|
{"name": "data_received", "type": "LONG"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -48,60 +48,6 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>default-profile</id>
|
|
||||||
<activation>
|
|
||||||
<activeByDefault>true</activeByDefault>
|
|
||||||
</activation>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-antrun-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<phase>test</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>run</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<tasks>
|
|
||||||
<copy file="src/main/resources/default.p2.inf" tofile="src/main/resources/p2.inf" />
|
|
||||||
</tasks>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
|
|
||||||
<profile>
|
|
||||||
<id>cloud</id>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-antrun-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<phase>test</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>run</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<tasks>
|
|
||||||
<copy file="src/main/resources/cloud.p2.inf" tofile="src/main/resources/p2.inf" />
|
|
||||||
</tasks>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
@ -155,40 +101,79 @@
|
|||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-antrun-plugin</artifactId>
|
<artifactId>maven-dependency-plugin</artifactId>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<!-- Creating Android Sense Plugin Management schema -->
|
<id>unpack</id>
|
||||||
<id>create-android-sense-plugin-mgt-schema</id>
|
<phase>package</phase>
|
||||||
<phase>package</phase>
|
<goals>
|
||||||
<goals>
|
<goal>unpack</goal>
|
||||||
<goal>run</goal>
|
</goals>
|
||||||
</goals>
|
<configuration>
|
||||||
<configuration>
|
<artifactItems>
|
||||||
<tasks>
|
<artifactItem>
|
||||||
<echo message="########### Create Android Sense plugin Management H2 Schema ###########" />
|
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
||||||
<property name="db.dir" value="target/maven-shared-archive-resources/database" />
|
<artifactId>org.wso2.carbon.device.mgt.iot.androidsense.analytics
|
||||||
<property name="userid" value="wso2carbon" />
|
</artifactId>
|
||||||
<property name="password" value="wso2carbon" />
|
<version>${project.version}</version>
|
||||||
<property name="dbURL" value="jdbc:h2:file:${basedir}/${db.dir}/AndroidSenseDM_DB;DB_CLOSE_ON_EXIT=FALSE" />
|
<type>zip</type>
|
||||||
|
<overWrite>true</overWrite>
|
||||||
<mkdir dir="${basedir}/${db.dir}" />
|
<outputDirectory>
|
||||||
|
${project.build.directory}/maven-shared-archive-resources/carbonapps
|
||||||
<sql driver="org.h2.Driver" url="${dbURL}" userid="${userid}" password="${password}" autocommit="true" onerror="continue">
|
</outputDirectory>
|
||||||
<classpath refid="maven.dependency.classpath" />
|
<includes>**/*</includes>
|
||||||
<classpath refid="maven.compile.classpath" />
|
</artifactItem>
|
||||||
<classpath refid="maven.runtime.classpath" />
|
</artifactItems>
|
||||||
|
</configuration>
|
||||||
<fileset file="${basedir}/src/main/resources/dbscripts/h2.sql" />
|
</execution>
|
||||||
</sql>
|
<execution>
|
||||||
<echo message="##################### END ####################" />
|
<id>unpack-analytics</id>
|
||||||
</tasks>
|
<phase>package</phase>
|
||||||
</configuration>
|
<goals>
|
||||||
</execution>
|
<goal>unpack</goal>
|
||||||
</executions>
|
</goals>
|
||||||
</plugin>
|
<configuration>
|
||||||
|
<artifactItems>
|
||||||
|
<artifactItem>
|
||||||
|
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.device.mgt.iot.analytics</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>zip</type>
|
||||||
|
<overWrite>true</overWrite>
|
||||||
|
<outputDirectory>
|
||||||
|
${project.build.directory}/maven-shared-archive-resources/carbonapps
|
||||||
|
</outputDirectory>
|
||||||
|
<includes>**/*</includes>
|
||||||
|
</artifactItem>
|
||||||
|
</artifactItems>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>unpack-geo</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>unpack</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<artifactItems>
|
||||||
|
<artifactItem>
|
||||||
|
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.iot.geo.dashboard</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>zip</type>
|
||||||
|
<overWrite>true</overWrite>
|
||||||
|
<outputDirectory>
|
||||||
|
${project.build.directory}/maven-shared-archive-resources/carbonapps
|
||||||
|
</outputDirectory>
|
||||||
|
<includes>**/*</includes>
|
||||||
|
</artifactItem>
|
||||||
|
</artifactItems>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.wso2.maven</groupId>
|
<groupId>org.wso2.maven</groupId>
|
||||||
@ -210,10 +195,6 @@
|
|||||||
<propertyDef>org.eclipse.equinox.p2.type.group:true</propertyDef>
|
<propertyDef>org.eclipse.equinox.p2.type.group:true</propertyDef>
|
||||||
</properties>
|
</properties>
|
||||||
</adviceFile>
|
</adviceFile>
|
||||||
<importFeatures>
|
|
||||||
<importFeatureDef>org.wso2.carbon.core.server:${carbon.kernel.version}</importFeatureDef>
|
|
||||||
<importFeatureDef>org.wso2.carbon.device.mgt.server:${carbon.devicemgt.version}</importFeatureDef>
|
|
||||||
</importFeatures>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
|
|||||||
@ -1,46 +0,0 @@
|
|||||||
<!--
|
|
||||||
~ Copyright (c) 2015, 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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<datasources-configuration xmlns:svns="http://org.wso2.securevault/configuration">
|
|
||||||
<providers>
|
|
||||||
<provider>org.wso2.carbon.ndatasource.rdbms.RDBMSDataSourceReader</provider>
|
|
||||||
</providers>
|
|
||||||
<datasources>
|
|
||||||
<datasource>
|
|
||||||
<name>AndroidSenseDM_DB</name>
|
|
||||||
<description>The datasource used for the Android Sense database</description>
|
|
||||||
<jndiConfig>
|
|
||||||
<name>jdbc/AndroidSenseDM_DB</name>
|
|
||||||
</jndiConfig>
|
|
||||||
<definition type="RDBMS">
|
|
||||||
<configuration>
|
|
||||||
<url>jdbc:h2:repository/database/AndroidSenseDM_DB;DB_CLOSE_ON_EXIT=FALSE
|
|
||||||
</url>
|
|
||||||
<username>wso2carbon</username>
|
|
||||||
<password>wso2carbon</password>
|
|
||||||
<driverClassName>org.h2.Driver</driverClassName>
|
|
||||||
<maxActive>50</maxActive>
|
|
||||||
<maxWait>60000</maxWait>
|
|
||||||
<testOnBorrow>true</testOnBorrow>
|
|
||||||
<validationQuery>SELECT 1</validationQuery>
|
|
||||||
<validationInterval>30000</validationInterval>
|
|
||||||
</configuration>
|
|
||||||
</definition>
|
|
||||||
</datasource>
|
|
||||||
</datasources>
|
|
||||||
</datasources-configuration>
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
-- Table `ANDROID_DEVICE`
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
CREATE TABLE IF NOT EXISTS `ANDROID_SENSE_DEVICE` (
|
|
||||||
`ANDROID_DEVICE_ID` VARCHAR(45) NOT NULL ,
|
|
||||||
`DEVICE_NAME` VARCHAR(100) NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`ANDROID_DEVICE_ID`) );
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
-- Table `ANDROID_DEVICE`
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
CREATE TABLE IF NOT EXISTS ANDROID_SENSE_DEVICE (
|
|
||||||
ANDROID_DEVICE_ID VARCHAR(45) NOT NULL ,
|
|
||||||
DEVICE_NAME VARCHAR(100) NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (ANDROID_DEVICE_ID) );
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
-- -----------------------------------------------------
|
|
||||||
-- Table `ANDROID_DEVICE`
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
CREATE TABLE IF NOT EXISTS `ANDROID_SENSE_DEVICE` (
|
|
||||||
`ANDROID_DEVICE_ID` VARCHAR(45) NOT NULL ,
|
|
||||||
`DEVICE_NAME` VARCHAR(100) NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`ANDROID_DEVICE_ID`) )
|
|
||||||
ENGINE = InnoDB;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
-- Table `ANDROID_DEVICE`
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
CREATE TABLE ANDROID_SENSE_DEVICE (
|
|
||||||
ANDROID_DEVICE_ID VARCHAR(45) NOT NULL ,
|
|
||||||
DEVICE_NAME VARCHAR(100) NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (ANDROID_DEVICE_ID) );
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
-- Table `ANDROID_DEVICE`
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
CREATE TABLE IF NOT EXISTS ANDROID_SENSE_DEVICE (
|
|
||||||
ANDROID_DEVICE_ID VARCHAR(45) NOT NULL ,
|
|
||||||
DEVICE_NAME VARCHAR(100) NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (ANDROID_DEVICE_ID));
|
|
||||||
@ -1,19 +0,0 @@
|
|||||||
instructions.configure = \
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/devicetypes/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/devicetypes/android_sense/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/deployment/server/webapps/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.backend_${feature.version}/webapps/,target:${installFolder}/../../../repository/deployment/server/webapps/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.backend_${feature.version}/dbscripts/,target:${installFolder}/../../../dbscripts/cdm/plugins/android_sense,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.backend_${feature.version}/datasources/,target:${installFolder}/../../../repository/conf/datasources/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/deployment/server/devicetypes/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.backend_${feature.version}/devicetypes/,target:${installFolder}/../../../repository/deployment/server/devicetypes/,overwrite:true);\
|
|
||||||
|
|
||||||
instructions.unconfigure = \
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/webapps/android_sense.war);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/webapps/android_sense);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../dbscripts/cdm/plugins/android_sense);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/resources/sketches/android_sense);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/conf/datasources/androidsense-datasources.xml);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/database/AndroidSenseDM_DB.h2.db);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/devicetypes/android_sense.xml);\
|
|
||||||
@ -54,12 +54,6 @@
|
|||||||
|
|
||||||
<PushNotificationProvider type="MQTT">
|
<PushNotificationProvider type="MQTT">
|
||||||
<FileBasedProperties>true</FileBasedProperties>
|
<FileBasedProperties>true</FileBasedProperties>
|
||||||
<!--if file based properties is set to false then the configuration will be picked from platform configuration-->
|
|
||||||
<ConfigProperties>
|
|
||||||
<Property Name="mqttAdapterName">androidsense.mqtt.adapter</Property>
|
|
||||||
<Property Name="qos">0</Property>
|
|
||||||
<Property Name="clearSession">true</Property>
|
|
||||||
</ConfigProperties>
|
|
||||||
</PushNotificationProvider>
|
</PushNotificationProvider>
|
||||||
|
|
||||||
<License>
|
<License>
|
||||||
|
|||||||
@ -4,18 +4,14 @@ org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../reso
|
|||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/devicetypes/android_sense/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/devicetypes/android_sense/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/webapps/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/webapps/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.backend_${feature.version}/webapps/,target:${installFolder}/../../deployment/server/webapps/,overwrite:true);\
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.backend_${feature.version}/webapps/,target:${installFolder}/../../deployment/server/webapps/,overwrite:true);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.backend_${feature.version}/dbscripts/,target:${installFolder}/../../../dbscripts/cdm/plugins/android_sense,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.backend_${feature.version}/datasources/,target:${installFolder}/../../conf/datasources/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../database/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.backend_${feature.version}/database/,target:${installFolder}/../../database/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/devicetypes/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/devicetypes/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.backend_${feature.version}/devicetypes/,target:${installFolder}/../../deployment/server/devicetypes/,overwrite:true);\
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.backend_${feature.version}/devicetypes/,target:${installFolder}/../../deployment/server/devicetypes/,overwrite:true);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.backend_${feature.version}/receiver/,target:${installFolder}/../../resources/devicetypes/android_sense/receiver/,overwrite:true);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.backend_${feature.version}/streams/,target:${installFolder}/../../resources/devicetypes/android_sense/streams/,overwrite:true);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.backend_${feature.version}/carbonapps/,target:${installFolder}/../../resources/devicetypes/android_sense/,overwrite:true);\
|
||||||
|
|
||||||
instructions.unconfigure = \
|
instructions.unconfigure = \
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/webapps/android_sense.war);\
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/webapps/android_sense.war);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/webapps/android_sense);\
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/webapps/android_sense);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../dbscripts/cdm/plugins/android_sense);\
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/devicetypes/android_sense.xml);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../resources/sketches/android_sense);\
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../resources/devicetypes/android_sense);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../conf/datasources/androidsense-datasources.xml);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../database/AndroidSenseDM_DB.h2.db);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/devicetypes/android_sense.xml);\
|
|
||||||
@ -20,8 +20,6 @@
|
|||||||
<eventReceiver name="android_sense_receiver-${tenant-domain}" statistics="disable" trace="disable" xmlns="http://wso2.org/carbon/eventreceiver">
|
<eventReceiver name="android_sense_receiver-${tenant-domain}" statistics="disable" trace="disable" xmlns="http://wso2.org/carbon/eventreceiver">
|
||||||
<from eventAdapterType="oauth-mqtt">
|
<from eventAdapterType="oauth-mqtt">
|
||||||
<property name="topic">${tenant-domain}/android_sense/+/data</property>
|
<property name="topic">${tenant-domain}/android_sense/+/data</property>
|
||||||
<property name="contentValidator">iot-mqtt</property>
|
|
||||||
<property name="cleanSession">true</property>
|
|
||||||
<property name="clientId">android_sense_receiver-${tenant-domain}</property>
|
<property name="clientId">android_sense_receiver-${tenant-domain}</property>
|
||||||
</from>
|
</from>
|
||||||
<mapping customMapping="disable" type="json"/>
|
<mapping customMapping="disable" type="json"/>
|
||||||
@ -0,0 +1,63 @@
|
|||||||
|
{
|
||||||
|
"name": "org.wso2.iot.android.sense",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"nickName": "android_sense_stream",
|
||||||
|
"description": "This hold the device type stream of android sense",
|
||||||
|
"metaData": [
|
||||||
|
{"name": "owner", "type": "STRING"},
|
||||||
|
{"name": "deviceId", "type": "STRING"},
|
||||||
|
{"name": "type", "type": "STRING"},
|
||||||
|
{"name": "timestamp", "type": "LONG"}
|
||||||
|
],
|
||||||
|
"payloadData": [
|
||||||
|
{"name": "battery", "type": "INT"},
|
||||||
|
{"name": "battery_state", "type": "STRING"},
|
||||||
|
{"name": "battery_status", "type": "STRING"},
|
||||||
|
{"name": "battery_temperature", "type": "INT"},
|
||||||
|
{"name": "gps_lat", "type": "DOUBLE"},
|
||||||
|
{"name": "gps_long", "type": "DOUBLE"},
|
||||||
|
{"name": "accelerometer_x", "type": "FLOAT"},
|
||||||
|
{"name": "accelerometer_y", "type": "FLOAT"},
|
||||||
|
{"name": "accelerometer_z", "type": "FLOAT"},
|
||||||
|
{"name": "speed_limit", "type": "FLOAT"},
|
||||||
|
{"name": "turn_way", "type": "STRING"},
|
||||||
|
{"name": "magnetic_x", "type": "FLOAT"},
|
||||||
|
{"name": "magnetic_y", "type": "FLOAT"},
|
||||||
|
{"name": "magnetic_z", "type": "FLOAT"},
|
||||||
|
{"name": "gyroscope_x", "type": "FLOAT"},
|
||||||
|
{"name": "gyroscope_y", "type": "FLOAT"},
|
||||||
|
{"name": "gyroscope_z", "type": "FLOAT"},
|
||||||
|
{"name": "light", "type": "FLOAT"},
|
||||||
|
{"name": "pressure", "type": "FLOAT"},
|
||||||
|
{"name": "proximity", "type": "FLOAT"},
|
||||||
|
{"name": "gravity_x", "type": "FLOAT"},
|
||||||
|
{"name": "gravity_y", "type": "FLOAT"},
|
||||||
|
{"name": "gravity_z", "type": "FLOAT"},
|
||||||
|
{"name": "rotation_x", "type": "FLOAT"},
|
||||||
|
{"name": "rotation_y", "type": "FLOAT"},
|
||||||
|
{"name": "rotation_z", "type": "FLOAT"},
|
||||||
|
{"name": "word", "type": "STRING"},
|
||||||
|
{"name": "word_sessionId", "type": "STRING"},
|
||||||
|
{"name": "word_status", "type": "STRING"},
|
||||||
|
{"name": "beacon_major", "type": "INT"},
|
||||||
|
{"name": "beacon_minor", "type": "INT"},
|
||||||
|
{"name": "beacon_proximity", "type": "STRING"},
|
||||||
|
{"name": "beacon_uuid", "type": "INT"},
|
||||||
|
{"name": "call_number", "type": "STRING"},
|
||||||
|
{"name": "call_type", "type": "STRING"},
|
||||||
|
{"name": "call_start_time", "type": "LONG"},
|
||||||
|
{"name": "call_end_time", "type": "LONG"},
|
||||||
|
{"name": "screen_state", "type": "STRING"},
|
||||||
|
{"name": "audio_playing", "type": "BOOL"},
|
||||||
|
{"name": "headset_on", "type": "BOOL"},
|
||||||
|
{"name": "music_volume", "type": "INT"},
|
||||||
|
{"name": "activity_type", "type": "INT"},
|
||||||
|
{"name": "confidence", "type": "INT"},
|
||||||
|
{"name": "sms_number", "type": "STRING"},
|
||||||
|
{"name": "application_name", "type": "STRING"},
|
||||||
|
{"name": "action", "type": "STRING"},
|
||||||
|
{"name": "data_type", "type": "STRING"},
|
||||||
|
{"name": "data_sent", "type": "LONG"},
|
||||||
|
{"name": "data_received", "type": "LONG"}
|
||||||
|
]
|
||||||
|
}
|
||||||
@ -42,61 +42,6 @@
|
|||||||
<artifactId>h2-database-engine</artifactId>
|
<artifactId>h2-database-engine</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>default-profile</id>
|
|
||||||
<activation>
|
|
||||||
<activeByDefault>true</activeByDefault>
|
|
||||||
</activation>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-antrun-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<phase>test</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>run</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<tasks>
|
|
||||||
<copy file="src/main/resources/default.p2.inf" tofile="src/main/resources/p2.inf" />
|
|
||||||
</tasks>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
|
|
||||||
<profile>
|
|
||||||
<id>cloud</id>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-antrun-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<phase>test</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>run</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<tasks>
|
|
||||||
<copy file="src/main/resources/cloud.p2.inf" tofile="src/main/resources/p2.inf" />
|
|
||||||
</tasks>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
|
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
@ -136,18 +81,6 @@
|
|||||||
</goals>
|
</goals>
|
||||||
<configuration>
|
<configuration>
|
||||||
<artifactItems>
|
<artifactItems>
|
||||||
<artifactItem>
|
|
||||||
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.device.mgt.iot.androidsense.analytics
|
|
||||||
</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
<type>zip</type>
|
|
||||||
<overWrite>true</overWrite>
|
|
||||||
<outputDirectory>
|
|
||||||
${project.build.directory}/maven-shared-archive-resources/carbonapps
|
|
||||||
</outputDirectory>
|
|
||||||
<includes>**/*</includes>
|
|
||||||
</artifactItem>
|
|
||||||
<artifactItem>
|
<artifactItem>
|
||||||
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
||||||
<artifactId>org.wso2.carbon.device.mgt.iot.androidsense.ui
|
<artifactId>org.wso2.carbon.device.mgt.iot.androidsense.ui
|
||||||
@ -163,85 +96,6 @@
|
|||||||
</artifactItems>
|
</artifactItems>
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
<execution>
|
|
||||||
<id>unpack-analytics</id>
|
|
||||||
<phase>package</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>unpack</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<artifactItems>
|
|
||||||
<artifactItem>
|
|
||||||
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.device.mgt.iot.analytics</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
<type>zip</type>
|
|
||||||
<overWrite>true</overWrite>
|
|
||||||
<outputDirectory>
|
|
||||||
${project.build.directory}/maven-shared-archive-resources/carbonapps
|
|
||||||
</outputDirectory>
|
|
||||||
<includes>**/*</includes>
|
|
||||||
</artifactItem>
|
|
||||||
</artifactItems>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
<execution>
|
|
||||||
<id>unpack-geo</id>
|
|
||||||
<phase>package</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>unpack</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<artifactItems>
|
|
||||||
<artifactItem>
|
|
||||||
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.iot.geo.dashboard</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
<type>zip</type>
|
|
||||||
<overWrite>true</overWrite>
|
|
||||||
<outputDirectory>
|
|
||||||
${project.build.directory}/maven-shared-archive-resources/carbonapps
|
|
||||||
</outputDirectory>
|
|
||||||
<includes>**/*</includes>
|
|
||||||
</artifactItem>
|
|
||||||
</artifactItems>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-antrun-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<!-- Creating Android Sense Plugin Management schema -->
|
|
||||||
<id>create-android-sense-plugin-mgt-schema</id>
|
|
||||||
<phase>package</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>run</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<tasks>
|
|
||||||
<echo message="########### Create Android Sense plugin Management H2 Schema ###########" />
|
|
||||||
<property name="db.dir" value="target/maven-shared-archive-resources/database" />
|
|
||||||
<property name="userid" value="wso2carbon" />
|
|
||||||
<property name="password" value="wso2carbon" />
|
|
||||||
<property name="dbURL" value="jdbc:h2:file:${basedir}/${db.dir}/AndroidSenseDM_DB;DB_CLOSE_ON_EXIT=FALSE" />
|
|
||||||
|
|
||||||
<mkdir dir="${basedir}/${db.dir}" />
|
|
||||||
|
|
||||||
<sql driver="org.h2.Driver" url="${dbURL}" userid="${userid}" password="${password}" autocommit="true" onerror="continue">
|
|
||||||
<classpath refid="maven.dependency.classpath" />
|
|
||||||
<classpath refid="maven.compile.classpath" />
|
|
||||||
<classpath refid="maven.runtime.classpath" />
|
|
||||||
|
|
||||||
<fileset file="${basedir}/src/main/resources/dbscripts/h2.sql" />
|
|
||||||
</sql>
|
|
||||||
<echo message="##################### END ####################" />
|
|
||||||
</tasks>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
@ -265,10 +119,6 @@
|
|||||||
<propertyDef>org.eclipse.equinox.p2.type.group:true</propertyDef>
|
<propertyDef>org.eclipse.equinox.p2.type.group:true</propertyDef>
|
||||||
</properties>
|
</properties>
|
||||||
</adviceFile>
|
</adviceFile>
|
||||||
<importFeatures>
|
|
||||||
<importFeatureDef>org.wso2.carbon.core.server:${carbon.kernel.version}</importFeatureDef>
|
|
||||||
<importFeatureDef>org.wso2.carbon.device.mgt.server:${carbon.devicemgt.version}</importFeatureDef>
|
|
||||||
</importFeatures>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
|
|||||||
@ -1,27 +0,0 @@
|
|||||||
instructions.configure = \
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/devicetypes/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../resources/devicetypes/android_sense/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/receiver/,target:${installFolder}/../../resources/devicetypes/android_sense/receiver/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/streams/,target:${installFolder}/../../resources/devicetypes/android_sense/streams/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/carbonapps/,target:${installFolder}/../../../repository/resources/devicetypes/android_sense/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/dbscripts/,target:${installFolder}/../../../dbscripts/cdm/plugins/android_sense,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/datasources/,target:${installFolder}/../../conf/datasources/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/jaggeryapps/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/jaggeryapps/,target:${installFolder}/../../deployment/server/jaggeryapps/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../database/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/database/,target:${installFolder}/../../database/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/devicetypes/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/devicetypes/,target:${installFolder}/../../deployment/server/devicetypes/,overwrite:true);\
|
|
||||||
|
|
||||||
instructions.unconfigure = \
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../dbscripts/cdm/plugins/android_sense);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../resources/sketches/android_sense);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../conf/datasources/androidsense-datasources.xml);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../database/AndroidSenseDM_DB.h2.db);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.device-view);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.type-view);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.analytics-view);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.platform.configuration);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.realtime.analytics-view);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/devicetypes/android_sense.xml);\
|
|
||||||
@ -1,46 +0,0 @@
|
|||||||
<!--
|
|
||||||
~ Copyright (c) 2015, 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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<datasources-configuration xmlns:svns="http://org.wso2.securevault/configuration">
|
|
||||||
<providers>
|
|
||||||
<provider>org.wso2.carbon.ndatasource.rdbms.RDBMSDataSourceReader</provider>
|
|
||||||
</providers>
|
|
||||||
<datasources>
|
|
||||||
<datasource>
|
|
||||||
<name>AndroidSenseDM_DB</name>
|
|
||||||
<description>The datasource used for the Android Sense database</description>
|
|
||||||
<jndiConfig>
|
|
||||||
<name>jdbc/AndroidSenseDM_DB</name>
|
|
||||||
</jndiConfig>
|
|
||||||
<definition type="RDBMS">
|
|
||||||
<configuration>
|
|
||||||
<url>jdbc:h2:repository/database/AndroidSenseDM_DB;DB_CLOSE_ON_EXIT=FALSE
|
|
||||||
</url>
|
|
||||||
<username>wso2carbon</username>
|
|
||||||
<password>wso2carbon</password>
|
|
||||||
<driverClassName>org.h2.Driver</driverClassName>
|
|
||||||
<maxActive>50</maxActive>
|
|
||||||
<maxWait>60000</maxWait>
|
|
||||||
<testOnBorrow>true</testOnBorrow>
|
|
||||||
<validationQuery>SELECT 1</validationQuery>
|
|
||||||
<validationInterval>30000</validationInterval>
|
|
||||||
</configuration>
|
|
||||||
</definition>
|
|
||||||
</datasource>
|
|
||||||
</datasources>
|
|
||||||
</datasources-configuration>
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
-- Table `ANDROID_DEVICE`
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
CREATE TABLE IF NOT EXISTS `ANDROID_SENSE_DEVICE` (
|
|
||||||
`ANDROID_DEVICE_ID` VARCHAR(45) NOT NULL ,
|
|
||||||
`DEVICE_NAME` VARCHAR(100) NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`ANDROID_DEVICE_ID`) );
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
-- Table `ANDROID_DEVICE`
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
CREATE TABLE IF NOT EXISTS ANDROID_SENSE_DEVICE (
|
|
||||||
ANDROID_DEVICE_ID VARCHAR(45) NOT NULL ,
|
|
||||||
DEVICE_NAME VARCHAR(100) NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (ANDROID_DEVICE_ID) );
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
-- -----------------------------------------------------
|
|
||||||
-- Table `ANDROID_DEVICE`
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
CREATE TABLE IF NOT EXISTS `ANDROID_SENSE_DEVICE` (
|
|
||||||
`ANDROID_DEVICE_ID` VARCHAR(45) NOT NULL ,
|
|
||||||
`DEVICE_NAME` VARCHAR(100) NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`ANDROID_DEVICE_ID`) )
|
|
||||||
ENGINE = InnoDB;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
-- Table `ANDROID_DEVICE`
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
CREATE TABLE ANDROID_SENSE_DEVICE (
|
|
||||||
ANDROID_DEVICE_ID VARCHAR(45) NOT NULL ,
|
|
||||||
DEVICE_NAME VARCHAR(100) NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (ANDROID_DEVICE_ID) );
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
-- Table `ANDROID_DEVICE`
|
|
||||||
-- -----------------------------------------------------
|
|
||||||
CREATE TABLE IF NOT EXISTS ANDROID_SENSE_DEVICE (
|
|
||||||
ANDROID_DEVICE_ID VARCHAR(45) NOT NULL ,
|
|
||||||
DEVICE_NAME VARCHAR(100) NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (ANDROID_DEVICE_ID));
|
|
||||||
@ -1,25 +0,0 @@
|
|||||||
instructions.configure = \
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/devicetypes/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/devicetypes/android_sense/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/receiver/,target:${installFolder}/../../../repository/resources/devicetypes/android_sense/receiver/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/streams/,target:${installFolder}/../../../repository/resources/devicetypes/android_sense/streams/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/carbonapps/,target:${installFolder}/../../../repository/resources/devicetypes/android_sense/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/dbscripts/,target:${installFolder}/../../../dbscripts/cdm/plugins/android_sense,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/datasources/,target:${installFolder}/../../../repository/conf/datasources/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/jaggeryapps/,target:${installFolder}/../../../repository/deployment/server/jaggeryapps/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/deployment/server/devicetypes/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/devicetypes/,target:${installFolder}/../../../repository/deployment/server/devicetypes/,overwrite:true);\
|
|
||||||
|
|
||||||
instructions.unconfigure = \
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../dbscripts/cdm/plugins/android_sense);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/resources/sketches/android_sense);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/conf/datasources/androidsense-datasources.xml);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/database/AndroidSenseDM_DB.h2.db);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.device-view);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.type-view);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.analytics-view);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.platform.configuration);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.realtime.analytics-view);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/devicetypes/android_sense.xml);\
|
|
||||||
@ -54,12 +54,6 @@
|
|||||||
|
|
||||||
<PushNotificationProvider type="MQTT">
|
<PushNotificationProvider type="MQTT">
|
||||||
<FileBasedProperties>true</FileBasedProperties>
|
<FileBasedProperties>true</FileBasedProperties>
|
||||||
<!--if file based properties is set to false then the configuration will be picked from platform configuration-->
|
|
||||||
<ConfigProperties>
|
|
||||||
<Property Name="mqttAdapterName">androidsense.mqtt.adapter</Property>
|
|
||||||
<Property Name="qos">0</Property>
|
|
||||||
<Property Name="clearSession">true</Property>
|
|
||||||
</ConfigProperties>
|
|
||||||
</PushNotificationProvider>
|
</PushNotificationProvider>
|
||||||
|
|
||||||
<License>
|
<License>
|
||||||
|
|||||||
@ -0,0 +1,12 @@
|
|||||||
|
instructions.configure = \
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/jaggeryapps/);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/jaggeryapps/,target:${installFolder}/../../deployment/server/jaggeryapps/,overwrite:true);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/devicetypes/);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.androidsense.ui_${feature.version}/devicetypes/,target:${installFolder}/../../deployment/server/devicetypes/,overwrite:true);\
|
||||||
|
|
||||||
|
instructions.unconfigure = \
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.device-view);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.type-view);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.analytics-view);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.platform.configuration);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.android_sense.realtime.analytics-view);\
|
||||||
@ -1,222 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "org.wso2.iot.android.sense",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"nickName": "android_sense_stream",
|
|
||||||
"description": "This hold the device type stream of android sense",
|
|
||||||
"metaData": [
|
|
||||||
{
|
|
||||||
"name": "owner",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "deviceId",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "type",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "timestamp",
|
|
||||||
"type": "LONG"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"payloadData": [
|
|
||||||
{
|
|
||||||
"name": "battery",
|
|
||||||
"type": "INT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "battery_state",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "battery_status",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "battery_temperature",
|
|
||||||
"type": "INT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gps_lat",
|
|
||||||
"type": "DOUBLE"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gps_long",
|
|
||||||
"type": "DOUBLE"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "accelerometer_x",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "accelerometer_y",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "accelerometer_z",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "speed_limit",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "turn_way",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "magnetic_x",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "magnetic_y",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "magnetic_z",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gyroscope_x",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gyroscope_y",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gyroscope_z",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "light",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "pressure",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "proximity",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gravity_x",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gravity_y",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gravity_z",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "rotation_x",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "rotation_y",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "rotation_z",
|
|
||||||
"type": "FLOAT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "word",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "word_sessionId",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "word_status",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "beacon_major",
|
|
||||||
"type": "INT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "beacon_minor",
|
|
||||||
"type": "INT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "beacon_proximity",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "beacon_uuid",
|
|
||||||
"type": "INT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "call_number",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "call_type",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "call_start_time",
|
|
||||||
"type": "LONG"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "call_end_time",
|
|
||||||
"type": "LONG"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "screen_state",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "audio_playing",
|
|
||||||
"type": "BOOL"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "headset_on",
|
|
||||||
"type": "BOOL"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "music_volume",
|
|
||||||
"type": "INT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "activity_type",
|
|
||||||
"type": "INT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "confidence",
|
|
||||||
"type": "INT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "sms_number",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "application_name",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "action",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "data_type",
|
|
||||||
"type": "STRING"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "data_sent",
|
|
||||||
"type": "LONG"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "data_received",
|
|
||||||
"type": "LONG"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -134,11 +134,6 @@
|
|||||||
<propertyDef>org.eclipse.equinox.p2.type.group:true</propertyDef>
|
<propertyDef>org.eclipse.equinox.p2.type.group:true</propertyDef>
|
||||||
</properties>
|
</properties>
|
||||||
</adviceFile>
|
</adviceFile>
|
||||||
<includedFeatures>
|
|
||||||
<includedFeatureDef>
|
|
||||||
org.wso2.carbon.devicemgt-plugins:org.wso2.carbon.device.mgt.iot.analytics.feature:${carbon.devicemgt.plugins.version}
|
|
||||||
</includedFeatureDef>
|
|
||||||
</includedFeatures>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
|
|||||||
@ -3,4 +3,4 @@ org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../anal
|
|||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.arduino.analytics_${feature.version}/carbonapps/,target:${installFolder}/../../analytics/repository/deployment/server/carbonapps/,overwrite:true);\
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.arduino.analytics_${feature.version}/carbonapps/,target:${installFolder}/../../analytics/repository/deployment/server/carbonapps/,overwrite:true);\
|
||||||
|
|
||||||
instructions.unconfigure = \
|
instructions.unconfigure = \
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../analytics/repository/deployment/server/carbonapps//arduino.car);\
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../analytics/repository/deployment/server/carbonapps/arduino.car);\
|
||||||
@ -101,6 +101,59 @@
|
|||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-dependency-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>unpack</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>unpack</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<artifactItems>
|
||||||
|
<artifactItem>
|
||||||
|
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.device.mgt.iot.arduino.analytics
|
||||||
|
</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>zip</type>
|
||||||
|
<overWrite>true</overWrite>
|
||||||
|
<outputDirectory>
|
||||||
|
${project.build.directory}/maven-shared-archive-resources/carbonapps
|
||||||
|
</outputDirectory>
|
||||||
|
<includes>**/*</includes>
|
||||||
|
</artifactItem>
|
||||||
|
</artifactItems>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>unpack-analytics</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>unpack</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<artifactItems>
|
||||||
|
<artifactItem>
|
||||||
|
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.device.mgt.iot.analytics</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>zip</type>
|
||||||
|
<overWrite>true</overWrite>
|
||||||
|
<outputDirectory>
|
||||||
|
${project.build.directory}/maven-shared-archive-resources/carbonapps
|
||||||
|
</outputDirectory>
|
||||||
|
<includes>**/*</includes>
|
||||||
|
</artifactItem>
|
||||||
|
</artifactItems>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.wso2.maven</groupId>
|
<groupId>org.wso2.maven</groupId>
|
||||||
<artifactId>carbon-p2-plugin</artifactId>
|
<artifactId>carbon-p2-plugin</artifactId>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
@ -31,7 +31,7 @@
|
|||||||
</Features>
|
</Features>
|
||||||
|
|
||||||
<ProvisioningConfig>
|
<ProvisioningConfig>
|
||||||
<SharedWithAllTenants>false</SharedWithAllTenants>
|
<SharedWithAllTenants>true</SharedWithAllTenants>
|
||||||
</ProvisioningConfig>
|
</ProvisioningConfig>
|
||||||
|
|
||||||
<License>
|
<License>
|
||||||
|
|||||||
@ -1,12 +1,18 @@
|
|||||||
instructions.configure = \
|
instructions.configure = \
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/devicetypes/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/devicetypes/);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/sketches/);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/sketches/arduino/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/deployment/server/webapps/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/deployment/server/webapps/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.arduino.backend_${feature.version}/webapps/,target:${installFolder}/../../../repository/deployment/server/webapps/,overwrite:true);\
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.arduino.backend_${feature.version}/webapps/,target:${installFolder}/../../../repository/deployment/server/webapps/,overwrite:true);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/deployment/server/devicetypes/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/deployment/server/devicetypes/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.arduino.backend_${feature.version}/devicetypes/,target:${installFolder}/../../../repository/deployment/server/devicetypes/,overwrite:true);\
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.arduino.backend_${feature.version}/devicetypes/,target:${installFolder}/../../../repository/deployment/server/devicetypes/,overwrite:true);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.arduino.backend_${feature.version}/agent/,target:${installFolder}/../../../repository/resources/sketches/arduino/,overwrite:true);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.arduino.backend_${feature.version}/carbonapps/,target:${installFolder}/../../../repository/resources/devicetypes/arduino/,overwrite:true);\
|
||||||
|
|
||||||
instructions.unconfigure = \
|
instructions.unconfigure = \
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/webapps/arduino.war);\
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/webapps/arduino.war);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/webapps/arduino);\
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/webapps/arduino);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/devicetypes/arduino.xml);\
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/devicetypes/arduino.xml);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/resources/sketches/arduino);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/resources/devicetypes/arduino.car);\
|
||||||
@ -31,7 +31,7 @@
|
|||||||
</Features>
|
</Features>
|
||||||
|
|
||||||
<ProvisioningConfig>
|
<ProvisioningConfig>
|
||||||
<SharedWithAllTenants>false</SharedWithAllTenants>
|
<SharedWithAllTenants>true</SharedWithAllTenants>
|
||||||
</ProvisioningConfig>
|
</ProvisioningConfig>
|
||||||
|
|
||||||
<License>
|
<License>
|
||||||
|
|||||||
@ -1,21 +1,13 @@
|
|||||||
instructions.configure = \
|
instructions.configure = \
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/devicetypes/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/sketches/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/sketches/arduino/);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.arduino.ui_${feature.version}/agent/,target:${installFolder}/../../../repository/resources/sketches/arduino/,overwrite:true);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.arduino.ui_${feature.version}/jaggeryapps/,target:${installFolder}/../../../repository/deployment/server/jaggeryapps/,overwrite:true);\
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.arduino.ui_${feature.version}/jaggeryapps/,target:${installFolder}/../../../repository/deployment/server/jaggeryapps/,overwrite:true);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/deployment/server/devicetypes/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/deployment/server/devicetypes/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.arduino.ui_${feature.version}/devicetypes/,target:${installFolder}/../../../repository/deployment/server/devicetypes/,overwrite:true);\
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.arduino.ui_${feature.version}/devicetypes/,target:${installFolder}/../../../repository/deployment/server/devicetypes/,overwrite:true);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.arduino.ui_${feature.version}/carbonapps/,target:${installFolder}/../../../repository/resources/devicetypes/arduino,overwrite:true);\
|
|
||||||
|
|
||||||
instructions.unconfigure = \
|
instructions.unconfigure = \
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/resources/sketches/arduino);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.arduino.device-view);\
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.arduino.device-view);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.arduino.type-view);\
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.arduino.type-view);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.arduino.analytics-view);\
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.arduino.analytics-view);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.arduino.realtime.analytics-view);\
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.arduino.realtime.analytics-view);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.arduino.platform.configuration);\
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.arduino.platform.configuration);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/resources/devicetypes/arduino.car);\
|
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/devicetypes/arduino.xml);\
|
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../../repository/deployment/server/devicetypes/arduino.xml);\
|
||||||
@ -134,11 +134,6 @@
|
|||||||
<propertyDef>org.eclipse.equinox.p2.type.group:true</propertyDef>
|
<propertyDef>org.eclipse.equinox.p2.type.group:true</propertyDef>
|
||||||
</properties>
|
</properties>
|
||||||
</adviceFile>
|
</adviceFile>
|
||||||
<includedFeatures>
|
|
||||||
<includedFeatureDef>
|
|
||||||
org.wso2.carbon.devicemgt-plugins:org.wso2.carbon.device.mgt.iot.analytics.feature:${carbon.devicemgt.plugins.version}
|
|
||||||
</includedFeatureDef>
|
|
||||||
</includedFeatures>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
instructions.configure = \
|
instructions.configure = \
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../analytics/repository/deployment/server/carbonapps/);\
|
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../analytics/repository/deployment/server/carbonapps/);\
|
||||||
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.raspberrypi.analytics_${feature.version}/carbonapps/,target:${installFolder}/../../analytics/repository/deployment/server/carbonapps/,overwrite:true);\
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.raspberrypi.analytics_${feature.version}/carbonapps/,target:${installFolder}/../../analytics/repository/deployment/server/carbonapps/,overwrite:true);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.raspberrypi.analytics_${feature.version}/receiver/,target:${installFolder}/../../analytics/repository/deployment/server/eventreceivers/,overwrite:true);\
|
||||||
|
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.iot.raspberrypi.analytics_${feature.version}/streams/,target:${installFolder}/../../analytics/repository/deployment/server/eventstreams/,overwrite:true);\
|
||||||
|
|||||||
@ -16,8 +16,11 @@
|
|||||||
~ specific language governing permissions and limitations
|
~ specific language governing permissions and limitations
|
||||||
~ under the License.
|
~ under the License.
|
||||||
-->
|
-->
|
||||||
|
<eventReceiver name="raspberrypi_receiver-carbon.super" statistics="disable" trace="disable" xmlns="http://wso2.org/carbon/eventreceiver">
|
||||||
<artifact name= "android_sense_streams" version="1.0.0" type="event/stream" serverRole="DataAnalyticsServer">
|
<from eventAdapterType="oauth-mqtt">
|
||||||
<file>org.wso2.iot.android.sense_1.0.0.json</file>
|
<property name="topic">carbon.super/raspberrypi/+/temperature</property>
|
||||||
</artifact>
|
<property name="clientId">raspberrypi_receiver-carbon.super</property>
|
||||||
|
</from>
|
||||||
|
<mapping customMapping="disable" type="json"/>
|
||||||
|
<to streamName="org.wso2.iot.raspberrypi" version="1.0.0"/>
|
||||||
|
</eventReceiver>
|
||||||
@ -103,34 +103,51 @@
|
|||||||
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-antrun-plugin</artifactId>
|
<artifactId>maven-dependency-plugin</artifactId>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<!-- Creating RaspberryPi Plugin Management schema -->
|
<id>unpack</id>
|
||||||
<id>create-raspberrypi-plugin-mgt-schema</id>
|
|
||||||
<phase>package</phase>
|
<phase>package</phase>
|
||||||
<goals>
|
<goals>
|
||||||
<goal>run</goal>
|
<goal>unpack</goal>
|
||||||
</goals>
|
</goals>
|
||||||
<configuration>
|
<configuration>
|
||||||
<tasks>
|
<artifactItems>
|
||||||
<echo message="########### Create RaspberryPi plugin Management H2 Schema ###########" />
|
<artifactItem>
|
||||||
<property name="db.dir" value="target/maven-shared-archive-resources/database" />
|
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
||||||
<property name="userid" value="wso2carbon" />
|
<artifactId>org.wso2.carbon.device.mgt.iot.raspberrypi.analytics
|
||||||
<property name="password" value="wso2carbon" />
|
</artifactId>
|
||||||
<property name="dbURL" value="jdbc:h2:file:${basedir}/${db.dir}/RaspberryPiDM_DB;DB_CLOSE_ON_EXIT=FALSE" />
|
<version>${project.version}</version>
|
||||||
|
<type>zip</type>
|
||||||
<mkdir dir="${basedir}/${db.dir}" />
|
<overWrite>true</overWrite>
|
||||||
|
<outputDirectory>
|
||||||
<sql driver="org.h2.Driver" url="${dbURL}" userid="${userid}" password="${password}" autocommit="true" onerror="continue">
|
${project.build.directory}/maven-shared-archive-resources/carbonapps
|
||||||
<classpath refid="maven.dependency.classpath" />
|
</outputDirectory>
|
||||||
<classpath refid="maven.compile.classpath" />
|
<includes>**/*</includes>
|
||||||
<classpath refid="maven.runtime.classpath" />
|
</artifactItem>
|
||||||
|
</artifactItems>
|
||||||
<fileset file="${basedir}/src/main/resources/dbscripts/h2.sql" />
|
</configuration>
|
||||||
</sql>
|
</execution>
|
||||||
<echo message="##################### END ####################" />
|
<execution>
|
||||||
</tasks>
|
<id>unpack-analytics</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>unpack</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<artifactItems>
|
||||||
|
<artifactItem>
|
||||||
|
<groupId>org.wso2.carbon.devicemgt-plugins</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.device.mgt.iot.analytics</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>zip</type>
|
||||||
|
<overWrite>true</overWrite>
|
||||||
|
<outputDirectory>
|
||||||
|
${project.build.directory}/maven-shared-archive-resources/carbonapps
|
||||||
|
</outputDirectory>
|
||||||
|
<includes>**/*</includes>
|
||||||
|
</artifactItem>
|
||||||
|
</artifactItems>
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user