diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml
index 57ec806063b..ecb5c435526 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml
@@ -22,13 +22,13 @@
apimgt-extensions
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.annotations
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
bundle
WSO2 Carbon - API Management Annotations
WSO2 Carbon - API Management Custom Annotation Module
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml
index b20fde373f7..1a951226ec3 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml
@@ -21,12 +21,12 @@
apimgt-extensions
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
org.wso2.carbon.apimgt.application.extension.api
war
WSO2 Carbon - API Application Management API
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml
index addcbda7aaa..bee95700eed 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml
@@ -22,12 +22,12 @@
apimgt-extensions
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
org.wso2.carbon.apimgt.application.extension
bundle
WSO2 Carbon - API Application Management
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/src/main/java/org/wso2/carbon/apimgt/application/extension/APIManagementProviderServiceImpl.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/src/main/java/org/wso2/carbon/apimgt/application/extension/APIManagementProviderServiceImpl.java
index bc92961f64d..7f3def1ccda 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/src/main/java/org/wso2/carbon/apimgt/application/extension/APIManagementProviderServiceImpl.java
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/src/main/java/org/wso2/carbon/apimgt/application/extension/APIManagementProviderServiceImpl.java
@@ -84,109 +84,118 @@ public class APIManagementProviderServiceImpl implements APIManagementProviderSe
String keyType, String username,
boolean isAllowedAllDomains, String validityTime)
throws APIManagerException {
- StoreClient storeClient = APIApplicationManagerExtensionDataHolder.getInstance().getIntegrationClientService()
- .getStoreClient();
+ StoreClient storeClient =
+ APIApplicationManagerExtensionDataHolder.getInstance().getIntegrationClientService()
+ .getStoreClient();
String tenantDomain = PrivilegedCarbonContext.getThreadLocalCarbonContext()
.getTenantDomain();
+ try {
+ ApplicationList applicationList = storeClient.getApplications()
+ .applicationsGet("", applicationName, 1, 0, CONTENT_TYPE, null);
+ Application application;
+ if (applicationList == null || applicationList.getList() == null || applicationList.getList().size() == 0) {
+ //create application;
+ application = new Application();
+ application.setName(applicationName);
+ application.setSubscriber(username);
+ application.setDescription("");
+ application.setThrottlingTier(ApiApplicationConstants.DEFAULT_TIER);
+ application.setGroupId("");
+ application = storeClient.getIndividualApplication().applicationsPost(application, CONTENT_TYPE);
+ } else {
+ ApplicationInfo applicationInfo = applicationList.getList().get(0);
+ application = storeClient.getIndividualApplication()
+ .applicationsApplicationIdGet(applicationInfo.getApplicationId(), CONTENT_TYPE, null, null);
+ }
+ if (application == null) {
+ throw new APIManagerException(
+ "Api application creation failed for " + applicationName + " to the user " + username);
+ }
- ApplicationList applicationList = storeClient.getApplications()
- .applicationsGet("", applicationName, 1, 0, CONTENT_TYPE, null);
- Application application;
- if (applicationList == null || applicationList.getList() == null || applicationList.getList().size() == 0) {
- //create application;
- application = new Application();
- application.setName(applicationName);
- application.setSubscriber(username);
- application.setDescription("");
- application.setThrottlingTier(ApiApplicationConstants.DEFAULT_TIER);
- application.setGroupId("");
- application = storeClient.getIndividualApplication().applicationsPost(application, CONTENT_TYPE);
- } else {
- ApplicationInfo applicationInfo = applicationList.getList().get(0);
- application = storeClient.getIndividualApplication()
- .applicationsApplicationIdGet(applicationInfo.getApplicationId(), CONTENT_TYPE, null, null);
- }
- if (application == null) {
- throw new APIManagerException (
- "Api application creation failed for " + applicationName + " to the user " + username);
- }
-
- SubscriptionList subscriptionList = storeClient.getSubscriptions().subscriptionsGet
- (null, application.getApplicationId(), "", 0, 100, CONTENT_TYPE, null);
- List needToSubscribe = new ArrayList<>();
- // subscribe to apis.
- if (tags != null && tags.length > 0) {
- for (String tag: tags) {
- APIList apiList = storeClient.getApis().apisGet(MAX_API_PER_TAG, 0, tenantDomain, "tag:" + tag
- , CONTENT_TYPE, null);
- if (apiList.getList() == null || apiList.getList().size() == 0) {
- apiList = storeClient.getApis().apisGet(MAX_API_PER_TAG, 0
- , MultitenantConstants.SUPER_TENANT_DOMAIN_NAME, "tag:" + tag, CONTENT_TYPE, null);
- }
+ SubscriptionList subscriptionList = storeClient.getSubscriptions().subscriptionsGet
+ (null, application.getApplicationId(), "", 0, 100, CONTENT_TYPE, null);
+ List needToSubscribe = new ArrayList<>();
+ // subscribe to apis.
+ if (tags != null && tags.length > 0) {
+ for (String tag : tags) {
+ APIList apiList = storeClient.getApis().apisGet(MAX_API_PER_TAG, 0, tenantDomain, "tag:" + tag
+ , CONTENT_TYPE, null);
+ if (apiList.getList() == null || apiList.getList().size() == 0) {
+ apiList = storeClient.getApis().apisGet(MAX_API_PER_TAG, 0
+ , MultitenantConstants.SUPER_TENANT_DOMAIN_NAME, "tag:" + tag, CONTENT_TYPE, null);
+ }
- if (apiList.getList() != null && apiList.getList().size() > 0) {
- for (APIInfo apiInfo : apiList.getList()) {
- String id = apiInfo.getProvider().replace("@", "-AT-")
- + "-" + apiInfo.getName()+ "-" + apiInfo.getVersion();
- boolean subscriptionExist = false;
- if (subscriptionList.getList() != null && subscriptionList.getList().size() > 0) {
- for (Subscription subs : subscriptionList.getList()) {
- if (subs.getApiIdentifier().equals(id)) {
- subscriptionExist = true;
- break;
+ if (apiList.getList() != null && apiList.getList().size() > 0) {
+ for (APIInfo apiInfo : apiList.getList()) {
+ String id = apiInfo.getProvider().replace("@", "-AT-")
+ + "-" + apiInfo.getName() + "-" + apiInfo.getVersion();
+ boolean subscriptionExist = false;
+ if (subscriptionList.getList() != null && subscriptionList.getList().size() > 0) {
+ for (Subscription subs : subscriptionList.getList()) {
+ if (subs.getApiIdentifier().equals(id)) {
+ subscriptionExist = true;
+ break;
+ }
}
}
- }
- if (!subscriptionExist) {
- Subscription subscription = new Subscription();
- //fix for APIMANAGER-5566 admin-AT-tenant1.com-Tenant1API1-1.0.0
-
- subscription.setApiIdentifier(id);
- subscription.setApplicationId(application.getApplicationId());
- subscription.tier(ApiApplicationConstants.DEFAULT_TIER);
- if (!needToSubscribe.contains(subscription)){
- needToSubscribe.add(subscription);
+ if (!subscriptionExist) {
+ Subscription subscription = new Subscription();
+ //fix for APIMANAGER-5566 admin-AT-tenant1.com-Tenant1API1-1.0.0
+
+ subscription.setApiIdentifier(id);
+ subscription.setApplicationId(application.getApplicationId());
+ subscription.tier(ApiApplicationConstants.DEFAULT_TIER);
+ if (!needToSubscribe.contains(subscription)) {
+ needToSubscribe.add(subscription);
+ }
}
}
}
}
}
- }
- if (!needToSubscribe.isEmpty()) {
- storeClient.getSubscriptionMultitpleApi().subscriptionsMultiplePost(needToSubscribe, CONTENT_TYPE);
- }
- //end of subscription
-
- List applicationKeys = application.getKeys();
- if (applicationKeys != null) {
- for (ApplicationKey applicationKey : applicationKeys) {
- if (keyType.equals(applicationKey.getKeyType().toString())) {
- ApiApplicationKey apiApplicationKey = new ApiApplicationKey();
- apiApplicationKey.setConsumerKey(applicationKey.getConsumerKey());
- apiApplicationKey.setConsumerSecret(applicationKey.getConsumerSecret());
- return apiApplicationKey;
+ if (!needToSubscribe.isEmpty()) {
+ storeClient.getSubscriptionMultitpleApi().subscriptionsMultiplePost(needToSubscribe, CONTENT_TYPE);
+ }
+ //end of subscription
+
+ List applicationKeys = application.getKeys();
+ if (applicationKeys != null) {
+ for (ApplicationKey applicationKey : applicationKeys) {
+ if (keyType.equals(applicationKey.getKeyType().toString())) {
+ if (applicationKey.getConsumerKey() != null && !applicationKey.getConsumerKey().isEmpty()) {
+ ApiApplicationKey apiApplicationKey = new ApiApplicationKey();
+ apiApplicationKey.setConsumerKey(applicationKey.getConsumerKey());
+ apiApplicationKey.setConsumerSecret(applicationKey.getConsumerSecret());
+ return apiApplicationKey;
+ }
+ }
}
}
- }
- ApplicationKeyGenerateRequest applicationKeyGenerateRequest = new ApplicationKeyGenerateRequest();
- List allowedDomains = new ArrayList<>();
- if (isAllowedAllDomains) {
- allowedDomains.add(ApiApplicationConstants.ALLOWED_DOMAINS);
- } else {
- allowedDomains.add(APIManagerUtil.getTenantDomain());
+ ApplicationKeyGenerateRequest applicationKeyGenerateRequest = new ApplicationKeyGenerateRequest();
+ List allowedDomains = new ArrayList<>();
+ if (isAllowedAllDomains) {
+ allowedDomains.add(ApiApplicationConstants.ALLOWED_DOMAINS);
+ } else {
+ allowedDomains.add(APIManagerUtil.getTenantDomain());
+ }
+ applicationKeyGenerateRequest.setAccessAllowDomains(allowedDomains);
+ applicationKeyGenerateRequest.setCallbackUrl("");
+ applicationKeyGenerateRequest.setKeyType(ApplicationKeyGenerateRequest.KeyTypeEnum.PRODUCTION);
+ applicationKeyGenerateRequest.setValidityTime(validityTime);
+
+ ApplicationKey applicationKey = storeClient.getIndividualApplication().applicationsGenerateKeysPost(
+ application.getApplicationId(), applicationKeyGenerateRequest, CONTENT_TYPE, null, null);
+ if (applicationKey.getConsumerKey() != null && !applicationKey.getConsumerKey().isEmpty()) {
+ ApiApplicationKey apiApplicationKey = new ApiApplicationKey();
+ apiApplicationKey.setConsumerKey(applicationKey.getConsumerKey());
+ apiApplicationKey.setConsumerSecret(applicationKey.getConsumerSecret());
+ return apiApplicationKey;
+ }
+ throw new APIManagerException("Failed to generate keys for tenant: " + tenantDomain);
+ } catch (FeignException e) {
+ throw new APIManagerException("Failed to create api application for tenant: " + tenantDomain, e);
}
- applicationKeyGenerateRequest.setAccessAllowDomains(allowedDomains);
- applicationKeyGenerateRequest.setCallbackUrl("");
- applicationKeyGenerateRequest.setKeyType(ApplicationKeyGenerateRequest.KeyTypeEnum.PRODUCTION);
- applicationKeyGenerateRequest.setValidityTime(validityTime);
-
- ApplicationKey applicationKey = storeClient.getIndividualApplication().applicationsGenerateKeysPost(
- application.getApplicationId(), applicationKeyGenerateRequest, CONTENT_TYPE, null, null);
- ApiApplicationKey apiApplicationKey = new ApiApplicationKey();
- apiApplicationKey.setConsumerKey(applicationKey.getConsumerKey());
- apiApplicationKey.setConsumerSecret(applicationKey.getConsumerSecret());
- return apiApplicationKey;
}
}
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml
index 322e6ea8a1a..a219d50173e 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml
@@ -21,13 +21,13 @@
apimgt-extensions
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.handlers
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
bundle
WSO2 Carbon - API Security Handler Component
WSO2 Carbon - API Management Security Handler Module
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml
index cf90b49f077..faaeec3fecd 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml
@@ -13,13 +13,13 @@
apimgt-extensions
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.integration.client
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
bundle
WSO2 Carbon - API Management Integration Client
WSO2 Carbon - API Management Integration Client
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml
index 300f5690f2e..50de0206f26 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml
@@ -13,13 +13,13 @@
apimgt-extensions
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.integration.generated.client
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
bundle
WSO2 Carbon - API Management Integration Generated Client
WSO2 Carbon - API Management Integration Client
diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml
index 5a6fd851b84..de6bca2ef15 100644
--- a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml
+++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml
@@ -22,13 +22,13 @@
apimgt-extensions
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.webapp.publisher
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
bundle
WSO2 Carbon - API Management Webapp Publisher
WSO2 Carbon - API Management Webapp Publisher
diff --git a/components/apimgt-extensions/pom.xml b/components/apimgt-extensions/pom.xml
index 9970102ead1..ab32ee8afe9 100644
--- a/components/apimgt-extensions/pom.xml
+++ b/components/apimgt-extensions/pom.xml
@@ -22,13 +22,13 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
4.0.0
apimgt-extensions
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
pom
WSO2 Carbon - API Management Extensions Component
http://wso2.org
diff --git a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml
index e0fa9b95855..0dd8d73e3bf 100644
--- a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml
+++ b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml
@@ -22,7 +22,7 @@
certificate-mgt
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml
index d1e3721b8a0..91f37cd5a35 100644
--- a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml
+++ b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml
@@ -22,7 +22,7 @@
certificate-mgt
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml
index 74a28630686..0d23d871db7 100644
--- a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml
+++ b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml
@@ -21,13 +21,13 @@
org.wso2.carbon.devicemgt
certificate-mgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.certificate.mgt.core
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
bundle
WSO2 Carbon - Certificate Management Core
WSO2 Carbon - Certificate Management Core
diff --git a/components/certificate-mgt/pom.xml b/components/certificate-mgt/pom.xml
index cfb79958f56..4c04d1b26c4 100644
--- a/components/certificate-mgt/pom.xml
+++ b/components/certificate-mgt/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
certificate-mgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
pom
WSO2 Carbon - Certificate Management Component
http://wso2.org
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml
index d1d9a1f0481..0ca0760adc5 100644
--- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml
@@ -22,7 +22,7 @@
device-mgt-extensions
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/config/DeviceStatusTaskConfiguration.java b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/config/DeviceStatusTaskConfiguration.java
new file mode 100644
index 00000000000..be240c84022
--- /dev/null
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/config/DeviceStatusTaskConfiguration.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2017, 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.extensions.device.type.deployer.config;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "DeviceStatusTaskConfig")
+public class DeviceStatusTaskConfiguration {
+
+ private boolean enabled;
+ private int frequency;
+ private int idleTimeToMarkInactive;
+ private int idleTimeToMarkUnreachable;
+
+ @XmlElement(name = "RequireStatusMonitoring", required = true)
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ @XmlElement(name = "Frequency", required = true)
+ public int getFrequency() {
+ return frequency;
+ }
+
+ public void setFrequency(int frequency) {
+ this.frequency = frequency;
+ }
+
+ @XmlElement(name = "IdleTimeToMarkInactive", required = true)
+ public int getIdleTimeToMarkInactive() {
+ return idleTimeToMarkInactive;
+ }
+
+ public void setIdleTimeToMarkInactive(int idleTimeToMarkInactive) {
+ this.idleTimeToMarkInactive = idleTimeToMarkInactive;
+ }
+
+ @XmlElement(name = "IdleTimeToMarkUnreachable", required = true)
+ public int getIdleTimeToMarkUnreachable() {
+ return idleTimeToMarkUnreachable;
+ }
+
+ public void setIdleTimeToMarkUnreachable(int idleTimeToMarkUnreachable) {
+ this.idleTimeToMarkUnreachable = idleTimeToMarkUnreachable;
+ }
+}
\ No newline at end of file
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/config/DeviceTypeConfiguration.java b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/config/DeviceTypeConfiguration.java
index 00d20b4ebec..8f90ffe6a05 100644
--- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/config/DeviceTypeConfiguration.java
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/config/DeviceTypeConfiguration.java
@@ -18,7 +18,12 @@
*/
package org.wso2.carbon.device.mgt.extensions.device.type.deployer.config;
-import javax.xml.bind.annotation.*;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlAccessType;
import java.util.List;
@@ -40,6 +45,7 @@ import java.util.List;
* <element name="DataSource" type="{}DataSource"/>
* <element name="PolicyMonitoring" type="{}PolicyMonitoring"/>
* <element name="DeviceAuthorizationConfig" type="{}DeviceAuthorizationConfig"/>
+ * <element name="DeviceStatusTaskConfig" type="{}DeviceStatusTaskConfig"/>
* </sequence>
* <attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" />
* </restriction>
@@ -67,6 +73,8 @@ public class DeviceTypeConfiguration {
protected DataSource dataSource;
@XmlElement(name = "TaskConfiguration", required = true)
private TaskConfiguration taskConfiguration;
+ @XmlElement(name = "DeviceStatusTaskConfig")
+ private DeviceStatusTaskConfiguration deviceStatusTaskConfiguration;
@XmlElement(name = "DeviceAuthorizationConfig", required = true)
protected DeviceAuthorizationConfig deviceAuthorizationConfig;
@XmlAttribute(name = "name")
@@ -85,9 +93,29 @@ public class DeviceTypeConfiguration {
this.operations = operations;
}
+ /**
+ * Gets the value of the deviceStatusTaskConfiguration property.
+ *
+ * @return
+ * possible object is
+ * {@link DeviceStatusTaskConfiguration }
+ *
+ */
+ public DeviceStatusTaskConfiguration getDeviceStatusTaskConfiguration() {
+ return deviceStatusTaskConfiguration;
+ }
-
-
+ /**
+ * Sets the value of the deviceStatusTaskConfiguration property.
+ *
+ * @param deviceStatusTaskConfiguration
+ * allowed object is
+ * {@link DeviceStatusTaskConfiguration }
+ *
+ */
+ public void setDeviceStatusTaskConfiguration(DeviceStatusTaskConfiguration deviceStatusTaskConfiguration) {
+ this.deviceStatusTaskConfiguration = deviceStatusTaskConfiguration;
+ }
/**
* Gets the value of the taskConfiguration property.
@@ -313,5 +341,4 @@ public class DeviceTypeConfiguration {
public void setDeviceAuthorizationConfig(DeviceAuthorizationConfig value) {
this.deviceAuthorizationConfig = value;
}
-
-}
+}
\ No newline at end of file
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/template/DeviceTypeManagerService.java b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/template/DeviceTypeManagerService.java
index 6db5d88054d..3fc29ccaa8e 100644
--- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/template/DeviceTypeManagerService.java
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/template/DeviceTypeManagerService.java
@@ -25,6 +25,7 @@ import org.wso2.carbon.device.mgt.common.DeviceManager;
import org.wso2.carbon.device.mgt.common.InitialOperationConfig;
import org.wso2.carbon.device.mgt.common.MonitoringOperation;
import org.wso2.carbon.device.mgt.common.OperationMonitoringTaskConfig;
+import org.wso2.carbon.device.mgt.common.DeviceStatusTaskPluginConfig;
import org.wso2.carbon.device.mgt.common.ProvisioningConfig;
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager;
import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry;
@@ -37,6 +38,7 @@ import org.wso2.carbon.device.mgt.extensions.device.type.deployer.config.DeviceT
import org.wso2.carbon.device.mgt.extensions.device.type.deployer.config.Property;
import org.wso2.carbon.device.mgt.extensions.device.type.deployer.config.PushNotificationProvider;
import org.wso2.carbon.device.mgt.extensions.device.type.deployer.config.TaskConfiguration;
+import org.wso2.carbon.device.mgt.extensions.device.type.deployer.config.DeviceStatusTaskConfiguration;
import org.wso2.carbon.device.mgt.extensions.device.type.deployer.template.policy.mgt.DefaultPolicyMonitoringManager;
import java.util.ArrayList;
@@ -60,6 +62,7 @@ public class DeviceTypeManagerService implements DeviceManagementService {
private List monitoringOperations;
private PolicyMonitoringManager policyMonitoringManager;
private InitialOperationConfig initialOperationConfig;
+ private DeviceStatusTaskPluginConfig deviceStatusTaskPluginConfig;
public DeviceTypeManagerService(DeviceTypeConfigIdentifier deviceTypeConfigIdentifier,
DeviceTypeConfiguration deviceTypeConfiguration) {
@@ -71,6 +74,8 @@ public class DeviceTypeManagerService implements DeviceManagementService {
this.setOperationMonitoringConfig(deviceTypeConfiguration);
this.initialOperationConfig = new InitialOperationConfig();
this.setInitialOperationConfig(deviceTypeConfiguration);
+ this.deviceStatusTaskPluginConfig = new DeviceStatusTaskPluginConfig();
+ this.setDeviceStatusTaskPluginConfig(deviceTypeConfiguration.getDeviceStatusTaskConfiguration());
if (deviceTypeConfiguration.getPolicyMonitoring() != null ) {
this.policyMonitoringManager = new DefaultPolicyMonitoringManager();
}
@@ -174,6 +179,10 @@ public class DeviceTypeManagerService implements DeviceManagementService {
return initialOperationConfig;
}
+ public DeviceStatusTaskPluginConfig getDeviceStatusTaskPluginConfig() {
+ return deviceStatusTaskPluginConfig;
+ }
+
private void setProvisioningConfig(String tenantDomain, DeviceTypeConfiguration deviceTypeConfiguration) {
if (deviceTypeConfiguration.getProvisioningConfig() != null) {
boolean sharedWithAllTenants = deviceTypeConfiguration.getProvisioningConfig().isSharedWithAllTenants();
@@ -183,6 +192,15 @@ public class DeviceTypeManagerService implements DeviceManagementService {
}
}
+ private void setDeviceStatusTaskPluginConfig(DeviceStatusTaskConfiguration deviceStatusTaskConfiguration) {
+ if (deviceStatusTaskConfiguration != null && deviceStatusTaskConfiguration.isEnabled()) {
+ deviceStatusTaskPluginConfig.setRequireStatusMonitoring(deviceStatusTaskConfiguration.isEnabled());
+ deviceStatusTaskPluginConfig.setIdleTimeToMarkInactive(deviceStatusTaskConfiguration.getIdleTimeToMarkInactive());
+ deviceStatusTaskPluginConfig.setIdleTimeToMarkUnreachable(deviceStatusTaskConfiguration.getIdleTimeToMarkUnreachable());
+ deviceStatusTaskPluginConfig.setFrequency(deviceStatusTaskConfiguration.getFrequency());
+ }
+ }
+
protected void setInitialOperationConfig(DeviceTypeConfiguration deviceTypeConfiguration) {
if (deviceTypeConfiguration.getOperations() != null) {
List ops = deviceTypeConfiguration.getOperations();
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml
index 23101929661..a3167b5db8b 100644
--- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml
@@ -22,7 +22,7 @@
device-mgt-extensions
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml
index ad1614c7082..8b4db4831ee 100644
--- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml
@@ -22,7 +22,7 @@
device-mgt-extensions
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml
index d3a40479b09..cbe62f5659a 100644
--- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml
@@ -22,7 +22,7 @@
device-mgt-extensions
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt-extensions/pom.xml b/components/device-mgt-extensions/pom.xml
index 59a9805d34d..d0292faf3d3 100644
--- a/components/device-mgt-extensions/pom.xml
+++ b/components/device-mgt-extensions/pom.xml
@@ -22,7 +22,7 @@
carbon-devicemgt
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/pom.xml
index 7cdefed3094..821e60a06fa 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/pom.xml
@@ -3,7 +3,7 @@
org.wso2.carbon.devicemgt
device-mgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml
index 04005bbc75a..29d1de247bb 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
device-mgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml
index a538c1aebb6..2e456568d19 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml
@@ -22,7 +22,7 @@
device-mgt
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml
index e5b02c6a642..d6bdd402128 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml
@@ -21,7 +21,7 @@
device-mgt
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/DeviceStatusTaskPluginConfig.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/DeviceStatusTaskPluginConfig.java
new file mode 100644
index 00000000000..9a4a4e36ddd
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/DeviceStatusTaskPluginConfig.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2017, 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.common;
+
+/**
+ * This class holds plugin specific configurations for Device Status Monitoring Task.
+ */
+public class DeviceStatusTaskPluginConfig {
+
+ private boolean requireStatusMonitoring;
+ private int frequency;
+ private int idleTimeToMarkInactive;
+ private int idleTimeToMarkUnreachable;
+
+ public int getFrequency() {
+ return frequency;
+ }
+
+ public void setFrequency(int frequency) {
+ this.frequency = frequency;
+ }
+
+ public int getIdleTimeToMarkInactive() {
+ return idleTimeToMarkInactive;
+ }
+
+ public void setIdleTimeToMarkInactive(int idleTimeToMarkInactive) {
+ this.idleTimeToMarkInactive = idleTimeToMarkInactive;
+ }
+
+ public int getIdleTimeToMarkUnreachable() {
+ return idleTimeToMarkUnreachable;
+ }
+
+ public void setIdleTimeToMarkUnreachable(int idleTimeToMarkUnreachable) {
+ this.idleTimeToMarkUnreachable = idleTimeToMarkUnreachable;
+ }
+
+ public boolean isRequireStatusMonitoring() {
+ return requireStatusMonitoring;
+ }
+
+ public void setRequireStatusMonitoring(boolean requireStatusMonitoring) {
+ this.requireStatusMonitoring = requireStatusMonitoring;
+ }
+}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/spi/DeviceManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/spi/DeviceManagementService.java
index 7e6f7303372..7395b6f334c 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/spi/DeviceManagementService.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/spi/DeviceManagementService.java
@@ -47,6 +47,6 @@ public interface DeviceManagementService {
InitialOperationConfig getInitialOperationConfig();
-
+ DeviceStatusTaskPluginConfig getDeviceStatusTaskPluginConfig();
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml
index e4a1f9fb286..6f4578a4bd4 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
device-mgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/DeviceManagementPluginRepository.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/DeviceManagementPluginRepository.java
index ca32fa037b8..3a4006cd7cf 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/DeviceManagementPluginRepository.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/DeviceManagementPluginRepository.java
@@ -24,17 +24,24 @@ import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.DeviceTypeIdentifier;
import org.wso2.carbon.device.mgt.common.OperationMonitoringTaskConfig;
import org.wso2.carbon.device.mgt.common.ProvisioningConfig;
+import org.wso2.carbon.device.mgt.common.DeviceStatusTaskPluginConfig;
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager;
import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationProvider;
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
+import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
+import org.wso2.carbon.device.mgt.core.config.DeviceManagementConfig;
+import org.wso2.carbon.device.mgt.core.dto.DeviceType;
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementServiceComponent;
import org.wso2.carbon.device.mgt.core.internal.DeviceManagerStartupListener;
import org.wso2.carbon.device.mgt.core.internal.DeviceMonitoringOperationDataHolder;
import org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl;
import org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerRepository;
+import org.wso2.carbon.device.mgt.core.status.task.DeviceStatusTaskException;
+import org.wso2.carbon.device.mgt.core.status.task.DeviceStatusTaskManagerService;
+import org.wso2.carbon.device.mgt.core.status.task.impl.DeviceStatusTaskManagerServiceImpl;
import org.wso2.carbon.device.mgt.core.task.DeviceMgtTaskException;
import org.wso2.carbon.device.mgt.core.task.DeviceTaskManagerService;
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
@@ -46,7 +53,7 @@ import java.util.Map;
public class DeviceManagementPluginRepository implements DeviceManagerStartupListener {
private Map providers;
- private boolean isInited;
+ private boolean isInitiated;
private static final Log log = LogFactory.getLog(DeviceManagementPluginRepository.class);
private OperationManagerRepository operationManagerRepository;
@@ -58,29 +65,28 @@ public class DeviceManagementPluginRepository implements DeviceManagerStartupLis
public void addDeviceManagementProvider(DeviceManagementService provider) throws DeviceManagementException {
String deviceType = provider.getType().toLowerCase();
-
ProvisioningConfig provisioningConfig = provider.getProvisioningConfig();
String tenantDomain = provisioningConfig.getProviderTenantDomain();
+ DeviceManagementConfig deviceManagementConfig = DeviceConfigurationManager.getInstance().getDeviceManagementConfig();
boolean isSharedWithAllTenants = provisioningConfig.isSharedWithAllTenants();
int tenantId = DeviceManagerUtil.getTenantId(tenantDomain);
if (tenantId == -1) {
throw new DeviceManagementException("No tenant available for tenant domain " + tenantDomain);
}
synchronized (providers) {
- try {
- if (isInited) {
- /* Initializing Device Management Service Provider */
- provider.init();
- DeviceManagerUtil.registerDeviceType(deviceType, tenantId, isSharedWithAllTenants);
- DeviceManagementDataHolder.getInstance().setRequireDeviceAuthorization(deviceType,
- provider.getDeviceManager()
- .requireDeviceAuthorization());
- registerPushNotificationStrategy(provider);
- registerMonitoringTask(provider);
+ if (isInitiated) {
+ /* Initializing Device Management Service Provider */
+ provider.init();
+ DeviceManagerUtil.registerDeviceType(deviceType, tenantId, isSharedWithAllTenants);
+ DeviceManagementDataHolder.getInstance().setRequireDeviceAuthorization(deviceType,
+ provider.getDeviceManager().
+ requireDeviceAuthorization());
+ registerPushNotificationStrategy(provider);
+ registerMonitoringTask(provider);
+ if (deviceManagementConfig != null && deviceManagementConfig.getDeviceStatusTaskConfig().isEnabled()) {
+ DeviceType deviceTypeObj = DeviceManagerUtil.getDeviceType(deviceType, tenantId);
+ registerDeviceStatusMonitoringTask(deviceTypeObj, provider);
}
- } catch (DeviceManagementException e) {
- throw new DeviceManagementException("Error occurred while adding device management provider '" +
- deviceType + "'", e);
}
if (isSharedWithAllTenants) {
DeviceTypeIdentifier deviceTypeIdentifier = new DeviceTypeIdentifier(deviceType);
@@ -94,19 +100,25 @@ public class DeviceManagementPluginRepository implements DeviceManagerStartupLis
public void removeDeviceManagementProvider(DeviceManagementService provider)
throws DeviceManagementException {
- String deviceTypeName = provider.getType().toLowerCase();
- DeviceTypeIdentifier deviceTypeIdentifier;
- ProvisioningConfig provisioningConfig = provider.getProvisioningConfig();
- if (provisioningConfig.isSharedWithAllTenants()) {
- deviceTypeIdentifier = new DeviceTypeIdentifier(deviceTypeName);
- providers.remove(deviceTypeIdentifier);
- } else {
- int providerTenantId = DeviceManagerUtil.getTenantId(provisioningConfig.getProviderTenantDomain());
- deviceTypeIdentifier = new DeviceTypeIdentifier(deviceTypeName, providerTenantId);
- providers.remove(deviceTypeIdentifier);
- }
- unregisterPushNotificationStrategy(deviceTypeIdentifier);
- unregisterMonitoringTask(provider);
+ String deviceTypeName = provider.getType().toLowerCase();
+ DeviceManagementConfig deviceManagementConfig = DeviceConfigurationManager.getInstance().getDeviceManagementConfig();
+ DeviceTypeIdentifier deviceTypeIdentifier;
+ ProvisioningConfig provisioningConfig = provider.getProvisioningConfig();
+ if (provisioningConfig.isSharedWithAllTenants()) {
+ deviceTypeIdentifier = new DeviceTypeIdentifier(deviceTypeName);
+ providers.remove(deviceTypeIdentifier);
+ } else {
+ int providerTenantId = DeviceManagerUtil.getTenantId(provisioningConfig.getProviderTenantDomain());
+ deviceTypeIdentifier = new DeviceTypeIdentifier(deviceTypeName, providerTenantId);
+ providers.remove(deviceTypeIdentifier);
+ }
+ unregisterPushNotificationStrategy(deviceTypeIdentifier);
+ unregisterMonitoringTask(provider);
+ if (deviceManagementConfig != null && deviceManagementConfig.getDeviceStatusTaskConfig().isEnabled()) {
+ DeviceType deviceTypeObj = DeviceManagerUtil.getDeviceType(deviceTypeIdentifier.getDeviceType(),
+ deviceTypeIdentifier.getTenantId());
+ unregisterDeviceStatusMonitoringTask(deviceTypeObj, provider);
+ }
}
private void unregisterPushNotificationStrategy(DeviceTypeIdentifier deviceTypeIdentifier) {
@@ -149,30 +161,30 @@ public class DeviceManagementPluginRepository implements DeviceManagerStartupLis
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(
deviceManagementService.getProvisioningConfig().getProviderTenantDomain(), true);
try {
- boolean isSharedWithAllTenants = deviceManagementService.getProvisioningConfig().isSharedWithAllTenants();
- DeviceTypeIdentifier deviceTypeIdentifier;
- if (isSharedWithAllTenants) {
- deviceTypeIdentifier = new DeviceTypeIdentifier(deviceManagementService.getType());
- } else {
- int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
- deviceTypeIdentifier = new DeviceTypeIdentifier(deviceManagementService.getType(), tenantId);
- }
+ boolean isSharedWithAllTenants = deviceManagementService.getProvisioningConfig().isSharedWithAllTenants();
+ DeviceTypeIdentifier deviceTypeIdentifier;
+ if (isSharedWithAllTenants) {
+ deviceTypeIdentifier = new DeviceTypeIdentifier(deviceManagementService.getType());
+ } else {
+ int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
+ deviceTypeIdentifier = new DeviceTypeIdentifier(deviceManagementService.getType(), tenantId);
+ }
- if (pushNoteConfig != null) {
- PushNotificationProvider provider = DeviceManagementDataHolder.getInstance()
- .getPushNotificationProviderRepository().getProvider(pushNoteConfig.getType());
- if (provider == null) {
- throw new DeviceManagementException(
- "No registered push notification provider found for the type: '" +
- pushNoteConfig.getType() + "'.");
+ if (pushNoteConfig != null) {
+ PushNotificationProvider provider = DeviceManagementDataHolder.getInstance()
+ .getPushNotificationProviderRepository().getProvider(pushNoteConfig.getType());
+ if (provider == null) {
+ throw new DeviceManagementException(
+ "No registered push notification provider found for the type: '" +
+ pushNoteConfig.getType() + "'.");
+ }
+ NotificationStrategy notificationStrategy = provider.getNotificationStrategy(pushNoteConfig);
+ operationManagerRepository.addOperationManager(deviceTypeIdentifier,
+ new OperationManagerImpl(deviceTypeIdentifier.getDeviceType(), notificationStrategy));
+ } else {
+ operationManagerRepository.addOperationManager(deviceTypeIdentifier,
+ new OperationManagerImpl(deviceTypeIdentifier.getDeviceType()));
}
- NotificationStrategy notificationStrategy = provider.getNotificationStrategy(pushNoteConfig);
- operationManagerRepository.addOperationManager(deviceTypeIdentifier,
- new OperationManagerImpl(deviceTypeIdentifier.getDeviceType(), notificationStrategy));
- } else {
- operationManagerRepository.addOperationManager(deviceTypeIdentifier,
- new OperationManagerImpl(deviceTypeIdentifier.getDeviceType()));
- }
} finally {
PrivilegedCarbonContext.endTenantFlow();
}
@@ -181,12 +193,10 @@ public class DeviceManagementPluginRepository implements DeviceManagerStartupLis
private void registerMonitoringTask(DeviceManagementService deviceManagementService)
throws DeviceManagementException {
try {
- DeviceTaskManagerService deviceTaskManagerService = DeviceManagementDataHolder.getInstance()
- .getDeviceTaskManagerService();
-
- OperationMonitoringTaskConfig operationMonitoringTaskConfig = deviceManagementService
- .getOperationMonitoringConfig();
-
+ DeviceTaskManagerService deviceTaskManagerService = DeviceManagementDataHolder.getInstance().
+ getDeviceTaskManagerService();
+ OperationMonitoringTaskConfig operationMonitoringTaskConfig = deviceManagementService.
+ getOperationMonitoringConfig();
if (operationMonitoringTaskConfig != null && operationMonitoringTaskConfig.isEnabled()) {
if (deviceTaskManagerService == null) {
@@ -206,10 +216,10 @@ public class DeviceManagementPluginRepository implements DeviceManagerStartupLis
private void unregisterMonitoringTask(DeviceManagementService deviceManagementService)
throws DeviceManagementException {
try {
- DeviceTaskManagerService deviceTaskManagerService = DeviceManagementDataHolder.getInstance()
- .getDeviceTaskManagerService();
- OperationMonitoringTaskConfig operationMonitoringTaskConfig = deviceManagementService
- .getOperationMonitoringConfig();
+ DeviceTaskManagerService deviceTaskManagerService = DeviceManagementDataHolder.getInstance().
+ getDeviceTaskManagerService();
+ OperationMonitoringTaskConfig operationMonitoringTaskConfig = deviceManagementService.
+ getOperationMonitoringConfig();
if (operationMonitoringTaskConfig != null) {
deviceTaskManagerService.stopTask(deviceManagementService.getType(),
deviceManagementService.getOperationMonitoringConfig());
@@ -220,6 +230,42 @@ public class DeviceManagementPluginRepository implements DeviceManagerStartupLis
}
}
+ private void registerDeviceStatusMonitoringTask(DeviceType deviceType, DeviceManagementService deviceManagementService) throws
+ DeviceManagementException {
+ DeviceTaskManagerService deviceTaskManagerService = DeviceManagementDataHolder.getInstance().
+ getDeviceTaskManagerService();
+ DeviceStatusTaskPluginConfig deviceStatusTaskPluginConfig = deviceManagementService.getDeviceStatusTaskPluginConfig();
+ if (deviceStatusTaskPluginConfig != null && deviceStatusTaskPluginConfig.isRequireStatusMonitoring()) {
+ if (deviceTaskManagerService == null) {
+ DeviceManagementDataHolder.getInstance().addDeviceStatusTaskPluginConfig(deviceType,
+ deviceStatusTaskPluginConfig);
+ } else {
+ try {
+ new DeviceStatusTaskManagerServiceImpl().startTask(deviceType, deviceStatusTaskPluginConfig);
+ } catch (DeviceStatusTaskException e) {
+ throw new DeviceManagementException("Error occurred while adding Device Status task service for '" +
+ deviceManagementService.getType() + "'", e);
+ }
+ }
+ }
+ }
+
+ private void unregisterDeviceStatusMonitoringTask(DeviceType deviceType, DeviceManagementService deviceManagementService) throws
+ DeviceManagementException {
+ DeviceStatusTaskManagerService deviceStatusTaskManagerService = DeviceManagementDataHolder.getInstance().
+ getDeviceStatusTaskManagerService();
+ DeviceStatusTaskPluginConfig deviceStatusTaskPluginConfig = deviceManagementService.getDeviceStatusTaskPluginConfig();
+ if (deviceStatusTaskPluginConfig != null && deviceStatusTaskPluginConfig.isRequireStatusMonitoring()) {
+ try {
+ DeviceManagementDataHolder.getInstance().removeDeviceStatusTaskPluginConfig(deviceType);
+ deviceStatusTaskManagerService.stopTask(deviceType, deviceStatusTaskPluginConfig);
+ } catch (DeviceStatusTaskException e) {
+ throw new DeviceManagementException("Error occurred while stopping Device Status task service for '" +
+ deviceManagementService.getType() + "'", e);
+ }
+ }
+ }
+
public OperationManager getOperationManager(String deviceType, int tenantId) {
//Priority need to be given to the tenant before public.
DeviceTypeIdentifier deviceTypeIdentifier = new DeviceTypeIdentifier(deviceType.toLowerCase(), tenantId);
@@ -242,25 +288,26 @@ public class DeviceManagementPluginRepository implements DeviceManagerStartupLis
ProvisioningConfig provisioningConfig = provider.getProvisioningConfig();
int tenantId = DeviceManagerUtil.getTenantId(provisioningConfig.getProviderTenantDomain());
DeviceManagerUtil.registerDeviceType(deviceTypeName, tenantId,
- provisioningConfig.isSharedWithAllTenants());
+ provisioningConfig.isSharedWithAllTenants());
registerPushNotificationStrategy(provider);
registerMonitoringTask(provider);
+
//TODO:
//This is a temporory fix.
//windows and IOS cannot resolve user info by extracting certs
//until fix that, use following variable to enable and disable of checking user authorization.
DeviceManagementDataHolder.getInstance().setRequireDeviceAuthorization(provider.getType(),
- provider.getDeviceManager()
- .requireDeviceAuthorization());
+ provider.getDeviceManager()
+ .requireDeviceAuthorization());
} catch (Throwable e) {
/* Throwable is caught intentionally as failure of one plugin - due to invalid start up parameters,
etc - should not block the initialization of other device management providers */
log.error("Error occurred while initializing device management provider '" +
- provider.getType() + "'", e);
+ provider.getType() + "'", e);
}
}
- this.isInited = true;
+ this.isInitiated = true;
}
}
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/DeviceManagementConfig.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/DeviceManagementConfig.java
index cc9a6256a63..5bd8a7849da 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/DeviceManagementConfig.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/DeviceManagementConfig.java
@@ -21,6 +21,7 @@ import org.wso2.carbon.device.mgt.core.config.identity.IdentityConfigurations;
import org.wso2.carbon.device.mgt.core.config.pagination.PaginationConfiguration;
import org.wso2.carbon.device.mgt.core.config.policy.PolicyConfiguration;
import org.wso2.carbon.device.mgt.core.config.push.notification.PushNotificationConfiguration;
+import org.wso2.carbon.device.mgt.core.config.status.task.DeviceStatusTaskConfig;
import org.wso2.carbon.device.mgt.core.config.task.TaskConfiguration;
import javax.xml.bind.annotation.XmlElement;
@@ -41,6 +42,7 @@ public final class DeviceManagementConfig {
private PolicyConfiguration policyConfiguration;
private PaginationConfiguration paginationConfiguration;
private PushNotificationConfiguration pushNotificationConfiguration;
+ private DeviceStatusTaskConfig deviceStatusTaskConfig;
@XmlElement(name = "ManagementRepository", required = true)
@@ -97,5 +99,14 @@ public final class DeviceManagementConfig {
public void setPushNotificationConfiguration(PushNotificationConfiguration pushNotificationConfiguration) {
this.pushNotificationConfiguration = pushNotificationConfiguration;
}
+
+ @XmlElement(name = "DeviceStatusTaskConfig", required = true)
+ public DeviceStatusTaskConfig getDeviceStatusTaskConfig() {
+ return deviceStatusTaskConfig;
+ }
+
+ public void setDeviceStatusTaskConfig(DeviceStatusTaskConfig deviceStatusTaskConfig) {
+ this.deviceStatusTaskConfig = deviceStatusTaskConfig;
+ }
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/status/task/DeviceStatusTaskConfig.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/status/task/DeviceStatusTaskConfig.java
new file mode 100644
index 00000000000..03cf0643a1c
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/status/task/DeviceStatusTaskConfig.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2017, 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.core.config.status.task;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "DeviceStatusTaskConfig")
+public class DeviceStatusTaskConfig {
+
+ private boolean enabled;
+
+ @XmlElement(name = "Enable", required = true)
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/EnrollmentDAO.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/EnrollmentDAO.java
index d59d5733f4e..28095433684 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/EnrollmentDAO.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/EnrollmentDAO.java
@@ -32,11 +32,15 @@ public interface EnrollmentDAO {
int updateEnrollment(EnrolmentInfo enrolmentInfo) throws DeviceManagementDAOException;
+ boolean updateEnrollmentStatus(List enrolmentInfos) throws DeviceManagementDAOException;
+
int removeEnrollment(int deviceId, String currentOwner, int tenantId) throws DeviceManagementDAOException;
boolean setStatus(int enrolmentId, String currentOwner, Status status,
int tenantId) throws DeviceManagementDAOException;
+ boolean setStatus(int enrolmentId, Status status, int tenantId) throws DeviceManagementDAOException;
+
Status getStatus(int deviceId, String currentOwner, int tenantId) throws DeviceManagementDAOException;
EnrolmentInfo getEnrollment(int deviceId, String currentUser, int tenantId) throws DeviceManagementDAOException;
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/EnrollmentDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/EnrollmentDAOImpl.java
index 9e8bd4680a2..bba8424dc03 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/EnrollmentDAOImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/EnrollmentDAOImpl.java
@@ -23,6 +23,7 @@ import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.core.dao.EnrollmentDAO;
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
+import org.wso2.carbon.device.mgt.core.operation.mgt.OperationMapping;
import java.sql.*;
import java.util.ArrayList;
@@ -115,6 +116,42 @@ public class EnrollmentDAOImpl implements EnrollmentDAO {
}
}
+ @Override
+ public boolean updateEnrollmentStatus(List enrolmentInfos) throws DeviceManagementDAOException {
+ Connection conn;
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ boolean status = false;
+ int updateStatus = -1;
+ try {
+ conn = this.getConnection();
+ String sql = "UPDATE DM_ENROLMENT SET STATUS = ? WHERE ID = ?";
+ stmt = conn.prepareStatement(sql);
+ if (conn.getMetaData().supportsBatchUpdates()) {
+ for (EnrolmentInfo enrolmentInfo : enrolmentInfos) {
+ stmt.setString(1, enrolmentInfo.getStatus().toString());
+ stmt.setInt(2, enrolmentInfo.getId());
+ stmt.addBatch();
+ }
+ updateStatus = stmt.executeBatch().length;
+ } else {
+ for (EnrolmentInfo enrolmentInfo : enrolmentInfos) {
+ stmt.setString(1, enrolmentInfo.getStatus().toString());
+ stmt.setInt(2, enrolmentInfo.getId());
+ updateStatus = stmt.executeUpdate();
+ }
+ }
+ if (updateStatus > 0) {
+ status = true;
+ }
+ } catch (SQLException e) {
+ throw new DeviceManagementDAOException("Error occurred while updating enrolment status of given device-list.", e);
+ } finally {
+ DeviceManagementDAOUtil.cleanupResources(stmt, rs);
+ }
+ return status;
+ }
+
@Override
public int removeEnrollment(int deviceId, String currentOwner,
@@ -166,6 +203,26 @@ public class EnrollmentDAOImpl implements EnrollmentDAO {
return true;
}
+ @Override
+ public boolean setStatus(int enrolmentID, EnrolmentInfo.Status status, int tenantId) throws DeviceManagementDAOException {
+ Connection conn;
+ PreparedStatement stmt = null;
+ try {
+ conn = this.getConnection();
+ String sql = "UPDATE DM_ENROLMENT SET STATUS = ? WHERE ID = ? AND TENANT_ID = ?";
+ stmt = conn.prepareStatement(sql);
+ stmt.setString(1, status.toString());
+ stmt.setInt(2, enrolmentID);
+ stmt.setInt(3, tenantId);
+ stmt.executeUpdate();
+ } catch (SQLException e) {
+ throw new DeviceManagementDAOException("Error occurred while setting the status of device enrolment", e);
+ } finally {
+ DeviceManagementDAOUtil.cleanupResources(stmt, null);
+ }
+ return true;
+ }
+
@Override
public EnrolmentInfo.Status getStatus(int deviceId, String currentOwner,
int tenantId) throws DeviceManagementDAOException {
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementDataHolder.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementDataHolder.java
index f7e8e0a177d..d043c509c11 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementDataHolder.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementDataHolder.java
@@ -18,6 +18,8 @@
package org.wso2.carbon.device.mgt.core.internal;
+import org.wso2.carbon.device.mgt.common.DeviceStatusTaskPluginConfig;
+import org.wso2.carbon.device.mgt.common.DeviceTypeIdentifier;
import org.wso2.carbon.device.mgt.common.OperationMonitoringTaskConfig;
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager;
import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService;
@@ -25,9 +27,11 @@ import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManager;
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager;
import org.wso2.carbon.device.mgt.core.app.mgt.config.AppManagementConfig;
import org.wso2.carbon.device.mgt.core.config.license.LicenseConfig;
+import org.wso2.carbon.device.mgt.core.dto.DeviceType;
import org.wso2.carbon.device.mgt.core.push.notification.mgt.PushNotificationProviderRepository;
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService;
+import org.wso2.carbon.device.mgt.core.status.task.DeviceStatusTaskManagerService;
import org.wso2.carbon.device.mgt.core.task.DeviceTaskManagerService;
import org.wso2.carbon.email.sender.core.service.EmailSenderService;
import org.wso2.carbon.ntask.core.service.TaskService;
@@ -36,6 +40,7 @@ import org.wso2.carbon.user.core.service.RealmService;
import org.wso2.carbon.user.core.tenant.TenantManager;
import org.wso2.carbon.utils.ConfigurationContextService;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -59,6 +64,9 @@ public class DeviceManagementDataHolder {
private EmailSenderService emailSenderService;
private PushNotificationProviderRepository pushNotificationProviderRepository;
private DeviceTaskManagerService deviceTaskManagerService;
+ private DeviceStatusTaskManagerService deviceStatusTaskManagerService;
+ private Map deviceStatusTaskPluginConfigs = Collections.synchronizedMap(
+ new HashMap());
private Map map = new HashMap<>();
@@ -191,7 +199,6 @@ public class DeviceManagementDataHolder {
this.deviceAccessAuthorizationService = deviceAccessAuthorizationService;
}
-
public TaskService getTaskService() {
return taskService;
}
@@ -224,4 +231,28 @@ public class DeviceManagementDataHolder {
public void setDeviceTaskManagerService(DeviceTaskManagerService deviceTaskManagerService) {
this.deviceTaskManagerService = deviceTaskManagerService;
}
-}
+
+ public DeviceStatusTaskManagerService getDeviceStatusTaskManagerService() {
+ return deviceStatusTaskManagerService;
+ }
+
+ public void setDeviceStatusTaskManagerService(DeviceStatusTaskManagerService deviceStatusTaskManagerService) {
+ this.deviceStatusTaskManagerService = deviceStatusTaskManagerService;
+ }
+
+ public void addDeviceStatusTaskPluginConfig(DeviceType deviceType, DeviceStatusTaskPluginConfig deviceStatusTaskPluginConfig) {
+ this.deviceStatusTaskPluginConfigs.put(deviceType, deviceStatusTaskPluginConfig);
+ }
+
+ public DeviceStatusTaskPluginConfig getDeviceStatusTaskPluginConfig(DeviceTypeIdentifier deviceType) {
+ return this.deviceStatusTaskPluginConfigs.get(deviceType);
+ }
+
+ public Map getDeviceStatusTaskPluginConfigs() {
+ return this.deviceStatusTaskPluginConfigs;
+ }
+
+ public void removeDeviceStatusTaskPluginConfig(DeviceType deviceType) {
+ this.deviceStatusTaskPluginConfigs.remove(deviceType);
+ }
+}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceTaskManagerServiceComponent.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceTaskManagerServiceComponent.java
index 344d567f0f8..ae39c831097 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceTaskManagerServiceComponent.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceTaskManagerServiceComponent.java
@@ -22,11 +22,18 @@ package org.wso2.carbon.device.mgt.core.internal;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.osgi.service.component.ComponentContext;
+import org.wso2.carbon.device.mgt.common.DeviceStatusTaskPluginConfig;
import org.wso2.carbon.device.mgt.common.OperationMonitoringTaskConfig;
+import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
+import org.wso2.carbon.device.mgt.core.config.DeviceManagementConfig;
import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager;
import org.wso2.carbon.device.mgt.core.device.details.mgt.impl.DeviceInformationManagerImpl;
+import org.wso2.carbon.device.mgt.core.dto.DeviceType;
import org.wso2.carbon.device.mgt.core.search.mgt.SearchManagerService;
import org.wso2.carbon.device.mgt.core.search.mgt.impl.SearchManagerServiceImpl;
+import org.wso2.carbon.device.mgt.core.status.task.DeviceStatusTaskException;
+import org.wso2.carbon.device.mgt.core.status.task.DeviceStatusTaskManagerService;
+import org.wso2.carbon.device.mgt.core.status.task.impl.DeviceStatusTaskManagerServiceImpl;
import org.wso2.carbon.device.mgt.core.task.DeviceMgtTaskException;
import org.wso2.carbon.device.mgt.core.task.DeviceTaskManagerService;
import org.wso2.carbon.device.mgt.core.task.impl.DeviceTaskManagerServiceImpl;
@@ -47,24 +54,21 @@ import java.util.Map;
public class DeviceTaskManagerServiceComponent {
- private static Log log = LogFactory.getLog(DeviceManagementServiceComponent.class);
-
-
+ private static Log log = LogFactory.getLog(DeviceTaskManagerServiceComponent.class);
@SuppressWarnings("unused")
protected void activate(ComponentContext componentContext) {
try {
if (log.isDebugEnabled()) {
- log.debug("Initializing device details retrieving task manager bundle.");
+ log.debug("Initializing device task manager bundle.");
}
- // This will start the device details retrieving task.
- // DeviceTaskManagerService deviceTaskManagerService = new DeviceTaskManagerServiceImpl();
- // DeviceManagementDataHolder.getInstance().setDeviceTaskManagerService(
- // deviceTaskManagerService);
- // componentContext.getBundleContext().registerService(DeviceTaskManagerService.class,
- // deviceTaskManagerService, null);
-
getDeviceOperationMonitoringConfig(componentContext);
+ //Start the DeviceStatusMonitoringTask for registered DeviceTypes
+ DeviceManagementConfig deviceManagementConfig = DeviceConfigurationManager.getInstance().
+ getDeviceManagementConfig();
+ if (deviceManagementConfig != null && deviceManagementConfig.getDeviceStatusTaskConfig().isEnabled()) {
+ startDeviceStatusMonitoringTask();
+ }
componentContext.getBundleContext().registerService(DeviceInformationManager.class,
new DeviceInformationManagerImpl(), null);
@@ -72,29 +76,38 @@ public class DeviceTaskManagerServiceComponent {
componentContext.getBundleContext().registerService(SearchManagerService.class,
new SearchManagerServiceImpl(), null);
} catch (Throwable e) {
- log.error("Error occurred while initializing device details retrieving task manager service.", e);
+ log.error("Error occurred while initializing device task manager service.", e);
}
}
private void getDeviceOperationMonitoringConfig(ComponentContext componentContext)
throws DeviceMgtTaskException {
-
DeviceTaskManagerService deviceTaskManagerService = new DeviceTaskManagerServiceImpl();
-
DeviceManagementDataHolder.getInstance().setDeviceTaskManagerService(deviceTaskManagerService);
-
componentContext.getBundleContext().registerService(DeviceTaskManagerService.class,
deviceTaskManagerService, null);
-
Map deviceConfigMap = DeviceMonitoringOperationDataHolder
.getInstance().getOperationMonitoringConfigFromMap();
-
for (String platformType : new ArrayList<>(deviceConfigMap.keySet())) {
deviceTaskManagerService.startTask(platformType, deviceConfigMap.get(platformType));
deviceConfigMap.remove(platformType);
}
}
+ private void startDeviceStatusMonitoringTask() {
+ DeviceStatusTaskManagerService deviceStatusTaskManagerService = new DeviceStatusTaskManagerServiceImpl();
+ Map deviceStatusTaskPluginConfigs = DeviceManagementDataHolder.
+ getInstance().getDeviceStatusTaskPluginConfigs();
+ for (DeviceType deviceType : new ArrayList<>(deviceStatusTaskPluginConfigs.keySet())) {
+ try {
+ deviceStatusTaskManagerService.startTask(deviceType, deviceStatusTaskPluginConfigs.get(deviceType));
+ } catch (DeviceStatusTaskException e) {
+ log.error("Exception occurred while starting the DeviceStatusMonitoring Task for deviceType '" +
+ deviceType + "'", e);
+ }
+ }
+ }
+
@SuppressWarnings("unused")
protected void deactivate(ComponentContext componentContext) {
try {
@@ -105,7 +118,6 @@ public class DeviceTaskManagerServiceComponent {
}
}
-
protected void setTaskService(TaskService taskService) {
if (log.isDebugEnabled()) {
log.debug("Setting the task service.");
@@ -119,7 +131,4 @@ public class DeviceTaskManagerServiceComponent {
}
DeviceManagementDataHolder.getInstance().setTaskService(null);
}
-
-}
-
-
+}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationEnrolmentMapping.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationEnrolmentMapping.java
new file mode 100644
index 00000000000..4bccaaca929
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationEnrolmentMapping.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2017, 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.core.operation.mgt;
+
+import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
+
+/**
+ * This holds results of Pending-operations to enrolment mappings.
+ */
+public class OperationEnrolmentMapping {
+
+ int enrolmentId;
+ int tenantId;
+ long createdTime;
+ String deviceType;
+ String deviceId;
+ EnrolmentInfo.Status deviceStatus;
+
+ public int getTenantId() {
+ return tenantId;
+ }
+
+ public void setTenantId(int tenantId) {
+ this.tenantId = tenantId;
+ }
+
+ public int getEnrolmentId() {
+ return enrolmentId;
+ }
+
+ public void setEnrolmentId(int enrolmentId) {
+ this.enrolmentId = enrolmentId;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public long getCreatedTime() {
+ return createdTime;
+ }
+
+ public void setCreatedTime(long createdTime) {
+ this.createdTime = createdTime;
+ }
+
+ public EnrolmentInfo.Status getDeviceStatus() {
+ return deviceStatus;
+ }
+
+ public void setDeviceStatus(String deviceStatus) {
+ this.deviceStatus = EnrolmentInfo.Status.valueOf(deviceStatus);
+ }
+
+ public String getDeviceType() {
+ return deviceType;
+ }
+
+ public void setDeviceType(String deviceType) {
+ this.deviceType = deviceType;
+ }
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java
index a8cc3317879..7219440c91d 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java
@@ -418,12 +418,8 @@ public class OperationManagerImpl implements OperationManager {
int enrolmentId = enrolmentInfo.getId();
//Changing the enrollment status & attempt count if the device is marked as inactive or unreachable
switch (enrolmentInfo.getStatus()) {
- case ACTIVE:
- this.resetAttemptCount(enrolmentId);
- break;
case INACTIVE:
case UNREACHABLE:
- this.resetAttemptCount(enrolmentId);
this.setEnrolmentStatus(enrolmentId, EnrolmentInfo.Status.ACTIVE);
break;
}
@@ -479,12 +475,8 @@ public class OperationManagerImpl implements OperationManager {
int enrolmentId = enrolmentInfo.getId();
//Changing the enrollment status & attempt count if the device is marked as inactive or unreachable
switch (enrolmentInfo.getStatus()) {
- case ACTIVE:
- this.resetAttemptCount(enrolmentId);
- break;
case INACTIVE:
case UNREACHABLE:
- this.resetAttemptCount(enrolmentId);
this.setEnrolmentStatus(enrolmentId, EnrolmentInfo.Status.ACTIVE);
break;
}
@@ -1040,24 +1032,6 @@ public class OperationManagerImpl implements OperationManager {
return updateStatus;
}
- private boolean resetAttemptCount(int enrolmentId) throws OperationManagementException {
- boolean resetStatus;
- try {
- OperationManagementDAOFactory.beginTransaction();
- resetStatus = operationDAO.resetAttemptCount(enrolmentId);
- OperationManagementDAOFactory.commitTransaction();
- } catch (OperationManagementDAOException e) {
- OperationManagementDAOFactory.rollbackTransaction();
- throw new OperationManagementException("Error occurred while resetting attempt count of device id : '" +
- enrolmentId + "'", e);
- } catch (TransactionManagementException e) {
- throw new OperationManagementException("Error occurred while initiating a transaction", e);
- } finally {
- OperationManagementDAOFactory.closeConnection();
- }
- return resetStatus;
- }
-
private boolean isTaskScheduledOperation(Operation operation, List deviceIds) {
DeviceManagementProviderService deviceManagementProviderService = DeviceManagementDataHolder.getInstance().
getDeviceManagementProvider();
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/OperationMappingDAO.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/OperationMappingDAO.java
index 72d02ec9bc6..b28b773d7bf 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/OperationMappingDAO.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/OperationMappingDAO.java
@@ -18,10 +18,12 @@
*/
package org.wso2.carbon.device.mgt.core.operation.mgt.dao;
-import org.wso2.carbon.device.mgt.core.operation.mgt.OperationMapping;
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
+import org.wso2.carbon.device.mgt.core.operation.mgt.OperationEnrolmentMapping;
+import org.wso2.carbon.device.mgt.core.operation.mgt.OperationMapping;
import java.util.List;
+import java.util.Map;
public interface OperationMappingDAO {
@@ -34,4 +36,30 @@ public interface OperationMappingDAO {
void updateOperationMapping(List operationMappingList) throws
OperationManagementDAOException;
+ /**
+ * This method returns first pending/repeated operation available for each active enrolment of given device-type
+ * where the operation was created after the given timestamp.
+ *
+ * @param minDuration - Upper limit of Operation created time
+ * @param maxDuration - Lower limit of Operation created time
+ * @param deviceTypeId - Device Type Id of required devices
+ * @return List - List of OperationEnrolmentMapping objects containing required data
+ * @throws OperationManagementDAOException
+ */
+ List getFirstPendingOperationMappingsForActiveEnrolments(long minDuration,
+ long maxDuration, int deviceTypeId)
+ throws OperationManagementDAOException;
+
+ /**
+ * This method returns the timestamp of last completed Operation for each active enrolment of given device-type
+ * where the operation was completed after the given timestamp.
+ *
+ * @param timeStamp - Timestamp of considered time-interval
+ * @param deviceTypeId - Device Type of required devices
+ * @return List - List of OperationEnrolmentMapping objects containing required data
+ * @throws OperationManagementDAOException
+ */
+ Map getLastConnectedTimeForActiveEnrolments(long timeStamp, int deviceTypeId)
+ throws OperationManagementDAOException;
+
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/OperationMappingDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/OperationMappingDAOImpl.java
index c1fb5bd8f01..82f2cd66e75 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/OperationMappingDAOImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/OperationMappingDAOImpl.java
@@ -18,7 +18,9 @@
*/
package org.wso2.carbon.device.mgt.core.operation.mgt.dao.impl;
+import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
+import org.wso2.carbon.device.mgt.core.operation.mgt.OperationEnrolmentMapping;
import org.wso2.carbon.device.mgt.core.operation.mgt.OperationMapping;
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOException;
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOFactory;
@@ -27,8 +29,12 @@ import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationMappingDAO;
import java.sql.Connection;
import java.sql.PreparedStatement;
+import java.sql.ResultSet;
import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
public class OperationMappingDAOImpl implements OperationMappingDAO {
@@ -129,4 +135,82 @@ public class OperationMappingDAOImpl implements OperationMappingDAO {
OperationManagementDAOUtil.cleanupResources(stmt, null);
}
}
+
+ @Override
+ public List getFirstPendingOperationMappingsForActiveEnrolments(long minDuration,
+ long maxDuration, int deviceTypeId) throws OperationManagementDAOException {
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ List enrolmentOperationMappingList = null;
+ try {
+ Connection conn = OperationManagementDAOFactory.getConnection();
+ //We are specifically looking for operation mappings in 'Pending' & 'Repeated' states. Further we want
+ //devices to be active at that moment. Hence filtering by 'ACTIVE' & 'UNREACHABLE' device states.
+ String sql = "SELECT ENROLMENT_ID, D.DEVICE_IDENTIFICATION AS DEVICE_IDENTIFIER, MIN(CREATED_TIMESTAMP) " +
+ "AS CREATED_TIMESTAMP, E.STATUS AS ENROLMENT_STATUS, E.TENANT_ID FROM " +
+ "DM_ENROLMENT_OP_MAPPING AS OP INNER JOIN DM_ENROLMENT E ON OP.ENROLMENT_ID = E.ID INNER JOIN " +
+ "DM_DEVICE D ON E.DEVICE_ID = D.ID WHERE " +
+ "OP.STATUS IN ('"+ Operation.Status.PENDING.name() + "','" + Operation.Status.REPEATED.name() + "') " +
+ "AND OP.CREATED_TIMESTAMP BETWEEN ? AND ? AND E.STATUS IN ('" + EnrolmentInfo.Status.ACTIVE.name() +
+ "','" + EnrolmentInfo.Status.UNREACHABLE.name() + "') AND D.DEVICE_TYPE_ID = ? GROUP BY ENROLMENT_ID";
+ stmt = conn.prepareStatement(sql);
+ stmt.setLong(1, maxDuration);
+ stmt.setLong(2, minDuration);
+ stmt.setInt(3, deviceTypeId);
+ rs = stmt.executeQuery();
+ enrolmentOperationMappingList = new ArrayList<>();
+ while (rs.next()) {
+ OperationEnrolmentMapping enrolmentOperationMapping = this.getEnrolmentOpMapping(rs);
+ enrolmentOperationMappingList.add(enrolmentOperationMapping);
+ }
+ } catch (SQLException e) {
+ throw new OperationManagementDAOException("Error occurred while fetching pending operation mappings for " +
+ "active devices of type '" + deviceTypeId + "'", e);
+ } finally {
+ OperationManagementDAOUtil.cleanupResources(stmt, rs);
+ }
+ return enrolmentOperationMappingList;
+ }
+
+ @Override
+ public Map getLastConnectedTimeForActiveEnrolments(long timeStamp, int deviceTypeId) throws OperationManagementDAOException {
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ Map lastConnectedTimeMap = null;
+ try {
+ Connection conn = OperationManagementDAOFactory.getConnection();
+ //We are specifically looking for operation mappings in 'Pending' & 'Repeated' states. Further we want
+ //devices to be active at that moment. Hence filtering by 'ACTIVE' & 'UNREACHABLE' device states.
+ String sql = "SELECT OP.ENROLMENT_ID AS EID, MAX(OP.UPDATED_TIMESTAMP) AS LAST_CONNECTED_TIME FROM " +
+ "DM_ENROLMENT_OP_MAPPING AS OP INNER JOIN DM_ENROLMENT E ON OP.ENROLMENT_ID = E.ID INNER JOIN " +
+ "DM_DEVICE D ON E.DEVICE_ID = D.ID WHERE " +
+ "OP.STATUS = '" + Operation.Status.COMPLETED.name() + "'" +
+ "AND OP.UPDATED_TIMESTAMP >= ? AND E.STATUS IN ('" + EnrolmentInfo.Status.ACTIVE.name() +
+ "','" + EnrolmentInfo.Status.UNREACHABLE.name() + "') AND D.DEVICE_TYPE_ID = ? GROUP BY ENROLMENT_ID";
+ stmt = conn.prepareStatement(sql);
+ stmt.setLong(1, timeStamp);
+ stmt.setInt(2, deviceTypeId);
+ rs = stmt.executeQuery();
+ lastConnectedTimeMap = new HashMap<>();
+ while (rs.next()) {
+ lastConnectedTimeMap.put(rs.getInt("EID"), rs.getLong("LAST_CONNECTED_TIME"));
+ }
+ } catch (SQLException e) {
+ throw new OperationManagementDAOException("Error occurred while fetching last connected time for " +
+ "active devices of type '" + deviceTypeId + "'", e);
+ } finally {
+ OperationManagementDAOUtil.cleanupResources(stmt, rs);
+ }
+ return lastConnectedTimeMap;
+ }
+
+ private OperationEnrolmentMapping getEnrolmentOpMapping(ResultSet rs) throws SQLException {
+ OperationEnrolmentMapping enrolmentOperationMapping = new OperationEnrolmentMapping();
+ enrolmentOperationMapping.setEnrolmentId(rs.getInt("ENROLMENT_ID"));
+ enrolmentOperationMapping.setDeviceId(rs.getString("DEVICE_IDENTIFIER"));
+ enrolmentOperationMapping.setTenantId(rs.getInt("TENANT_ID"));
+ enrolmentOperationMapping.setCreatedTime(rs.getLong("CREATED_TIMESTAMP"));
+ enrolmentOperationMapping.setDeviceStatus(rs.getString("ENROLMENT_STATUS"));
+ return enrolmentOperationMapping;
+ }
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java
index 13a55476871..120d430b435 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java
@@ -351,8 +351,6 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
}
return false;
}
- DeviceType deviceType = deviceTypeDAO.getDeviceType(device.getType(), tenantId);
-
device.getEnrolmentInfo().setDateOfLastUpdate(new Date().getTime());
device.getEnrolmentInfo().setStatus(EnrolmentInfo.Status.REMOVED);
enrollmentDAO.updateEnrollment(device.getId(), device.getEnrolmentInfo(), tenantId);
@@ -2052,21 +2050,7 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
return CarbonContext.getThreadLocalCarbonContext().getTenantId();
}
-// private int getTenantId(String tenantDomain) throws DeviceManagementException {
-// RealmService realmService =
-// (RealmService) PrivilegedCarbonContext.getThreadLocalCarbonContext().getOSGiService(RealmService.class, null);
-// if (realmService == null) {
-// throw new IllegalStateException("");
-// }
-// try {
-// return realmService.getTenantManager().getTenantId(tenantDomain);
-// } catch (UserStoreException e) {
-// throw new DeviceManagementException("");
-// }
-// }
-
private DeviceManager getDeviceManager(String deviceType) {
-
DeviceManagementService deviceManagementService =
pluginRepository.getDeviceManagementService(deviceType, this.getTenantId());
if (deviceManagementService == null) {
@@ -2164,4 +2148,4 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
return defaultGroup;
}
}
-}
+}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/status/task/DeviceStatusTaskException.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/status/task/DeviceStatusTaskException.java
new file mode 100644
index 00000000000..76db9731bb6
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/status/task/DeviceStatusTaskException.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2017, 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.core.status.task;
+
+/**
+ * This exception class defines the custom exceptions thrown by the DeviceStatusMonitoringTask related components.
+ */
+public class DeviceStatusTaskException extends Exception {
+
+ private static final long serialVersionUID = -31222242646464497L;
+
+ private String errorMessage;
+
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+
+ public void setErrorMessage(String errorMessage) {
+ this.errorMessage = errorMessage;
+ }
+
+ public DeviceStatusTaskException(String msg, Exception nestedEx) {
+ super(msg, nestedEx);
+ setErrorMessage(msg);
+ }
+
+ public DeviceStatusTaskException(String message, Throwable cause) {
+ super(message, cause);
+ setErrorMessage(message);
+ }
+
+ public DeviceStatusTaskException(String msg) {
+ super(msg);
+ setErrorMessage(msg);
+ }
+
+ public DeviceStatusTaskException() {
+ super();
+ }
+
+ public DeviceStatusTaskException(Throwable cause) {
+ super(cause);
+ }
+
+}
+
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/status/task/DeviceStatusTaskManagerService.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/status/task/DeviceStatusTaskManagerService.java
new file mode 100644
index 00000000000..5cab3012ef8
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/status/task/DeviceStatusTaskManagerService.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2017, 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.core.status.task;
+
+import org.wso2.carbon.device.mgt.common.DeviceStatusTaskPluginConfig;
+import org.wso2.carbon.device.mgt.core.dto.DeviceType;
+
+/**
+ * This interface defines the methods that should be implemented by the management service of
+ * DeviceStatusMonitoringTask.
+ */
+public interface DeviceStatusTaskManagerService {
+
+ /**
+ * This method will start the task.
+ *
+ * @param deviceType - DeviceType
+ * @param deviceStatusTaskConfig - DeviceStatusTaskConfig
+ * @throws DeviceStatusTaskException
+ */
+ void startTask(DeviceType deviceType, DeviceStatusTaskPluginConfig deviceStatusTaskConfig)
+ throws DeviceStatusTaskException;
+
+ /**
+ * This method will stop the task.
+ *
+ * @param deviceType - DeviceType
+ * @param deviceStatusTaskConfig - DeviceStatusTaskConfig
+ * @throws DeviceStatusTaskException
+ */
+ void stopTask(DeviceType deviceType, DeviceStatusTaskPluginConfig deviceStatusTaskConfig)
+ throws DeviceStatusTaskException;
+
+ /**
+ * This will update the task frequency which it runs.
+ *
+ * @param deviceType
+ * @param deviceStatusTaskConfig - DeviceStatusTaskConfig
+ * @throws DeviceStatusTaskException
+ */
+ void updateTask(DeviceType deviceType, DeviceStatusTaskPluginConfig deviceStatusTaskConfig)
+ throws DeviceStatusTaskException;
+
+ /**
+ * This will check weather the task is scheduled.
+ * @param deviceType - Device Type
+ * @throws DeviceStatusTaskException
+ */
+ boolean isTaskScheduled(DeviceType deviceType) throws DeviceStatusTaskException;
+}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/status/task/impl/DeviceStatusMonitoringTask.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/status/task/impl/DeviceStatusMonitoringTask.java
new file mode 100644
index 00000000000..6bc51da2bac
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/status/task/impl/DeviceStatusMonitoringTask.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2017, 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.core.status.task.impl;
+
+import com.google.gson.Gson;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.wso2.carbon.device.mgt.common.DeviceStatusTaskPluginConfig;
+import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
+import org.wso2.carbon.device.mgt.common.TransactionManagementException;
+import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
+import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
+import org.wso2.carbon.device.mgt.core.operation.mgt.OperationEnrolmentMapping;
+import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOException;
+import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOFactory;
+import org.wso2.carbon.device.mgt.core.status.task.DeviceStatusTaskException;
+import org.wso2.carbon.ntask.core.Task;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * This implements the Task service which monitors the device activity periodically & update the device-status if
+ * necessary.
+ */
+public class DeviceStatusMonitoringTask implements Task {
+
+ private static final Log log = LogFactory.getLog(DeviceStatusMonitoringTask.class);
+ private String deviceType;
+ private DeviceStatusTaskPluginConfig deviceStatusTaskPluginConfig;
+ private int deviceTypeId = -1;
+
+ @Override
+ public void setProperties(Map properties) {
+ deviceType = properties.get(DeviceStatusTaskManagerServiceImpl.DEVICE_TYPE);
+ deviceTypeId = Integer.parseInt(properties.get(DeviceStatusTaskManagerServiceImpl.DEVICE_TYPE_ID));
+ String deviceStatusTaskConfigStr = properties.get(DeviceStatusTaskManagerServiceImpl.DEVICE_STATUS_TASK_CONFIG);
+ Gson gson = new Gson();
+ deviceStatusTaskPluginConfig = gson.fromJson(deviceStatusTaskConfigStr, DeviceStatusTaskPluginConfig.class);
+ }
+
+ @Override
+ public void init() {
+
+ }
+
+ @Override
+ public void execute() {
+ List operationEnrolmentMappings = null;
+ List enrolmentInfoTobeUpdated = new ArrayList<>();
+ Map lastActivities = null;
+ EnrolmentInfo enrolmentInfo;
+ try {
+ operationEnrolmentMappings = this.getOperationEnrolmentMappings();
+ if (operationEnrolmentMappings != null && operationEnrolmentMappings.size() > 0) {
+ lastActivities = this.getLastDeviceActivities();
+ }
+ } catch (DeviceStatusTaskException e) {
+ log.error("Error occurred while fetching OperationEnrolment mappings of deviceType '" + deviceType + "'", e);
+ }
+ for (OperationEnrolmentMapping mapping:operationEnrolmentMappings) {
+ long lastActivity = -1;
+ if (lastActivities != null && lastActivities.containsKey(mapping.getEnrolmentId())) {
+ lastActivity = lastActivities.get(mapping.getEnrolmentId());
+ }
+ EnrolmentInfo.Status newStatus = this.determineDeviceStatus(mapping, lastActivity);
+ if (newStatus != mapping.getDeviceStatus()) {
+ enrolmentInfo = new EnrolmentInfo();
+ enrolmentInfo.setId(mapping.getEnrolmentId());
+ enrolmentInfo.setStatus(newStatus);
+ enrolmentInfoTobeUpdated.add(enrolmentInfo);
+ }
+ }
+
+ if (enrolmentInfoTobeUpdated.size() > 0) {
+ try {
+ this.updateDeviceStatus(enrolmentInfoTobeUpdated);
+ } catch (DeviceStatusTaskException e) {
+ log.error("Error occurred while updating non-responsive device-status of devices of type '" + deviceType + "'",e);
+ }
+ }
+ }
+
+ private EnrolmentInfo.Status determineDeviceStatus(OperationEnrolmentMapping opMapping, long lastActivityTime) {
+ long lastPendingOpBefore = (System.currentTimeMillis()/1000) - opMapping.getCreatedTime();
+ EnrolmentInfo.Status newStatus = null;
+ if (lastPendingOpBefore >= this.deviceStatusTaskPluginConfig.getIdleTimeToMarkInactive()) {
+ newStatus = EnrolmentInfo.Status.INACTIVE;
+ } else if (lastPendingOpBefore >= this.deviceStatusTaskPluginConfig.getIdleTimeToMarkUnreachable()) {
+ newStatus = EnrolmentInfo.Status.UNREACHABLE;
+ }
+ if (lastActivityTime != -1) {
+ long lastActivityBefore = (System.currentTimeMillis()/1000) - lastActivityTime;
+ if (lastActivityBefore < lastPendingOpBefore) {
+ return opMapping.getDeviceStatus();
+ }
+ }
+ return newStatus;
+ }
+
+ private long getMinTimeWindow() {
+ return (System.currentTimeMillis()/1000) - this.deviceStatusTaskPluginConfig.getIdleTimeToMarkUnreachable();
+ }
+
+ private long getMaxTimeWindow() {
+ //Need to consider the frequency of the task as well
+ return (System.currentTimeMillis()/1000) - this.deviceStatusTaskPluginConfig.getIdleTimeToMarkInactive() -
+ this.deviceStatusTaskPluginConfig.getFrequency();
+ }
+
+ private boolean updateDeviceStatus(List enrolmentInfos) throws
+ DeviceStatusTaskException {
+ boolean updateStatus;
+ try {
+ DeviceManagementDAOFactory.beginTransaction();
+ updateStatus = DeviceManagementDAOFactory.getEnrollmentDAO().updateEnrollmentStatus(enrolmentInfos);
+ DeviceManagementDAOFactory.commitTransaction();
+ } catch (DeviceManagementDAOException e) {
+ DeviceManagementDAOFactory.rollbackTransaction();
+ throw new DeviceStatusTaskException("Error occurred while updating enrollment status of devices of type '"
+ + deviceType + "'", e);
+ } catch (TransactionManagementException e) {
+ throw new DeviceStatusTaskException("Error occurred while initiating a transaction for updating the device " +
+ "status of type '" + deviceType +"'", e);
+ } finally {
+ DeviceManagementDAOFactory.closeConnection();
+ }
+ return updateStatus;
+ }
+
+ private List getOperationEnrolmentMappings() throws DeviceStatusTaskException {
+ List operationEnrolmentMappings = null;
+ try {
+ OperationManagementDAOFactory.openConnection();
+ operationEnrolmentMappings = OperationManagementDAOFactory.
+ getOperationMappingDAO().getFirstPendingOperationMappingsForActiveEnrolments(this.getMinTimeWindow(),
+ this.getMaxTimeWindow(), this.deviceTypeId);
+ } catch (SQLException e) {
+ throw new DeviceStatusTaskException("Error occurred while getting Enrolment operation mappings for " +
+ "determining device status of deviceType '" + deviceType + "'", e);
+ } catch (OperationManagementDAOException e) {
+ throw new DeviceStatusTaskException("Error occurred obtaining a DB connection for fetching " +
+ "operation-enrolment mappings for status monitoring of deviceType '" + deviceType + "'", e);
+ } finally {
+ OperationManagementDAOFactory.closeConnection();
+ }
+ return operationEnrolmentMappings;
+ }
+
+ private Map getLastDeviceActivities() throws DeviceStatusTaskException {
+ Map lastActivities = null;
+ try {
+ OperationManagementDAOFactory.openConnection();
+ lastActivities = OperationManagementDAOFactory.
+ getOperationMappingDAO().getLastConnectedTimeForActiveEnrolments(this.getMaxTimeWindow(),
+ this.deviceTypeId);
+ } catch (SQLException e) {
+ throw new DeviceStatusTaskException("Error occurred while getting last activities for " +
+ "determining device status of deviceType '" + deviceType + "'", e);
+ } catch (OperationManagementDAOException e) {
+ throw new DeviceStatusTaskException("Error occurred obtaining a DB connection for fetching " +
+ "last activities for status monitoring of deviceType '" + deviceType + "'", e);
+ } finally {
+ OperationManagementDAOFactory.closeConnection();
+ }
+ return lastActivities;
+ }
+}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/status/task/impl/DeviceStatusTaskManagerServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/status/task/impl/DeviceStatusTaskManagerServiceImpl.java
new file mode 100644
index 00000000000..988be3f4d0c
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/status/task/impl/DeviceStatusTaskManagerServiceImpl.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2017, 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.core.status.task.impl;
+
+import com.google.gson.Gson;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.wso2.carbon.device.mgt.common.DeviceStatusTaskPluginConfig;
+import org.wso2.carbon.device.mgt.core.dto.DeviceType;
+import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
+import org.wso2.carbon.device.mgt.core.status.task.DeviceStatusTaskException;
+import org.wso2.carbon.device.mgt.core.status.task.DeviceStatusTaskManagerService;
+import org.wso2.carbon.ntask.common.TaskException;
+import org.wso2.carbon.ntask.core.TaskInfo;
+import org.wso2.carbon.ntask.core.TaskManager;
+import org.wso2.carbon.ntask.core.service.TaskService;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Implementation of DeviceStatusTaskManagerService.
+ */
+public class DeviceStatusTaskManagerServiceImpl implements DeviceStatusTaskManagerService {
+
+ private static final Log log = LogFactory.getLog(DeviceStatusTaskManagerServiceImpl.class);
+
+ public static final String DEVICE_STATUS_MONITORING_TASK_TYPE = "DEVICE_STATUS_MONITORING";
+ static final String DEVICE_TYPE = "DEVICE_TYPE";
+ static final String DEVICE_TYPE_ID = "DEVICE_TYPE_ID";
+ static final String DEVICE_STATUS_TASK_CONFIG = "DEVICE_STATUS_TASK_CONFIG";
+ private static final String TASK_CLASS = DeviceStatusMonitoringTask.class.getName();
+
+ @Override
+ public void startTask(DeviceType deviceType, DeviceStatusTaskPluginConfig deviceStatusTaskConfig)
+ throws DeviceStatusTaskException {
+ log.info("Device Status monitoring Task adding for " + deviceType.getName());
+
+ try {
+ TaskService taskService = DeviceManagementDataHolder.getInstance().getTaskService();
+ taskService.registerTaskType(DEVICE_STATUS_MONITORING_TASK_TYPE);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Device Status monitoring task is started for the device type " + deviceType.getName());
+ log.debug(
+ "Device Status monitoring task is at frequency of : " + deviceStatusTaskConfig.getFrequency());
+ }
+
+ TaskManager taskManager = taskService.getTaskManager(DEVICE_STATUS_MONITORING_TASK_TYPE);
+
+ TaskInfo.TriggerInfo triggerInfo = new TaskInfo.TriggerInfo();
+ //Convert to milli seconds
+ triggerInfo.setIntervalMillis(deviceStatusTaskConfig.getFrequency()*1000);
+ triggerInfo.setRepeatCount(-1);
+
+ Gson gson = new Gson();
+ String deviceStatusTaskConfigs = gson.toJson(deviceStatusTaskConfig);
+
+ Map properties = new HashMap<>();
+
+ properties.put(DEVICE_TYPE, deviceType.getName());
+ properties.put(DEVICE_TYPE_ID, deviceType.getId() + "");
+ properties.put(DEVICE_STATUS_TASK_CONFIG, deviceStatusTaskConfigs);
+
+ String taskName = DEVICE_STATUS_MONITORING_TASK_TYPE + "_" + deviceType.getName() + "_" + deviceType.getId();
+
+ if (!taskManager.isTaskScheduled(taskName)) {
+ TaskInfo taskInfo = new TaskInfo(taskName, TASK_CLASS, properties, triggerInfo);
+ taskManager.registerTask(taskInfo);
+ taskManager.rescheduleTask(taskInfo.getName());
+ } else {
+ throw new DeviceStatusTaskException(
+ "Device Status monitoring task is already started for this device-type : " + deviceType.getName());
+ }
+ } catch (TaskException e) {
+ throw new DeviceStatusTaskException("Error occurred while creating the Device Status monitoring task " +
+ "for device-type : " + deviceType.getName(), e);
+ }
+ }
+
+ @Override
+ public void stopTask(DeviceType deviceType, DeviceStatusTaskPluginConfig deviceStatusTaskConfig)
+ throws DeviceStatusTaskException {
+ try {
+ TaskService taskService = DeviceManagementDataHolder.getInstance().getTaskService();
+ String taskName = DEVICE_STATUS_MONITORING_TASK_TYPE + "_" + deviceType.getName() + "_" + deviceType.getId();
+ if (taskService.isServerInit()) {
+ TaskManager taskManager = taskService.getTaskManager(DEVICE_STATUS_MONITORING_TASK_TYPE);
+ taskManager.deleteTask(taskName);
+ }
+ } catch (TaskException e) {
+ throw new DeviceStatusTaskException("Error occurred while deleting the Device Status monitoring task " +
+ "for device-type : " + deviceType.getName(), e);
+ }
+ }
+
+ @Override
+ public void updateTask(DeviceType deviceType, DeviceStatusTaskPluginConfig deviceStatusTaskConfig)
+ throws DeviceStatusTaskException {
+ try {
+ TaskService taskService = DeviceManagementDataHolder.getInstance().getTaskService();
+ TaskManager taskManager = taskService.getTaskManager(DEVICE_STATUS_MONITORING_TASK_TYPE);
+ String taskName = DEVICE_STATUS_MONITORING_TASK_TYPE + "_" + deviceType + "_" + deviceType.getId();
+ if (taskManager.isTaskScheduled(taskName)) {
+ taskManager.deleteTask(taskName);
+ TaskInfo.TriggerInfo triggerInfo = new TaskInfo.TriggerInfo();
+ triggerInfo.setIntervalMillis(deviceStatusTaskConfig.getFrequency());
+ triggerInfo.setRepeatCount(-1);
+
+ Map properties = new HashMap<>();
+ properties.put(DEVICE_TYPE, deviceType.getName());
+ properties.put(DEVICE_TYPE_ID, deviceType.getId() + "");
+
+ Gson gson = new Gson();
+ String deviceStatusTaskConfigs = gson.toJson(deviceStatusTaskConfig);
+ properties.put(DEVICE_STATUS_TASK_CONFIG, deviceStatusTaskConfigs);
+
+ TaskInfo taskInfo = new TaskInfo(taskName, TASK_CLASS, properties, triggerInfo);
+
+ taskManager.registerTask(taskInfo);
+ taskManager.rescheduleTask(taskInfo.getName());
+ } else {
+ throw new DeviceStatusTaskException(
+ "Device details retrieving Device Status monitoring task has not been started for this device-type " +
+ deviceType.getName() + ". Please start the task first.");
+ }
+
+ } catch (TaskException e) {
+ throw new DeviceStatusTaskException("Error occurred while updating the Device Status monitoring " +
+ "task for device-type : " + deviceType.getName(), e);
+ }
+ }
+
+ @Override
+ public boolean isTaskScheduled(DeviceType deviceType) throws DeviceStatusTaskException {
+ String taskName = DEVICE_STATUS_MONITORING_TASK_TYPE + "_" + deviceType.getName() + "_" + deviceType.getId();
+ TaskService taskService = DeviceManagementDataHolder.getInstance().getTaskService();
+ TaskManager taskManager;
+ try {
+ taskManager = taskService.getTaskManager(DEVICE_STATUS_MONITORING_TASK_TYPE);
+ return taskManager.isTaskScheduled(taskName);
+ } catch (TaskException e) {
+ throw new DeviceStatusTaskException("Error occurred while checking Device Status monitoring task for device-type : " +
+ deviceType.getName(), e);
+ }
+ }
+}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/task/DeviceTaskManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/task/DeviceTaskManager.java
index 46128a37aa5..c4db7c3531a 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/task/DeviceTaskManager.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/task/DeviceTaskManager.java
@@ -45,7 +45,7 @@ public interface DeviceTaskManager {
// String getTaskImplementedClazz() throws DeviceMgtTaskException;
/**
- * This method checks wheather task is enabled in config file.
+ * This method checks whether task is enabled in config file.
* @return - return true or false
* @throws DeviceMgtTaskException
*/
@@ -67,7 +67,7 @@ public interface DeviceTaskManager {
// List getValidOperationNames(String deviceType) throws DeviceMgtTaskException;
/**
- * This method will check wheather give operation is added by the task.
+ * This method will check whether given operation is added by the task.
* @param opName - Operation name
* @return - true or false
* @throws DeviceMgtTaskException
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java
index c5558fe92a6..bad9d7d6288 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java
@@ -21,7 +21,13 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Document;
import org.wso2.carbon.base.MultitenantConstants;
-import org.wso2.carbon.device.mgt.common.*;
+import org.wso2.carbon.device.mgt.common.Device;
+import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
+import org.wso2.carbon.device.mgt.common.DeviceManagementException;
+import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
+import org.wso2.carbon.device.mgt.common.GroupPaginationRequest;
+import org.wso2.carbon.device.mgt.common.PaginationRequest;
+import org.wso2.carbon.device.mgt.common.TransactionManagementException;
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
@@ -48,7 +54,12 @@ import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
-import java.util.*;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
public final class DeviceManagerUtil {
@@ -136,6 +147,31 @@ public final class DeviceManagerUtil {
return status;
}
+ /**
+ * Get the DeviceType information from Database.
+ *
+ * @param typeName device type
+ * @param tenantId provider tenant Id
+ * @return DeviceType which contains info about the device-type.
+ */
+ public static DeviceType getDeviceType(String typeName, int tenantId) throws DeviceManagementException {
+ DeviceType deviceType = null;
+ try {
+ DeviceManagementDAOFactory.openConnection();
+ DeviceTypeDAO deviceTypeDAO = DeviceManagementDAOFactory.getDeviceTypeDAO();
+ deviceType = deviceTypeDAO.getDeviceType(typeName, tenantId);
+ } catch (DeviceManagementDAOException e) {
+ throw new DeviceManagementException("Error occurred while fetching the device type '"
+ + typeName + "'", e);
+ } catch (SQLException e) {
+ throw new DeviceManagementException("Error occurred while fetching the device type '"
+ + typeName + "'", e);
+ } finally {
+ DeviceManagementDAOFactory.closeConnection();
+ }
+ return deviceType;
+ }
+
/**
* Un-registers an existing device type from the device management metadata repository.
*
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManagementService.java
index d425133ce52..8a7f71a66a7 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManagementService.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManagementService.java
@@ -77,4 +77,7 @@ public class TestDeviceManagementService implements DeviceManagementService {
return null;
}
-}
+ public DeviceStatusTaskPluginConfig getDeviceStatusTaskPluginConfig() {
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml
index 39ebf80d76b..55ed8327a09 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml
@@ -22,7 +22,7 @@
device-mgt
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml
index 955e5838102..110b1dc8c29 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml
@@ -22,7 +22,7 @@
device-mgt
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-handler-utils.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-handler-utils.js
index 109e67f7ac7..72f7739966a 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-handler-utils.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-handler-utils.js
@@ -23,6 +23,7 @@ var utils = function () {
var constants = require("/app/modules/constants.js");
var carbon = require("carbon");
var authModule = require("/lib/modules/auth/auth.js").module;
+ var utility = require('/app/modules/utility.js').utility;
//noinspection JSUnresolvedVariable
var Base64 = Packages.org.apache.commons.codec.binary.Base64;
@@ -297,11 +298,17 @@ var utils = function () {
// returning access token by JWT grant type
var tokenInfo = jwtClient.getAccessToken(encodedClientAppCredentials,
endUsername, scopes);
- var tokenData = {};
- tokenData["accessToken"] = tokenInfo.getAccessToken();
- tokenData["refreshToken"] = tokenInfo.getRefreshToken();
- tokenData["scopes"] = tokenInfo.getScopes();
- return tokenData;
+ if (tokenInfo) {
+ var tokenData = {};
+ tokenData["accessToken"] = tokenInfo.getAccessToken();
+ tokenData["refreshToken"] = tokenInfo.getRefreshToken();
+ tokenData["scopes"] = tokenInfo.getScopes();
+ return tokenData;
+ } else {
+ log.error("{/app/modules/oauth/token-handler-utils.js} Error in retrieving access token " +
+ "by jwt grant type - getTokenPairAndScopesByJWTGrantType()");
+ return null;
+ }
}
};
@@ -378,5 +385,24 @@ var utils = function () {
}
};
+ publicMethods["removeClientAppCredentials"] = function (tenantDomain) {
+ var cachedTenantBasedClientAppCredentialsMap = application.get(constants["CACHED_CREDENTIALS"]);
+ if (cachedTenantBasedClientAppCredentialsMap) {
+ if (cachedTenantBasedClientAppCredentialsMap[tenantDomain]) {
+ delete cachedTenantBasedClientAppCredentialsMap[tenantDomain];
+ }
+ }
+ };
+
+ publicMethods["getUniqueBrowserScope"] = function () {
+ var deviceScope = "device_" + utility.md5(request.getHeader("User-Agent") + "::" + request.getRemoteAddr());
+ deviceScope = deviceScope + " ";
+ log.error("device scope");
+ log.error(deviceScope);
+ return deviceScope;
+ };
+
+
+
return publicMethods;
}();
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-handlers.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-handlers.js
index 0fa1fbb0dc9..921d708c603 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-handlers.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-handlers.js
@@ -51,7 +51,7 @@ var handlers = function () {
// tokenPair will include current access token as well as current refresh token
var arrayOfScopes = devicemgtProps["scopes"];
arrayOfScopes = arrayOfScopes.concat(utility.getDeviceTypesScopesList());
- var stringOfScopes = "";
+ var stringOfScopes = tokenUtil.getUniqueBrowserScope();
arrayOfScopes.forEach(function (entry) {
stringOfScopes += entry + " ";
});
@@ -94,7 +94,7 @@ var handlers = function () {
var tokenData;
var arrayOfScopes = devicemgtProps["scopes"];
arrayOfScopes = arrayOfScopes.concat(utility.getDeviceTypesScopesList());
- var stringOfScopes = "";
+ var stringOfScopes = tokenUtil.getUniqueBrowserScope();
arrayOfScopes.forEach(function (entry) {
stringOfScopes += entry + " ";
});
@@ -139,7 +139,7 @@ var handlers = function () {
var tokenData;
var arrayOfScopes = devicemgtProps["scopes"];
arrayOfScopes = arrayOfScopes.concat(utility.getDeviceTypesScopesList());
- var stringOfScopes = "";
+ var stringOfScopes = tokenUtil.getUniqueBrowserScope();
arrayOfScopes.forEach(function (entry) {
stringOfScopes += entry + " ";
});
@@ -148,8 +148,7 @@ var handlers = function () {
tokenData = tokenUtil.
getTokenPairAndScopesByJWTGrantType(samlToken, encodedClientAppCredentials, stringOfScopes);
if (!tokenData) {
- throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up token " +
- "pair by password grant type. Error in token " +
+ throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up token. Error in token " +
"retrieval - setupTokenPairBySamlGrantType(x, y)");
} else {
var tokenPair = {};
@@ -180,6 +179,9 @@ var handlers = function () {
if (!newTokenPair) {
log.error("{/app/modules/oauth/token-handlers.js} Error in refreshing token pair. " +
"Unable to update session context with new access token pair - refreshTokenPair()");
+ userModule.logout(function () {
+ response.sendRedirect(devicemgtProps["appContext"] + "login");
+ });
} else {
session.put(constants["TOKEN_PAIR"], stringify(newTokenPair));
}
@@ -263,5 +265,18 @@ var handlers = function () {
}
};
+ publicMethods["removeClientDetails"] = function () {
+ 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;
+ }
+ tokenUtil.removeClientAppCredentials(user.domain);
+ session.remove(constants["ENCODED_TENANT_BASED_WEB_SOCKET_CLIENT_CREDENTIALS"]);
+ session.remove(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS"]);
+ session.remove(constants["TOKEN_PAIR"]);
+ session.remove(constants["ALLOWED_SCOPES"]);
+ };
+
return publicMethods;
}();
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-protected-service-invokers.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-protected-service-invokers.js
index ed40ee7de8a..efcb3c6cae0 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-protected-service-invokers.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/oauth/token-protected-service-invokers.js
@@ -122,7 +122,12 @@ var invokers = function () {
xmlHttpRequest.responseText == TOKEN_INVALID ) && count < 5) {
tokenUtil.refreshTokenPair();
return privateMethods.execute(httpMethod, requestPayload, endpoint, responseCallback, ++count, headers);
- } else if (privateMethods.isInvalidCredential(xmlHttpRequest.responseText)) {
+ } else if (privateMethods.isInvalidClientCredential(xmlHttpRequest.responseText)) {
+ log.error("API application has been removed.");
+ tokenUtil.removeClientDetails();
+ session.invalidate();
+ response.sendRedirect(devicemgtProps["appContext"] + "login");
+ } else if (privateMethods.isInvalidCredential(xmlHttpRequest.responseText)) {
tokenUtil.refreshTokenPair();
return privateMethods.execute(httpMethod, requestPayload, endpoint, responseCallback, ++count, headers);
}
@@ -143,11 +148,11 @@ var invokers = function () {
if (responsePayload) {
try {
payload = parse(responsePayload);
- if (payload["fault"]["code"] == 900901) {
- log.debug("Access token is invalid: " + payload["fault"]["code"]);
- log.debug(payload["fault"]["description"]);
- return true;
- }
+ if (payload["fault"]["code"] == 900901) {
+ log.debug("Access token is invalid: " + payload["fault"]["code"]);
+ log.debug(payload["fault"]["description"]);
+ return true;
+ }
} catch (err) {
// do nothing
}
@@ -155,6 +160,27 @@ var invokers = function () {
return false;
};
+ /**
+ * This method verify whether the client credential is removed/blocked using response payload.
+ * This is required when using API gateway.
+ * @param responsePayload response payload.
+ * return true if it is invalid otherwise false.
+ */
+ privateMethods["isInvalidClientCredential"] =
+ function (responsePayload) {
+ if (responsePayload) {
+ try {
+ payload = parse(responsePayload);
+ if (payload["fault"]["message"] == "Invalid Credentials") {
+ return true;
+ }
+ } catch (err) {
+ // do nothing
+ }
+ }
+ return false;
+ };
+
/**
* This method add Oauth authentication header to outgoing XML-HTTP Requests if Oauth authentication is enabled.
* @param httpMethod HTTP request type.
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/utility.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/utility.js
index 55052191818..ff8fb6ea2d4 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/utility.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/utility.js
@@ -180,5 +180,211 @@ utility = function () {
}
};
+ publicMethods.md5 = function (s) {
+ function L(k, d) {
+ return (k << d) | (k >>> (32 - d))
+ }
+
+ function K(G, k) {
+ var I, d, F, H, x;
+ F = (G & 2147483648);
+ H = (k & 2147483648);
+ I = (G & 1073741824);
+ d = (k & 1073741824);
+ x = (G & 1073741823) + (k & 1073741823);
+ if (I & d) {
+ return (x ^ 2147483648 ^ F ^ H)
+ }
+ if (I | d) {
+ if (x & 1073741824) {
+ return (x ^ 3221225472 ^ F ^ H)
+ } else {
+ return (x ^ 1073741824 ^ F ^ H)
+ }
+ } else {
+ return (x ^ F ^ H)
+ }
+ }
+
+ function r(d, F, k) {
+ return (d & F) | ((~d) & k)
+ }
+
+ function q(d, F, k) {
+ return (d & k) | (F & (~k))
+ }
+
+ function p(d, F, k) {
+ return (d ^ F ^ k)
+ }
+
+ function n(d, F, k) {
+ return (F ^ (d | (~k)))
+ }
+
+ function u(G, F, aa, Z, k, H, I) {
+ G = K(G, K(K(r(F, aa, Z), k), I));
+ return K(L(G, H), F)
+ }
+
+ function f(G, F, aa, Z, k, H, I) {
+ G = K(G, K(K(q(F, aa, Z), k), I));
+ return K(L(G, H), F)
+ }
+
+ function D(G, F, aa, Z, k, H, I) {
+ G = K(G, K(K(p(F, aa, Z), k), I));
+ return K(L(G, H), F)
+ }
+
+ function t(G, F, aa, Z, k, H, I) {
+ G = K(G, K(K(n(F, aa, Z), k), I));
+ return K(L(G, H), F)
+ }
+
+ function e(G) {
+ var Z;
+ var F = G.length;
+ var x = F + 8;
+ var k = (x - (x % 64)) / 64;
+ var I = (k + 1) * 16;
+ var aa = Array(I - 1);
+ var d = 0;
+ var H = 0;
+ while (H < F) {
+ Z = (H - (H % 4)) / 4;
+ d = (H % 4) * 8;
+ aa[Z] = (aa[Z] | (G.charCodeAt(H) << d));
+ H++
+ }
+ Z = (H - (H % 4)) / 4;
+ d = (H % 4) * 8;
+ aa[Z] = aa[Z] | (128 << d);
+ aa[I - 2] = F << 3;
+ aa[I - 1] = F >>> 29;
+ return aa
+ }
+
+ function B(x) {
+ var k = "", F = "", G, d;
+ for (d = 0; d <= 3; d++) {
+ G = (x >>> (d * 8)) & 255;
+ F = "0" + G.toString(16);
+ k = k + F.substr(F.length - 2, 2)
+ }
+ return k
+ }
+
+ function J(k) {
+ k = k.replace(/rn/g, "n");
+ var d = "";
+ for (var F = 0; F < k.length; F++) {
+ var x = k.charCodeAt(F);
+ if (x < 128) {
+ d += String.fromCharCode(x)
+ } else {
+ if ((x > 127) && (x < 2048)) {
+ d += String.fromCharCode((x >> 6) | 192);
+ d += String.fromCharCode((x & 63) | 128)
+ } else {
+ d += String.fromCharCode((x >> 12) | 224);
+ d += String.fromCharCode(((x >> 6) & 63) | 128);
+ d += String.fromCharCode((x & 63) | 128)
+ }
+ }
+ }
+ return d
+ }
+
+ var C = Array();
+ var P, h, E, v, g, Y, X, W, V;
+ var S = 7, Q = 12, N = 17, M = 22;
+ var A = 5, z = 9, y = 14, w = 20;
+ var o = 4, m = 11, l = 16, j = 23;
+ var U = 6, T = 10, R = 15, O = 21;
+ s = J(s);
+ C = e(s);
+ Y = 1732584193;
+ X = 4023233417;
+ W = 2562383102;
+ V = 271733878;
+ for (P = 0; P < C.length; P += 16) {
+ h = Y;
+ E = X;
+ v = W;
+ g = V;
+ Y = u(Y, X, W, V, C[P + 0], S, 3614090360);
+ V = u(V, Y, X, W, C[P + 1], Q, 3905402710);
+ W = u(W, V, Y, X, C[P + 2], N, 606105819);
+ X = u(X, W, V, Y, C[P + 3], M, 3250441966);
+ Y = u(Y, X, W, V, C[P + 4], S, 4118548399);
+ V = u(V, Y, X, W, C[P + 5], Q, 1200080426);
+ W = u(W, V, Y, X, C[P + 6], N, 2821735955);
+ X = u(X, W, V, Y, C[P + 7], M, 4249261313);
+ Y = u(Y, X, W, V, C[P + 8], S, 1770035416);
+ V = u(V, Y, X, W, C[P + 9], Q, 2336552879);
+ W = u(W, V, Y, X, C[P + 10], N, 4294925233);
+ X = u(X, W, V, Y, C[P + 11], M, 2304563134);
+ Y = u(Y, X, W, V, C[P + 12], S, 1804603682);
+ V = u(V, Y, X, W, C[P + 13], Q, 4254626195);
+ W = u(W, V, Y, X, C[P + 14], N, 2792965006);
+ X = u(X, W, V, Y, C[P + 15], M, 1236535329);
+ Y = f(Y, X, W, V, C[P + 1], A, 4129170786);
+ V = f(V, Y, X, W, C[P + 6], z, 3225465664);
+ W = f(W, V, Y, X, C[P + 11], y, 643717713);
+ X = f(X, W, V, Y, C[P + 0], w, 3921069994);
+ Y = f(Y, X, W, V, C[P + 5], A, 3593408605);
+ V = f(V, Y, X, W, C[P + 10], z, 38016083);
+ W = f(W, V, Y, X, C[P + 15], y, 3634488961);
+ X = f(X, W, V, Y, C[P + 4], w, 3889429448);
+ Y = f(Y, X, W, V, C[P + 9], A, 568446438);
+ V = f(V, Y, X, W, C[P + 14], z, 3275163606);
+ W = f(W, V, Y, X, C[P + 3], y, 4107603335);
+ X = f(X, W, V, Y, C[P + 8], w, 1163531501);
+ Y = f(Y, X, W, V, C[P + 13], A, 2850285829);
+ V = f(V, Y, X, W, C[P + 2], z, 4243563512);
+ W = f(W, V, Y, X, C[P + 7], y, 1735328473);
+ X = f(X, W, V, Y, C[P + 12], w, 2368359562);
+ Y = D(Y, X, W, V, C[P + 5], o, 4294588738);
+ V = D(V, Y, X, W, C[P + 8], m, 2272392833);
+ W = D(W, V, Y, X, C[P + 11], l, 1839030562);
+ X = D(X, W, V, Y, C[P + 14], j, 4259657740);
+ Y = D(Y, X, W, V, C[P + 1], o, 2763975236);
+ V = D(V, Y, X, W, C[P + 4], m, 1272893353);
+ W = D(W, V, Y, X, C[P + 7], l, 4139469664);
+ X = D(X, W, V, Y, C[P + 10], j, 3200236656);
+ Y = D(Y, X, W, V, C[P + 13], o, 681279174);
+ V = D(V, Y, X, W, C[P + 0], m, 3936430074);
+ W = D(W, V, Y, X, C[P + 3], l, 3572445317);
+ X = D(X, W, V, Y, C[P + 6], j, 76029189);
+ Y = D(Y, X, W, V, C[P + 9], o, 3654602809);
+ V = D(V, Y, X, W, C[P + 12], m, 3873151461);
+ W = D(W, V, Y, X, C[P + 15], l, 530742520);
+ X = D(X, W, V, Y, C[P + 2], j, 3299628645);
+ Y = t(Y, X, W, V, C[P + 0], U, 4096336452);
+ V = t(V, Y, X, W, C[P + 7], T, 1126891415);
+ W = t(W, V, Y, X, C[P + 14], R, 2878612391);
+ X = t(X, W, V, Y, C[P + 5], O, 4237533241);
+ Y = t(Y, X, W, V, C[P + 12], U, 1700485571);
+ V = t(V, Y, X, W, C[P + 3], T, 2399980690);
+ W = t(W, V, Y, X, C[P + 10], R, 4293915773);
+ X = t(X, W, V, Y, C[P + 1], O, 2240044497);
+ Y = t(Y, X, W, V, C[P + 8], U, 1873313359);
+ V = t(V, Y, X, W, C[P + 15], T, 4264355552);
+ W = t(W, V, Y, X, C[P + 6], R, 2734768916);
+ X = t(X, W, V, Y, C[P + 13], O, 1309151649);
+ Y = t(Y, X, W, V, C[P + 4], U, 4149444226);
+ V = t(V, Y, X, W, C[P + 11], T, 3174756917);
+ W = t(W, V, Y, X, C[P + 2], R, 718787259);
+ X = t(X, W, V, Y, C[P + 9], O, 3951481745);
+ Y = K(Y, h);
+ X = K(X, E);
+ W = K(W, v);
+ V = K(V, g)
+ }
+ var i = B(Y) + B(X) + B(W) + B(V);
+ return i.toLowerCase()
+ };
+
return publicMethods;
}();
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml
index 0d61b8061ad..b120bd8d13e 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml
@@ -23,7 +23,7 @@
device-mgt
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/device-mgt/pom.xml b/components/device-mgt/pom.xml
index 69604132b3e..90507411948 100644
--- a/components/device-mgt/pom.xml
+++ b/components/device-mgt/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml b/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml
index 859abfdc727..d765509e984 100644
--- a/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml
+++ b/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
email-sender
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/email-sender/pom.xml b/components/email-sender/pom.xml
index 774cf4e52b9..f9d4af2b82d 100644
--- a/components/email-sender/pom.xml
+++ b/components/email-sender/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
diff --git a/components/identity-extensions/dynamic-client-registration/dynamic-client-web-proxy/pom.xml b/components/identity-extensions/dynamic-client-registration/dynamic-client-web-proxy/pom.xml
index 22c2cf4c660..8bee9f283cd 100644
--- a/components/identity-extensions/dynamic-client-registration/dynamic-client-web-proxy/pom.xml
+++ b/components/identity-extensions/dynamic-client-registration/dynamic-client-web-proxy/pom.xml
@@ -21,7 +21,7 @@
dynamic-client-registration
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/identity-extensions/dynamic-client-registration/dynamic-client-web/pom.xml b/components/identity-extensions/dynamic-client-registration/dynamic-client-web/pom.xml
index 1f5d1c87844..94ec69b1cfb 100644
--- a/components/identity-extensions/dynamic-client-registration/dynamic-client-web/pom.xml
+++ b/components/identity-extensions/dynamic-client-registration/dynamic-client-web/pom.xml
@@ -21,7 +21,7 @@
dynamic-client-registration
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/identity-extensions/dynamic-client-registration/org.wso2.carbon.dynamic.client.registration/pom.xml b/components/identity-extensions/dynamic-client-registration/org.wso2.carbon.dynamic.client.registration/pom.xml
index a5f6b04b186..52398ff0408 100644
--- a/components/identity-extensions/dynamic-client-registration/org.wso2.carbon.dynamic.client.registration/pom.xml
+++ b/components/identity-extensions/dynamic-client-registration/org.wso2.carbon.dynamic.client.registration/pom.xml
@@ -21,13 +21,13 @@
dynamic-client-registration
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.dynamic.client.registration
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
bundle
WSO2 Carbon - Dynamic client registration service
WSO2 Carbon - Dynamic Client Registration Service
diff --git a/components/identity-extensions/dynamic-client-registration/org.wso2.carbon.dynamic.client.web.app.registration/pom.xml b/components/identity-extensions/dynamic-client-registration/org.wso2.carbon.dynamic.client.web.app.registration/pom.xml
index 49cc930ec72..f8bd39fd2a0 100644
--- a/components/identity-extensions/dynamic-client-registration/org.wso2.carbon.dynamic.client.web.app.registration/pom.xml
+++ b/components/identity-extensions/dynamic-client-registration/org.wso2.carbon.dynamic.client.web.app.registration/pom.xml
@@ -21,13 +21,13 @@
dynamic-client-registration
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.dynamic.client.web.app.registration
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
bundle
WSO2 Carbon - Dynamic client web app registration
WSO2 Carbon - Dynamic Client Web-app Registration Service
diff --git a/components/identity-extensions/dynamic-client-registration/pom.xml b/components/identity-extensions/dynamic-client-registration/pom.xml
index 4fc9b1370e8..5fc92ad4c78 100644
--- a/components/identity-extensions/dynamic-client-registration/pom.xml
+++ b/components/identity-extensions/dynamic-client-registration/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
identity-extensions
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.devicemgt
dynamic-client-registration
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
pom
WSO2 Carbon - Dynamic client registration
http://wso2.org
diff --git a/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml b/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml
index 9c26783e2e1..2546ec47132 100644
--- a/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml
+++ b/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml
@@ -22,13 +22,13 @@
org.wso2.carbon.devicemgt
identity-extensions
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.oauth.extensions
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
bundle
WSO2 Carbon - OAuth Extensions
http://wso2.org
diff --git a/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml b/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml
index 7ebe27fdb4b..3be089a6958 100644
--- a/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml
+++ b/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml
@@ -21,7 +21,7 @@
identity-extensions
org.wso2.carbon.devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
4.0.0
diff --git a/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml b/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml
index 105c31078b0..e8f19d1032d 100644
--- a/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml
+++ b/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
identity-extensions
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/components/identity-extensions/pom.xml b/components/identity-extensions/pom.xml
index c484dd6796c..3040eb7d934 100644
--- a/components/identity-extensions/pom.xml
+++ b/components/identity-extensions/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
diff --git a/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml b/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml
index 2fc5b32ba41..1081b222ba6 100644
--- a/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml
+++ b/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
policy-mgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.devicemgt
org.wso2.carbon.complex.policy.decision.point
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
bundle
WSO2 Carbon - Policy Decision Point
WSO2 Carbon - Policy Decision Point
diff --git a/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml
index c89ef8c85c0..a3609d012f6 100644
--- a/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml
+++ b/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml
@@ -3,14 +3,14 @@
org.wso2.carbon.devicemgt
policy-mgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.devicemgt
org.wso2.carbon.policy.decision.point
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
bundle
WSO2 Carbon - Policy Decision Point
WSO2 Carbon - Policy Decision Point
diff --git a/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml
index 233f8dcb9c5..bd59f7da979 100644
--- a/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml
+++ b/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml
@@ -3,7 +3,7 @@
org.wso2.carbon.devicemgt
policy-mgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
@@ -11,7 +11,7 @@
4.0.0
org.wso2.carbon.devicemgt
org.wso2.carbon.policy.information.point
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
bundle
WSO2 Carbon - Policy Information Point
WSO2 Carbon - Policy Information Point
diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml
index 84183940902..b24c140cfa6 100644
--- a/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml
+++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
policy-mgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.devicemgt
org.wso2.carbon.policy.mgt.common
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
bundle
WSO2 Carbon - Policy Management Common
WSO2 Carbon - Policy Management Common
diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml
index ecf984fe0b8..a025447895e 100644
--- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml
+++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
policy-mgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.devicemgt
org.wso2.carbon.policy.mgt.core
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
bundle
WSO2 Carbon - Policy Management Core
WSO2 Carbon - Policy Management Core
diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/mgt/impl/MonitoringManagerImpl.java b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/mgt/impl/MonitoringManagerImpl.java
index edab86d1ce3..9fade918e13 100644
--- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/mgt/impl/MonitoringManagerImpl.java
+++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/src/main/java/org/wso2/carbon/policy/mgt/core/mgt/impl/MonitoringManagerImpl.java
@@ -59,8 +59,7 @@ public class MonitoringManagerImpl implements MonitoringManager {
private static final Log log = LogFactory.getLog(MonitoringManagerImpl.class);
private static final String OPERATION_MONITOR = "MONITOR";
- private static final String OPERATION_INFO = "DEVICE_INFO";
- private static final String OPERATION_APP_LIST = "APPLICATION_LIST";
+
public MonitoringManagerImpl() {
this.policyDAO = PolicyManagementDAOFactory.getPolicyDAO();
@@ -273,9 +272,6 @@ public class MonitoringManagerImpl implements MonitoringManager {
Map deviceIdsToAddOperation = new HashMap<>();
Map deviceIdsWithExistingOperation = new HashMap<>();
- Map inactiveDeviceIds = new HashMap<>();
- Map devicesToMarkUnreachable = new HashMap<>();
- //Map firstTimeDeviceIdsWithPolicyIds = new HashMap<>();
List firstTimeDevices = new ArrayList<>();
@@ -293,14 +289,6 @@ public class MonitoringManagerImpl implements MonitoringManager {
} else {
deviceIdsWithExistingOperation.put(complianceData.getDeviceId(),
deviceIds.get(complianceData.getDeviceId()));
- if (complianceData.getAttempts() >= policyConfiguration.getMinRetriesToMarkUnreachable()) {
- devicesToMarkUnreachable.put(complianceData.getDeviceId(),
- deviceIds.get(complianceData.getDeviceId()));
- }
- }
- if (complianceData.getAttempts() >= policyConfiguration.getMinRetriesToMarkInactive()) {
- inactiveDeviceIds.put(complianceData.getDeviceId(),
- deviceIds.get(complianceData.getDeviceId()));
}
}
}
@@ -360,22 +348,6 @@ public class MonitoringManagerImpl implements MonitoringManager {
throw new PolicyComplianceException("Error occurred while adding monitoring operation to devices", e);
}
}
-
- // TODO : This should be uncommented, this is to mark the device as unreachable, But given the current
- // implementation we are not able to do so.
-
- if (!devicesToMarkUnreachable.isEmpty()) {
- ComplianceDecisionPoint decisionPoint = new ComplianceDecisionPointImpl();
- decisionPoint.setDevicesAsUnreachable(this.getDeviceIdentifiersFromDevices(
- new ArrayList<>(devicesToMarkUnreachable.values())));
- }
-
- if (!inactiveDeviceIds.isEmpty()) {
- ComplianceDecisionPoint decisionPoint = new ComplianceDecisionPointImpl();
- decisionPoint.setDevicesAsInactive(this.getDeviceIdentifiersFromDevices(
- new ArrayList<>(inactiveDeviceIds.values())));
- }
-
}
@Override
diff --git a/components/policy-mgt/pom.xml b/components/policy-mgt/pom.xml
index 639b3b4f23e..431c1719162 100644
--- a/components/policy-mgt/pom.xml
+++ b/components/policy-mgt/pom.xml
@@ -23,13 +23,13 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
4.0.0
policy-mgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
pom
WSO2 Carbon - Policy Management Component
http://wso2.org
diff --git a/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml b/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml
index 033f8acc026..877c80d672a 100644
--- a/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml
+++ b/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml
@@ -21,14 +21,14 @@
org.wso2.carbon.devicemgt
webapp-authenticator-framework
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.devicemgt
org.wso2.carbon.webapp.authenticator.framework
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
bundle
WSO2 Carbon - Web Application Authenticator Framework Bundle
WSO2 Carbon - Web Application Authenticator Framework Bundle
diff --git a/components/webapp-authenticator-framework/pom.xml b/components/webapp-authenticator-framework/pom.xml
index 99222cc3985..ece31dfc59d 100644
--- a/components/webapp-authenticator-framework/pom.xml
+++ b/components/webapp-authenticator-framework/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
webapp-authenticator-framework
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
pom
WSO2 Carbon - Webapp Authenticator Framework
http://wso2.org
diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml
index 4012d16fffc..caba6dcd6ab 100644
--- a/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml
+++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml
@@ -21,14 +21,14 @@
org.wso2.carbon.devicemgt
apimgt-extensions-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.application.extension.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - API Management Application Extension Feature
http://wso2.org
This feature contains an implementation of a api application registration, which takes care of subscription
diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml
index 954951f1d6e..a407404e895 100644
--- a/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml
+++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
apimgt-extensions-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.handler.server.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - Device Management - APIM handler Server Feature
http://wso2.org
This feature contains the handler for the api authentications
diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml
index 6fd2bb399d0..ff5c8469d88 100644
--- a/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml
+++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml
@@ -21,13 +21,13 @@
org.wso2.carbon.devicemgt
apimgt-extensions-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.integration.client.feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
pom
WSO2 Carbon - APIM Integration Client Feature
http://wso2.org
diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml
index da5d70f23e5..8c7b805fe5a 100644
--- a/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml
+++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml
@@ -21,14 +21,14 @@
org.wso2.carbon.devicemgt
apimgt-extensions-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.apimgt.webapp.publisher.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - API Management Webapp Publisher Feature
http://wso2.org
This feature contains an implementation of a Tomcat lifecycle listener, which takes care of publishing
diff --git a/features/apimgt-extensions/pom.xml b/features/apimgt-extensions/pom.xml
index 6b8da93386a..2f4406afdaf 100644
--- a/features/apimgt-extensions/pom.xml
+++ b/features/apimgt-extensions/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
apimgt-extensions-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
pom
WSO2 Carbon - API Management Extensions Feature
http://wso2.org
diff --git a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml
index 9035a39b0cb..8b5a21fdec9 100644
--- a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml
+++ b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
certificate-mgt-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml
index b6775d00870..edb9fcc4971 100644
--- a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml
+++ b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
certificate-mgt-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml
index a54571034de..55bcba11d35 100644
--- a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml
+++ b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
certificate-mgt-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.certificate.mgt.server.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - Certificate Management Server Feature
http://wso2.org
This feature contains the core bundles required for back-end Certificate Management functionality
diff --git a/features/certificate-mgt/pom.xml b/features/certificate-mgt/pom.xml
index 2c04a420745..94b3ede331f 100644
--- a/features/certificate-mgt/pom.xml
+++ b/features/certificate-mgt/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
certificate-mgt-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
pom
WSO2 Carbon - Certificate Management Feature
http://wso2.org
diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml
index 6264187ff7f..c505021b07b 100644
--- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml
+++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
device-mgt-extensions-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - Device Type Deployer Feature
http://wso2.org
WSO2 Carbon - Device Type Deployer Feature
diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml
index 4b49b50ce8a..654261f4459 100644
--- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml
+++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
device-mgt-extensions-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - FCM Based Push Notification Provider Feature
http://wso2.org
WSO2 Carbon - MQTT Based Push Notification Provider Feature
diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml
index e1b9f84047f..6a9e0aefeff 100644
--- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml
+++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
device-mgt-extensions-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - MQTT Based Push Notification Provider Feature
http://wso2.org
WSO2 Carbon - MQTT Based Push Notification Provider Feature
diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml
index 3e6433f3fd6..15ba7cf297c 100644
--- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml
+++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
device-mgt-extensions-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - XMPP Based Push Notification Provider Feature
http://wso2.org
WSO2 Carbon - XMPP Based Push Notification Provider Feature
diff --git a/features/device-mgt-extensions/pom.xml b/features/device-mgt-extensions/pom.xml
index 3ba9182a585..9f4ff818f49 100644
--- a/features/device-mgt-extensions/pom.xml
+++ b/features/device-mgt-extensions/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard.feature/pom.xml
index f9df9aa19eb..4788d3facdd 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard.feature/pom.xml
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard.feature/pom.xml
@@ -3,13 +3,13 @@
org.wso2.carbon.devicemgt
device-mgt-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.analytics.dashboard.feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
pom
WSO2 Carbon - Device Management Dashboard Analytics Feature
WSO2 Carbon - Device Management Dashboard Analytics Feature
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml
index 1ae25d490d1..6dae0ed9992 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
device-mgt-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.analytics.data.publisher.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - Device Management Server Feature
http://wso2.org
This feature contains bundles related to device analytics data publisher
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml
index 3bfc6c75377..38801c59ddd 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
device-mgt-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml
index cc62d96cf2a..82cc17317f8 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml
@@ -4,14 +4,14 @@
org.wso2.carbon.devicemgt
device-mgt-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.extensions.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - Device Management Extensions Feature
http://wso2.org
This feature contains common extensions used by key device management functionalities
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml
index 3b6ea889b36..41eb39eca49 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
device-mgt-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml
index a537af077a8..45fbe7235cb 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
device-mgt-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.server.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - Device Management Server Feature
http://wso2.org
This feature contains the core bundles required for Back-end Device Management functionality
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/src/main/resources/conf/cdm-config.xml b/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/src/main/resources/conf/cdm-config.xml
index 99d5473b46b..023166a6c1d 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/src/main/resources/conf/cdm-config.xml
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/src/main/resources/conf/cdm-config.xml
@@ -66,5 +66,8 @@
20
20
+
+ true
+
diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml
index 25386a22d1e..1e51aa3a389 100644
--- a/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml
+++ b/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
device-mgt-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
diff --git a/features/device-mgt/pom.xml b/features/device-mgt/pom.xml
index eb376b6b7a7..454cb2303f5 100644
--- a/features/device-mgt/pom.xml
+++ b/features/device-mgt/pom.xml
@@ -22,7 +22,7 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
diff --git a/features/dynamic-client-registration/org.wso2.carbon.dynamic.client.registration.server.feature/pom.xml b/features/dynamic-client-registration/org.wso2.carbon.dynamic.client.registration.server.feature/pom.xml
index 9ab0e881055..1596d08bd01 100644
--- a/features/dynamic-client-registration/org.wso2.carbon.dynamic.client.registration.server.feature/pom.xml
+++ b/features/dynamic-client-registration/org.wso2.carbon.dynamic.client.registration.server.feature/pom.xml
@@ -23,14 +23,14 @@
org.wso2.carbon.devicemgt
dynamic-client-registration-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.dynamic.client.registration.server.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - Dynamic Client Registration Server Feature
http://wso2.org
This feature contains dynamic client registration features
diff --git a/features/dynamic-client-registration/pom.xml b/features/dynamic-client-registration/pom.xml
index 201e8df62dc..5e568a5ff8e 100644
--- a/features/dynamic-client-registration/pom.xml
+++ b/features/dynamic-client-registration/pom.xml
@@ -23,14 +23,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
dynamic-client-registration-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
pom
WSO2 Carbon - Dynamic Client Registration Feature
http://wso2.org
diff --git a/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml b/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml
index d58e3a18eed..7cfdfd3a7a3 100644
--- a/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml
+++ b/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
email-sender-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.email.sender.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - Email Sender Feature
http://wso2.org
This feature contains the core bundles required for email sender related functionality
diff --git a/features/email-sender/pom.xml b/features/email-sender/pom.xml
index 8632c8cf195..49978eed475 100644
--- a/features/email-sender/pom.xml
+++ b/features/email-sender/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
email-sender-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
pom
WSO2 Carbon - Email Sender Feature
http://wso2.org
diff --git a/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml b/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml
index 9c8057b308f..c72164bec93 100644
--- a/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml
+++ b/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml
@@ -23,14 +23,14 @@
org.wso2.carbon.devicemgt
jwt-client-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.identity.jwt.client.extension.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - JWT Client Feature
http://wso2.org
This feature contains jwt client implementation from which we can get a access token using the jwt
diff --git a/features/jwt-client/pom.xml b/features/jwt-client/pom.xml
index d243515b945..350e5ea844a 100644
--- a/features/jwt-client/pom.xml
+++ b/features/jwt-client/pom.xml
@@ -23,13 +23,13 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
4.0.0
jwt-client-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
pom
WSO2 Carbon - Dynamic Client Registration Feature
http://wso2.org
diff --git a/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml b/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml
index 7fa5f6aed27..a41e8458240 100644
--- a/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml
+++ b/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml
@@ -23,14 +23,14 @@
org.wso2.carbon.devicemgt
oauth-extensions-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.device.mgt.oauth.extensions.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - Device Mgt OAuth Extensions Feature
http://wso2.org
This feature contains devicemgt related OAuth extensions
diff --git a/features/oauth-extensions/pom.xml b/features/oauth-extensions/pom.xml
index 96a17948100..c123b225f1b 100644
--- a/features/oauth-extensions/pom.xml
+++ b/features/oauth-extensions/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
oauth-extensions-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
pom
WSO2 Carbon - Device Management OAuth Extensions Feature
http://wso2.org
diff --git a/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml b/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml
index 63514510d24..b38a6e72bfa 100644
--- a/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml
+++ b/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml
@@ -23,14 +23,14 @@
org.wso2.carbon.devicemgt
policy-mgt-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.policy.mgt.server.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - Policy Management Server Feature
http://wso2.org
This feature contains the core bundles required for Back-end Device Management functionality
diff --git a/features/policy-mgt/pom.xml b/features/policy-mgt/pom.xml
index fef99ce5483..37e04a944ad 100644
--- a/features/policy-mgt/pom.xml
+++ b/features/policy-mgt/pom.xml
@@ -23,14 +23,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
policy-mgt-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
pom
WSO2 Carbon - Policy Management Feature
http://wso2.org
diff --git a/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml b/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml
index 8acd1906910..9ed16e47b2e 100644
--- a/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml
+++ b/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
webapp-authenticator-framework-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../pom.xml
4.0.0
org.wso2.carbon.webapp.authenticator.framework.server.feature
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - Webapp Authenticator Framework Server Feature
http://wso2.org
This feature contains the core bundles required for Back-end Device Management functionality
diff --git a/features/webapp-authenticator-framework/pom.xml b/features/webapp-authenticator-framework/pom.xml
index 2f4e497754f..a128c1e7d60 100644
--- a/features/webapp-authenticator-framework/pom.xml
+++ b/features/webapp-authenticator-framework/pom.xml
@@ -22,14 +22,14 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
../../pom.xml
4.0.0
org.wso2.carbon.devicemgt
webapp-authenticator-framework-feature
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
pom
WSO2 Carbon - Webapp Authenticator Framework Feature
http://wso2.org
diff --git a/pom.xml b/pom.xml
index f41333da8f3..ac536a7a2d7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
org.wso2.carbon.devicemgt
carbon-devicemgt
pom
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
WSO2 Carbon - Device Management - Parent
http://wso2.org
WSO2 Connected Device Manager Components
@@ -1813,7 +1813,7 @@
1.2.11.wso2v10
- 2.0.70-SNAPSHOT
+ 2.0.72-SNAPSHOT
4.4.8