mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Add remote session service
This commit is contained in:
commit
bd477c348f
1
.gitignore
vendored
1
.gitignore
vendored
@ -13,6 +13,7 @@ target
|
||||
|
||||
|
||||
*.class
|
||||
*.swp
|
||||
|
||||
# Mobile Tools for Java (J2ME)
|
||||
.mtj.tmp/
|
||||
|
||||
@ -22,13 +22,13 @@
|
||||
<parent>
|
||||
<artifactId>apimgt-extensions</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.apimgt.annotations</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - API Management Annotations</name>
|
||||
<description>WSO2 Carbon - API Management Custom Annotation Module</description>
|
||||
|
||||
@ -21,12 +21,12 @@
|
||||
<parent>
|
||||
<artifactId>apimgt-extensions</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<artifactId>org.wso2.carbon.apimgt.application.extension.api</artifactId>
|
||||
<packaging>war</packaging>
|
||||
<name>WSO2 Carbon - API Application Management API</name>
|
||||
|
||||
@ -22,12 +22,12 @@
|
||||
<parent>
|
||||
<artifactId>apimgt-extensions</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<artifactId>org.wso2.carbon.apimgt.application.extension</artifactId>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - API Application Management</name>
|
||||
|
||||
@ -21,13 +21,13 @@
|
||||
<parent>
|
||||
<artifactId>apimgt-extensions</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.apimgt.handlers</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - API Security Handler Component</name>
|
||||
<description>WSO2 Carbon - API Management Security Handler Module</description>
|
||||
|
||||
@ -13,13 +13,13 @@
|
||||
<parent>
|
||||
<artifactId>apimgt-extensions</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.apimgt.integration.client</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - API Management Integration Client</name>
|
||||
<description>WSO2 Carbon - API Management Integration Client</description>
|
||||
|
||||
@ -101,6 +101,10 @@ public class OAuthRequestInterceptor implements RequestInterceptor {
|
||||
REQUIRED_SCOPE);
|
||||
tenantBasedAccessTokenInfo.setExpiresIn(
|
||||
System.currentTimeMillis() + (tenantBasedAccessTokenInfo.getExpiresIn() * 1000));
|
||||
if (tenantBasedAccessTokenInfo.getScopes() == null) {
|
||||
throw new APIMClientOAuthException("Failed to retrieve scopes from access token");
|
||||
}
|
||||
|
||||
if (tenantBasedAccessTokenInfo.getScopes().contains(APIM_SUBSCRIBE_SCOPE)) {
|
||||
tenantUserTokenMap.put(username, tenantBasedAccessTokenInfo);
|
||||
}
|
||||
|
||||
@ -35,7 +35,7 @@ public class APIMClientOAuthException extends RuntimeException {
|
||||
this.responseStatus = status;
|
||||
}
|
||||
|
||||
APIMClientOAuthException(String message) {
|
||||
public APIMClientOAuthException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
|
||||
@ -13,13 +13,13 @@
|
||||
<parent>
|
||||
<artifactId>apimgt-extensions</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.apimgt.integration.generated.client</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - API Management Integration Generated Client</name>
|
||||
<description>WSO2 Carbon - API Management Integration Client</description>
|
||||
|
||||
@ -22,13 +22,13 @@
|
||||
<parent>
|
||||
<artifactId>apimgt-extensions</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.apimgt.webapp.publisher</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - API Management Webapp Publisher</name>
|
||||
<description>WSO2 Carbon - API Management Webapp Publisher</description>
|
||||
|
||||
@ -22,13 +22,13 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>carbon-devicemgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>apimgt-extensions</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
<name>WSO2 Carbon - API Management Extensions Component</name>
|
||||
<url>http://wso2.org</url>
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<artifactId>certificate-mgt</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<artifactId>certificate-mgt</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -21,13 +21,13 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>certificate-mgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.certificate.mgt.core</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - Certificate Management Core</name>
|
||||
<description>WSO2 Carbon - Certificate Management Core</description>
|
||||
|
||||
@ -22,14 +22,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>carbon-devicemgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>certificate-mgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
<name>WSO2 Carbon - Certificate Management Component</name>
|
||||
<url>http://wso2.org</url>
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<artifactId>device-mgt-extensions</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<artifactId>device-mgt-extensions</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<artifactId>device-mgt-extensions</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<artifactId>device-mgt-extensions</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<artifactId>device-mgt-extensions</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<artifactId>device-mgt-extensions</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<artifactId>carbon-devicemgt</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>device-mgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>device-mgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<artifactId>device-mgt</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -68,15 +68,21 @@ import javax.ws.rs.core.Response;
|
||||
@Scope(
|
||||
name = "View Analytics",
|
||||
description = "",
|
||||
key = "perm:geo-service:analytics",
|
||||
permissions = {"/device-mgt/devices/owning-device/analytics"}
|
||||
key = "perm:geo-service:analytics-view",
|
||||
permissions = {"/device-mgt/devices/owning-device/view-analytics"}
|
||||
),
|
||||
@Scope(
|
||||
name = "Manage Alerts",
|
||||
description = "",
|
||||
key = "perm:geo-service:alerts-manage",
|
||||
permissions = {"/device-mgt/devices/owning-device/manage-alerts"}
|
||||
)
|
||||
}
|
||||
)
|
||||
@Path("/geo-services")
|
||||
@Api(value = "Geo Service",
|
||||
description = "This carries all the resources related to the geo service functionalities.")
|
||||
public interface GeoService {
|
||||
public interface GeoLocationBasedService {
|
||||
/**
|
||||
* Retrieve Analytics for the device type
|
||||
*/
|
||||
@ -92,7 +98,7 @@ public interface GeoService {
|
||||
tags = "Geo Service Management",
|
||||
extensions = {
|
||||
@Extension(properties = {
|
||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:geo-service:analytics")
|
||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:geo-service:analytics-view")
|
||||
})
|
||||
}
|
||||
)
|
||||
@ -161,7 +167,7 @@ public interface GeoService {
|
||||
tags = "Geo Service Management",
|
||||
extensions = {
|
||||
@Extension(properties = {
|
||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:geo-service:analytics")
|
||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:geo-service:alerts-manage")
|
||||
})
|
||||
}
|
||||
)
|
||||
@ -226,7 +232,7 @@ public interface GeoService {
|
||||
tags = "Geo Service Management",
|
||||
extensions = {
|
||||
@Extension(properties = {
|
||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:geo-service:analytics")
|
||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:geo-service:alerts-manage")
|
||||
})
|
||||
}
|
||||
)
|
||||
@ -291,7 +297,7 @@ public interface GeoService {
|
||||
tags = "Geo Service Management",
|
||||
extensions = {
|
||||
@Extension(properties = {
|
||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:geo-service:analytics")
|
||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:geo-service:alerts-manage")
|
||||
})
|
||||
}
|
||||
)
|
||||
@ -355,7 +361,7 @@ public interface GeoService {
|
||||
tags = "Geo Service Management",
|
||||
extensions = {
|
||||
@Extension(properties = {
|
||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:geo-service:analytics")
|
||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:geo-service:alerts-manage")
|
||||
})
|
||||
}
|
||||
)
|
||||
@ -400,8 +406,8 @@ public interface GeoService {
|
||||
String deviceType,
|
||||
@ApiParam(
|
||||
name = "from",
|
||||
value = "Get stats from what time",
|
||||
required = true)
|
||||
value = "Get stats from what time",
|
||||
required = true)
|
||||
@QueryParam("from") long from,
|
||||
@ApiParam(
|
||||
name = "to",
|
||||
@ -415,13 +421,13 @@ public interface GeoService {
|
||||
consumes = "application/json",
|
||||
produces = "application/json",
|
||||
httpMethod = "DELETE",
|
||||
value = "Create Geo alerts for the device",
|
||||
value = "Deletes Geo alerts for the device",
|
||||
notes = "",
|
||||
response = Response.class,
|
||||
tags = "Geo Service Management",
|
||||
extensions = {
|
||||
@Extension(properties = {
|
||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:geo-service:analytics")
|
||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:geo-service:alerts-manage")
|
||||
})
|
||||
}
|
||||
)
|
||||
@ -50,6 +50,7 @@ import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceDetailsMgtExcept
|
||||
import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager;
|
||||
import org.wso2.carbon.device.mgt.core.operation.mgt.CommandOperation;
|
||||
import org.wso2.carbon.device.mgt.core.operation.mgt.ConfigOperation;
|
||||
import org.wso2.carbon.device.mgt.core.operation.mgt.ProfileOperation;
|
||||
import org.wso2.carbon.device.mgt.core.search.mgt.SearchManagerService;
|
||||
import org.wso2.carbon.device.mgt.core.search.mgt.SearchMgtException;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||
@ -665,7 +666,7 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
||||
return Response.status(Response.Status.BAD_REQUEST).build();
|
||||
}
|
||||
Operation.Type operationType = operationRequest.getOperation().getType();
|
||||
if (operationType == Operation.Type.COMMAND || operationType == Operation.Type.CONFIG) {
|
||||
if (operationType == Operation.Type.COMMAND || operationType == Operation.Type.CONFIG || operationType == Operation.Type.PROFILE) {
|
||||
DeviceIdentifier deviceIdentifier;
|
||||
List<DeviceIdentifier> deviceIdentifiers = new ArrayList<>();
|
||||
for (String deviceId : operationRequest.getDeviceIdentifiers()) {
|
||||
@ -683,7 +684,7 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
||||
operation.setEnabled(commandOperation.isEnabled());
|
||||
operation.setStatus(commandOperation.getStatus());
|
||||
|
||||
} else {
|
||||
} else if (operationType == Operation.Type.CONFIG) {
|
||||
Operation configOperation = operationRequest.getOperation();
|
||||
operation = new ConfigOperation();
|
||||
operation.setType(Operation.Type.CONFIG);
|
||||
@ -691,6 +692,15 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
||||
operation.setEnabled(configOperation.isEnabled());
|
||||
operation.setPayLoad(configOperation.getPayLoad());
|
||||
operation.setStatus(configOperation.getStatus());
|
||||
|
||||
} else {
|
||||
Operation profileOperation = operationRequest.getOperation();
|
||||
operation = new ProfileOperation();
|
||||
operation.setType(Operation.Type.PROFILE);
|
||||
operation.setCode(profileOperation.getCode());
|
||||
operation.setEnabled(profileOperation.isEnabled());
|
||||
operation.setPayLoad(profileOperation.getPayLoad());
|
||||
operation.setStatus(profileOperation.getStatus());
|
||||
}
|
||||
String date = new SimpleDateFormat(DATE_FORMAT_NOW).format(new Date());
|
||||
operation.setCreatedTimeStamp(date);
|
||||
|
||||
@ -35,11 +35,12 @@ import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorization
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.Alert;
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.Event;
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.GeoFence;
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.GeoServiceException;
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.GeoLocationProviderService;
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.GeoLocationBasedServiceException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroupConstants;
|
||||
import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
|
||||
import org.wso2.carbon.device.mgt.core.config.DeviceManagementConfig;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.GeoService;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.GeoLocationBasedService;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.util.Constants;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtUtil;
|
||||
@ -64,9 +65,9 @@ import java.util.Map;
|
||||
/**
|
||||
* The api for
|
||||
*/
|
||||
public class GeoServiceImpl implements GeoService {
|
||||
public class GeoLocationBasedServiceImpl implements GeoLocationBasedService {
|
||||
|
||||
private static Log log = LogFactory.getLog(GeoServiceImpl.class);
|
||||
private static Log log = LogFactory.getLog(GeoLocationBasedServiceImpl.class);
|
||||
|
||||
@Path("stats/{deviceType}/{deviceId}")
|
||||
@GET
|
||||
@ -149,10 +150,10 @@ public class GeoServiceImpl implements GeoService {
|
||||
identifier.setId(deviceId);
|
||||
identifier.setType(deviceType);
|
||||
|
||||
org.wso2.carbon.device.mgt.common.geo.service.GeoService geoService = DeviceMgtAPIUtils.getGeoService();
|
||||
GeoLocationProviderService geoService = DeviceMgtAPIUtils.getGeoService();
|
||||
geoService.createGeoAlert(alert, identifier, alertType);
|
||||
return Response.ok().build();
|
||||
} catch (DeviceAccessAuthorizationException | GeoServiceException e) {
|
||||
} catch (DeviceAccessAuthorizationException | GeoLocationBasedServiceException e) {
|
||||
String error = "Error occurred while creating the geo alert for " + deviceType + " with id: " + deviceId;
|
||||
log.error(error, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error).build();
|
||||
@ -182,10 +183,10 @@ public class GeoServiceImpl implements GeoService {
|
||||
identifier.setId(deviceId);
|
||||
identifier.setType(deviceType);
|
||||
|
||||
org.wso2.carbon.device.mgt.common.geo.service.GeoService geoService = DeviceMgtAPIUtils.getGeoService();
|
||||
GeoLocationProviderService geoService = DeviceMgtAPIUtils.getGeoService();
|
||||
geoService.updateGeoAlert(alert, identifier, alertType);
|
||||
return Response.ok().build();
|
||||
} catch (DeviceAccessAuthorizationException | GeoServiceException e) {
|
||||
} catch (DeviceAccessAuthorizationException | GeoLocationBasedServiceException e) {
|
||||
String error = "Error occurred while creating the geo alert for " + deviceType + " with id: " + deviceId;
|
||||
log.error(error, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error).build();
|
||||
@ -216,10 +217,10 @@ public class GeoServiceImpl implements GeoService {
|
||||
identifier.setId(deviceId);
|
||||
identifier.setType(deviceType);
|
||||
|
||||
org.wso2.carbon.device.mgt.common.geo.service.GeoService geoService = DeviceMgtAPIUtils.getGeoService();
|
||||
GeoLocationProviderService geoService = DeviceMgtAPIUtils.getGeoService();
|
||||
geoService.removeGeoAlert(alertType, identifier, queryName);
|
||||
return Response.ok().build();
|
||||
} catch (DeviceAccessAuthorizationException | GeoServiceException e) {
|
||||
} catch (DeviceAccessAuthorizationException | GeoLocationBasedServiceException e) {
|
||||
String error = "Error occurred while removing the geo alert for " + deviceType + " with id: " + deviceId;
|
||||
log.error(error, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error).build();
|
||||
@ -249,7 +250,7 @@ public class GeoServiceImpl implements GeoService {
|
||||
identifier.setId(deviceId);
|
||||
identifier.setType(deviceType);
|
||||
|
||||
org.wso2.carbon.device.mgt.common.geo.service.GeoService geoService = DeviceMgtAPIUtils.getGeoService();
|
||||
GeoLocationProviderService geoService = DeviceMgtAPIUtils.getGeoService();
|
||||
|
||||
if (GeoServices.ALERT_TYPE_WITHIN.equals(alertType)) {
|
||||
List<GeoFence> alerts = geoService.getWithinAlerts(identifier);
|
||||
@ -271,7 +272,7 @@ public class GeoServiceImpl implements GeoService {
|
||||
return Response.ok().entity(alerts).build();
|
||||
}
|
||||
return null;
|
||||
} catch (DeviceAccessAuthorizationException | GeoServiceException e) {
|
||||
} catch (DeviceAccessAuthorizationException | GeoLocationBasedServiceException e) {
|
||||
String error = "Error occurred while getting the geo alerts for " + deviceType + " with id: " + deviceId;
|
||||
log.error(error, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error).build();
|
||||
@ -44,7 +44,7 @@ import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorization
|
||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry;
|
||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
|
||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfigurationManagementService;
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.GeoService;
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.GeoLocationProviderService;
|
||||
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementService;
|
||||
import org.wso2.carbon.device.mgt.common.spi.DeviceTypeGeneratorService;
|
||||
import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderService;
|
||||
@ -427,9 +427,10 @@ public class DeviceMgtAPIUtils {
|
||||
return gadgetDataService;
|
||||
}
|
||||
|
||||
public static GeoService getGeoService() {
|
||||
public static GeoLocationProviderService getGeoService() {
|
||||
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
||||
GeoService geoService = (GeoService) ctx.getOSGiService(GeoService.class, null);
|
||||
GeoLocationProviderService
|
||||
geoService = (GeoLocationProviderService) ctx.getOSGiService(GeoLocationProviderService.class, null);
|
||||
if (geoService == null) {
|
||||
throw new IllegalStateException("Geo Service has not been initialized.");
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
<parent>
|
||||
<artifactId>device-mgt</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@ package org.wso2.carbon.device.mgt.common.geo.service;
|
||||
/**
|
||||
* Custom exception class of Geo Service related operations.
|
||||
*/
|
||||
public class GeoServiceException extends Exception {
|
||||
public class GeoLocationBasedServiceException extends Exception {
|
||||
|
||||
private static final long serialVersionUID = -7151990041029070298L;
|
||||
|
||||
@ -34,26 +34,26 @@ public class GeoServiceException extends Exception {
|
||||
this.errorMessage = errorMessage;
|
||||
}
|
||||
|
||||
public GeoServiceException(String msg, Exception nestedEx) {
|
||||
public GeoLocationBasedServiceException(String msg, Exception nestedEx) {
|
||||
super(msg, nestedEx);
|
||||
setErrorMessage(msg);
|
||||
}
|
||||
|
||||
public GeoServiceException(String message, Throwable cause) {
|
||||
public GeoLocationBasedServiceException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
setErrorMessage(message);
|
||||
}
|
||||
|
||||
public GeoServiceException(String msg) {
|
||||
public GeoLocationBasedServiceException(String msg) {
|
||||
super(msg);
|
||||
setErrorMessage(msg);
|
||||
}
|
||||
|
||||
public GeoServiceException() {
|
||||
public GeoLocationBasedServiceException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public GeoServiceException(Throwable cause) {
|
||||
public GeoLocationBasedServiceException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
@ -26,26 +26,26 @@ import java.util.List;
|
||||
* This represents the Geo service functionality which should be implemented by
|
||||
* required GeoServiceManagers.
|
||||
*/
|
||||
public interface GeoService {
|
||||
public interface GeoLocationProviderService {
|
||||
|
||||
List<GeoFence> getWithinAlerts(DeviceIdentifier identifier) throws GeoServiceException;
|
||||
List<GeoFence> getWithinAlerts(DeviceIdentifier identifier) throws GeoLocationBasedServiceException;
|
||||
|
||||
List<GeoFence> getExitAlerts(DeviceIdentifier identifier) throws GeoServiceException;
|
||||
List<GeoFence> getExitAlerts(DeviceIdentifier identifier) throws GeoLocationBasedServiceException;
|
||||
|
||||
boolean createGeoAlert(Alert alert, DeviceIdentifier identifier, String alertType)
|
||||
throws GeoServiceException;
|
||||
throws GeoLocationBasedServiceException;
|
||||
|
||||
boolean updateGeoAlert(Alert alert, DeviceIdentifier identifier, String alertType)
|
||||
throws GeoServiceException;
|
||||
throws GeoLocationBasedServiceException;
|
||||
|
||||
boolean removeGeoAlert(String alertType, DeviceIdentifier identifier, String queryName)
|
||||
throws GeoServiceException;
|
||||
throws GeoLocationBasedServiceException;
|
||||
|
||||
String getSpeedAlerts(DeviceIdentifier identifier) throws GeoServiceException;
|
||||
String getSpeedAlerts(DeviceIdentifier identifier) throws GeoLocationBasedServiceException;
|
||||
|
||||
String getProximityAlerts(DeviceIdentifier identifier) throws GeoServiceException;
|
||||
String getProximityAlerts(DeviceIdentifier identifier) throws GeoLocationBasedServiceException;
|
||||
|
||||
List<GeoFence> getStationaryAlerts(DeviceIdentifier identifier) throws GeoServiceException;
|
||||
List<GeoFence> getStationaryAlerts(DeviceIdentifier identifier) throws GeoLocationBasedServiceException;
|
||||
|
||||
List<GeoFence> getTrafficAlerts(DeviceIdentifier identifier) throws GeoServiceException;
|
||||
List<GeoFence> getTrafficAlerts(DeviceIdentifier identifier) throws GeoLocationBasedServiceException;
|
||||
}
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>device-mgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -146,6 +146,22 @@
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>servlet-api</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.wso2.carbon.registry</groupId>
|
||||
<artifactId>org.wso2.carbon.registry.indexing</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.wso2.carbon.identity.framework</groupId>
|
||||
<artifactId>org.wso2.carbon.user.mgt</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>commons-lang</groupId>
|
||||
<artifactId>commons-lang</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@ -87,6 +87,7 @@ public final class DeviceManagementConstants {
|
||||
public static final class OperationAttributes {
|
||||
private OperationAttributes() {throw new AssertionError(); }
|
||||
public static final String ACTIVITY = "ACTIVITY_";
|
||||
public static final int APPLIST_VERSION_MAX_LENGTH = 50;
|
||||
}
|
||||
|
||||
public static final class PushNotifications {
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
|
||||
package org.wso2.carbon.device.mgt.core.app.mgt;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.context.CarbonContext;
|
||||
@ -31,6 +32,7 @@ import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
|
||||
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
|
||||
import org.wso2.carbon.device.mgt.core.app.mgt.config.AppManagementConfig;
|
||||
import org.wso2.carbon.device.mgt.core.dao.ApplicationDAO;
|
||||
import org.wso2.carbon.device.mgt.core.dao.ApplicationMappingDAO;
|
||||
@ -225,6 +227,14 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
||||
List<Integer> applicationIds = new ArrayList<>();
|
||||
|
||||
for (Application application : applications) {
|
||||
/*
|
||||
Truncating the application version if length of the version is greater than maximum allowed length.
|
||||
*/
|
||||
if (application.getVersion().length() >
|
||||
DeviceManagementConstants.OperationAttributes.APPLIST_VERSION_MAX_LENGTH) {
|
||||
application.setVersion(StringUtils.abbreviate(application.getVersion(),
|
||||
DeviceManagementConstants.OperationAttributes.APPLIST_VERSION_MAX_LENGTH));
|
||||
}
|
||||
if (!installedAppList.contains(application)) {
|
||||
installedApp = applicationDAO.getApplication(application.getApplicationIdentifier(),
|
||||
application.getVersion(), tenantId);
|
||||
|
||||
@ -71,7 +71,6 @@ public class EnrollmentDAOImpl implements EnrollmentDAO {
|
||||
Connection conn;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
int status = -1;
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String sql = "UPDATE DM_ENROLMENT SET OWNERSHIP = ?, STATUS = ?, DATE_OF_LAST_UPDATE = ? WHERE DEVICE_ID = ?" +
|
||||
@ -84,7 +83,7 @@ public class EnrollmentDAOImpl implements EnrollmentDAO {
|
||||
stmt.setString(5, enrolmentInfo.getOwner());
|
||||
stmt.setInt(6, tenantId);
|
||||
stmt.setInt(7, enrolmentInfo.getId());
|
||||
stmt.executeUpdate();
|
||||
int status = stmt.executeUpdate();
|
||||
return status;
|
||||
} catch (SQLException e) {
|
||||
throw new DeviceManagementDAOException("Error occurred while updating enrolment configuration", e);
|
||||
@ -98,7 +97,6 @@ public class EnrollmentDAOImpl implements EnrollmentDAO {
|
||||
Connection conn;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
int status = -1;
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String sql = "UPDATE DM_ENROLMENT SET OWNERSHIP = ?, STATUS = ?, DATE_OF_LAST_UPDATE = ? WHERE ID = ?";
|
||||
@ -107,7 +105,7 @@ public class EnrollmentDAOImpl implements EnrollmentDAO {
|
||||
stmt.setString(2, enrolmentInfo.getStatus().toString());
|
||||
stmt.setTimestamp(3, new Timestamp(new Date().getTime()));
|
||||
stmt.setInt(4, enrolmentInfo.getId());
|
||||
stmt.executeUpdate();
|
||||
int status = stmt.executeUpdate();
|
||||
return status;
|
||||
} catch (SQLException e) {
|
||||
throw new DeviceManagementDAOException("Error occurred while updating enrolment configuration", e);
|
||||
|
||||
@ -39,8 +39,8 @@ import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants.GeoServices;
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.Alert;
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.GeoFence;
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.GeoService;
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.GeoServiceException;
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.GeoLocationProviderService;
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.GeoLocationBasedServiceException;
|
||||
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||
import org.wso2.carbon.event.processor.stub.EventProcessorAdminServiceStub;
|
||||
import org.wso2.carbon.identity.jwt.client.extension.JWTClient;
|
||||
@ -78,9 +78,9 @@ import static org.wso2.carbon.device.mgt.common.DeviceManagementConstants.GeoSer
|
||||
* This class will read events, set alerts, read alerts related to geo-fencing and it will
|
||||
* use Registry as the persistence storage.
|
||||
*/
|
||||
public class GeoServcieManagerImpl implements GeoService {
|
||||
public class GeoLocationProviderServiceImpl implements GeoLocationProviderService {
|
||||
|
||||
private static Log log = LogFactory.getLog(GeoServcieManagerImpl.class);
|
||||
private static Log log = LogFactory.getLog(GeoLocationProviderServiceImpl.class);
|
||||
|
||||
/**
|
||||
* required soap header for authorization
|
||||
@ -110,7 +110,7 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
private static final String SSLV3 = "SSLv3";
|
||||
|
||||
@Override
|
||||
public List<GeoFence> getWithinAlerts(DeviceIdentifier identifier) throws GeoServiceException {
|
||||
public List<GeoFence> getWithinAlerts(DeviceIdentifier identifier) throws GeoLocationBasedServiceException {
|
||||
|
||||
Registry registry = getGovernanceRegistry();
|
||||
String registryPath = GeoServices.REGISTRY_PATH_FOR_ALERTS +
|
||||
@ -151,14 +151,14 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
}
|
||||
return fences;
|
||||
} catch (RegistryException | IOException e) {
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"Error occurred while getting the geo alerts for " + identifier.getType() + " with id: " +
|
||||
identifier.getId(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GeoFence> getExitAlerts(DeviceIdentifier identifier) throws GeoServiceException {
|
||||
public List<GeoFence> getExitAlerts(DeviceIdentifier identifier) throws GeoLocationBasedServiceException {
|
||||
|
||||
Registry registry = getGovernanceRegistry();
|
||||
String registryPath = GeoServices.REGISTRY_PATH_FOR_ALERTS +
|
||||
@ -199,7 +199,7 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
}
|
||||
return fences;
|
||||
} catch (RegistryException | IOException e) {
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"Error occurred while getting the geo alerts for " + identifier.getType() + " with id: " +
|
||||
identifier.getId(), e);
|
||||
}
|
||||
@ -207,18 +207,18 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
|
||||
@Override
|
||||
public boolean createGeoAlert(Alert alert, DeviceIdentifier identifier, String alertType)
|
||||
throws GeoServiceException {
|
||||
throws GeoLocationBasedServiceException {
|
||||
return saveGeoAlert(alert, identifier, alertType, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean updateGeoAlert(Alert alert, DeviceIdentifier identifier, String alertType)
|
||||
throws GeoServiceException {
|
||||
throws GeoLocationBasedServiceException {
|
||||
return saveGeoAlert(alert, identifier, alertType, true);
|
||||
}
|
||||
|
||||
public boolean saveGeoAlert(Alert alert, DeviceIdentifier identifier, String alertType, boolean isUpdate)
|
||||
throws GeoServiceException {
|
||||
throws GeoLocationBasedServiceException {
|
||||
|
||||
Type type = new TypeToken<Map<String, String>>() {
|
||||
}.getType();
|
||||
@ -256,7 +256,7 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
} else if (GeoServices.ALERT_TYPE_TRAFFIC.equals(alertType)) {
|
||||
content = parseMap.get(GeoServices.GEO_FENCE_GEO_JSON);
|
||||
} else {
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"Unrecognized execution plan type: " + alertType + " while creating geo alert");
|
||||
}
|
||||
|
||||
@ -288,24 +288,24 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
} else {
|
||||
log.error("Execution plan validation failed: " + validationResponse);
|
||||
}
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"Error occurred while " + action + " geo " + alertType + " alert for " +
|
||||
identifier.getType() + " with id: " + identifier.getId());
|
||||
}
|
||||
return true;
|
||||
} catch (AxisFault axisFault) {
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"Event processor admin service initialization failed while " + action + " geo alert '" +
|
||||
alertType + "' for " + identifier.getType() + " " +
|
||||
"device with id: " + identifier.getId(), axisFault
|
||||
);
|
||||
} catch (IOException e) {
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"Event processor admin service failed while " + action + " geo alert '" +
|
||||
alertType + "' for " + identifier.getType() + " " +
|
||||
"device with id: " + identifier.getId(), e);
|
||||
} catch (JWTClientException e) {
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"JWT token creation failed while " + action + " geo alert '" + alertType + "' for " +
|
||||
identifier.getType() + " device with id:" + identifier.getId(), e);
|
||||
} finally {
|
||||
@ -314,7 +314,7 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
}
|
||||
|
||||
private String getRegistryPath(String alertType, DeviceIdentifier identifier, String queryName)
|
||||
throws GeoServiceException {
|
||||
throws GeoLocationBasedServiceException {
|
||||
String path = "";
|
||||
if (GeoServices.ALERT_TYPE_WITHIN.equals(alertType)) {
|
||||
path = GeoServices.REGISTRY_PATH_FOR_ALERTS + GeoServices.ALERT_TYPE_WITHIN +
|
||||
@ -335,7 +335,7 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
path = GeoServices.REGISTRY_PATH_FOR_ALERTS + GeoServices.ALERT_TYPE_TRAFFIC +
|
||||
"/" + identifier.getId() + "/" + queryName;
|
||||
} else {
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"Unrecognized execution plan type: " + alertType);
|
||||
}
|
||||
return path;
|
||||
@ -351,7 +351,7 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
|
||||
@Override
|
||||
public boolean removeGeoAlert(String alertType, DeviceIdentifier identifier, String queryName)
|
||||
throws GeoServiceException {
|
||||
throws GeoLocationBasedServiceException {
|
||||
removeFromRegistry(alertType, identifier, queryName);
|
||||
String executionPlanName = getExecutionPlanName(alertType, queryName, identifier.getId());
|
||||
EventProcessorAdminServiceStub eventprocessorStub = null;
|
||||
@ -360,14 +360,14 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
eventprocessorStub.undeployActiveExecutionPlan(executionPlanName);
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"Event processor admin service stub invocation failed while removing geo alert '" +
|
||||
alertType +
|
||||
"': " + executionPlanName + " for " +
|
||||
identifier.getType() + " device with id:" + identifier.getId(), e
|
||||
);
|
||||
} catch (JWTClientException e) {
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"JWT token creation failed while removing geo alert '" + alertType + "': " +
|
||||
executionPlanName + " for " +
|
||||
identifier.getType() + " device with id:" + identifier.getId(), e
|
||||
@ -378,13 +378,13 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
}
|
||||
|
||||
private void removeFromRegistry(String alertType, DeviceIdentifier identifier, String queryName)
|
||||
throws GeoServiceException {
|
||||
throws GeoLocationBasedServiceException {
|
||||
String path = "unknown";
|
||||
try {
|
||||
path = getRegistryPath(alertType, identifier, queryName);
|
||||
getGovernanceRegistry().delete(path);
|
||||
} catch (RegistryException e) {
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"Error occurred while removing " + alertType + " alert for " + identifier.getType() +
|
||||
" device with id:" + identifier.getId() + " from the path: " + path);
|
||||
}
|
||||
@ -437,7 +437,7 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSpeedAlerts(DeviceIdentifier identifier) throws GeoServiceException {
|
||||
public String getSpeedAlerts(DeviceIdentifier identifier) throws GeoLocationBasedServiceException {
|
||||
try {
|
||||
Registry registry = getGovernanceRegistry();
|
||||
Resource resource = registry.get(GeoServices.REGISTRY_PATH_FOR_ALERTS +
|
||||
@ -455,7 +455,7 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getProximityAlerts(DeviceIdentifier identifier) throws GeoServiceException {
|
||||
public String getProximityAlerts(DeviceIdentifier identifier) throws GeoLocationBasedServiceException {
|
||||
try {
|
||||
Registry registry = getGovernanceRegistry();
|
||||
Resource resource = registry.get(GeoServices.REGISTRY_PATH_FOR_ALERTS +
|
||||
@ -479,7 +479,7 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GeoFence> getStationaryAlerts(DeviceIdentifier identifier) throws GeoServiceException {
|
||||
public List<GeoFence> getStationaryAlerts(DeviceIdentifier identifier) throws GeoLocationBasedServiceException {
|
||||
|
||||
Registry registry = getGovernanceRegistry();
|
||||
String registryPath = GeoServices.REGISTRY_PATH_FOR_ALERTS +
|
||||
@ -524,14 +524,14 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
}
|
||||
return fences;
|
||||
} catch (RegistryException | IOException e) {
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"Error occurred while getting the geo alerts for " + identifier.getType() + " with id: " +
|
||||
identifier.getId(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GeoFence> getTrafficAlerts(DeviceIdentifier identifier) throws GeoServiceException {
|
||||
public List<GeoFence> getTrafficAlerts(DeviceIdentifier identifier) throws GeoLocationBasedServiceException {
|
||||
Registry registry = getGovernanceRegistry();
|
||||
String registryPath = GeoServices.REGISTRY_PATH_FOR_ALERTS +
|
||||
GeoServices.ALERT_TYPE_STATIONARY + "/" + identifier.getId() + "/";
|
||||
@ -571,30 +571,31 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
}
|
||||
return fences;
|
||||
} catch (RegistryException | IOException e) {
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"Error occurred while getting the geo alerts for " + identifier.getType() + " with id: " +
|
||||
identifier.getId(), e);
|
||||
}
|
||||
}
|
||||
|
||||
private Registry getGovernanceRegistry() throws GeoServiceException {
|
||||
private Registry getGovernanceRegistry() throws GeoLocationBasedServiceException {
|
||||
try {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
return DeviceManagementDataHolder.getInstance().getRegistryService()
|
||||
.getGovernanceSystemRegistry(
|
||||
tenantId);
|
||||
} catch (RegistryException e) {
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"Error in retrieving governance registry instance: " +
|
||||
e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
private String parseTemplate(String alertType, Map<String, String> parseMap) throws GeoServiceException {
|
||||
private String parseTemplate(String alertType, Map<String, String> parseMap) throws
|
||||
GeoLocationBasedServiceException {
|
||||
String templatePath = "alerts/Geo-ExecutionPlan-" + alertType + "_alert.siddhiql";
|
||||
InputStream resource = getClass().getClassLoader().getResourceAsStream(templatePath);
|
||||
if (resource == null) {
|
||||
throw new GeoServiceException("Could not find template in path : " + templatePath);
|
||||
throw new GeoLocationBasedServiceException("Could not find template in path : " + templatePath);
|
||||
}
|
||||
try {
|
||||
//Read template
|
||||
@ -606,13 +607,13 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
}
|
||||
return template;
|
||||
} catch (IOException e) {
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"Error occurred while populating the template for the Within Alert", e);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateRegistry(String path, DeviceIdentifier identifier, Object content, Map<String, String> options)
|
||||
throws GeoServiceException {
|
||||
throws GeoLocationBasedServiceException {
|
||||
try {
|
||||
|
||||
Registry registry = getGovernanceRegistry();
|
||||
@ -624,7 +625,7 @@ public class GeoServcieManagerImpl implements GeoService {
|
||||
}
|
||||
registry.put(path, newResource);
|
||||
} catch (RegistryException e) {
|
||||
throw new GeoServiceException(
|
||||
throw new GeoLocationBasedServiceException(
|
||||
"Error occurred while setting the Within Alert for " + identifier.getType() + " with id: " +
|
||||
identifier.getId(), e);
|
||||
}
|
||||
@ -25,7 +25,7 @@ import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService;
|
||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfigurationManagementService;
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.GeoService;
|
||||
import org.wso2.carbon.device.mgt.common.geo.service.GeoLocationProviderService;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementService;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
|
||||
@ -45,7 +45,7 @@ import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
|
||||
import org.wso2.carbon.device.mgt.core.config.tenant.PlatformConfigurationManagementServiceImpl;
|
||||
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
|
||||
import org.wso2.carbon.device.mgt.core.dao.GroupManagementDAOFactory;
|
||||
import org.wso2.carbon.device.mgt.core.geo.service.GeoServcieManagerImpl;
|
||||
import org.wso2.carbon.device.mgt.core.geo.service.GeoLocationProviderServiceImpl;
|
||||
import org.wso2.carbon.device.mgt.core.notification.mgt.NotificationManagementServiceImpl;
|
||||
import org.wso2.carbon.device.mgt.core.notification.mgt.dao.NotificationManagementDAOFactory;
|
||||
import org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl;
|
||||
@ -289,8 +289,8 @@ public class DeviceManagementServiceComponent {
|
||||
deviceAccessAuthorizationService, null);
|
||||
|
||||
/* Registering Geo Service */
|
||||
GeoService geoService = new GeoServcieManagerImpl();
|
||||
bundleContext.registerService(GeoService.class.getName(), geoService, null);
|
||||
GeoLocationProviderService geoService = new GeoLocationProviderServiceImpl();
|
||||
bundleContext.registerService(GeoLocationProviderService.class.getName(), geoService, null);
|
||||
|
||||
/* Registering App Management service */
|
||||
try {
|
||||
|
||||
@ -132,7 +132,7 @@ public class ConfigOperationDAOImpl extends GenericOperationDAOImpl {
|
||||
rs = stmt.executeQuery();
|
||||
|
||||
if (rs.next()) {
|
||||
byte[] operationDetails = rs.getBytes("OPERATION_DETAILS");
|
||||
byte[] operationDetails = rs.getBytes("OPERATION_CONFIG");
|
||||
bais = new ByteArrayInputStream(operationDetails);
|
||||
ois = new ObjectInputStream(bais);
|
||||
configOperation = (ConfigOperation) ois.readObject();
|
||||
|
||||
@ -198,7 +198,7 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
throw new OperationManagementDAOException(
|
||||
"Error occurred while update device mapping operation status " + "metadata", e);
|
||||
} finally {
|
||||
OperationManagementDAOUtil.cleanupResources(stmt);
|
||||
OperationManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@ -209,18 +209,31 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
PreparedStatement stmt = null;
|
||||
ByteArrayOutputStream bao = null;
|
||||
ObjectOutputStream oos = null;
|
||||
ResultSet rs = null;
|
||||
try {
|
||||
Connection connection = OperationManagementDAOFactory.getConnection();
|
||||
stmt = connection.prepareStatement("INSERT INTO DM_DEVICE_OPERATION_RESPONSE(OPERATION_ID,ENROLMENT_ID," +
|
||||
"OPERATION_RESPONSE, RECEIVED_TIMESTAMP) VALUES(?, ?, ?, ?)");
|
||||
|
||||
stmt = connection.prepareStatement("SELECT ID FROM DM_ENROLMENT_OP_MAPPING WHERE ENROLMENT_ID = ? " +
|
||||
"AND OPERATION_ID = ?");
|
||||
stmt.setInt(1, enrolmentId);
|
||||
stmt.setInt(2, operationId);
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
int enPrimaryId = 0;
|
||||
if(rs.next()){
|
||||
enPrimaryId = rs.getInt("ID");
|
||||
}
|
||||
stmt = connection.prepareStatement("INSERT INTO DM_DEVICE_OPERATION_RESPONSE(OPERATION_ID, ENROLMENT_ID, " +
|
||||
"EN_OP_MAP_ID, OPERATION_RESPONSE, RECEIVED_TIMESTAMP) VALUES(?, ?, ?, ?, ?)");
|
||||
bao = new ByteArrayOutputStream();
|
||||
oos = new ObjectOutputStream(bao);
|
||||
oos.writeObject(operationResponse);
|
||||
|
||||
stmt.setInt(1, operationId);
|
||||
stmt.setInt(2, enrolmentId);
|
||||
stmt.setBytes(3, bao.toByteArray());
|
||||
stmt.setTimestamp(4, new Timestamp(new Date().getTime()));
|
||||
stmt.setInt(3, enPrimaryId);
|
||||
stmt.setBytes(4, bao.toByteArray());
|
||||
stmt.setTimestamp(5, new Timestamp(new Date().getTime()));
|
||||
stmt.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
throw new OperationManagementDAOException("Error occurred while inserting operation response", e);
|
||||
@ -241,7 +254,7 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
log.warn("Error occurred while closing ObjectOutputStream", e);
|
||||
}
|
||||
}
|
||||
OperationManagementDAOUtil.cleanupResources(stmt);
|
||||
OperationManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
}
|
||||
|
||||
@ -474,27 +487,8 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
List<Activity> activities = new ArrayList<>();
|
||||
try {
|
||||
Connection conn = OperationManagementDAOFactory.getConnection();
|
||||
// String sql = "SELECT eom.ENROLMENT_ID, eom.OPERATION_ID, eom.ID AS EOM_MAPPING_ID, dor.ID AS OP_RES_ID,\n" +
|
||||
// "de.DEVICE_ID, d.DEVICE_IDENTIFICATION, \n" +
|
||||
// "d.DEVICE_TYPE_ID, dt.NAME AS DEVICE_TYPE_NAME, eom.STATUS, eom.CREATED_TIMESTAMP, \n" +
|
||||
// "eom.UPDATED_TIMESTAMP, op.OPERATION_CODE, op.TYPE AS OPERATION_TYPE, dor.OPERATION_RESPONSE, \n" +
|
||||
// "dor.RECEIVED_TIMESTAMP FROM DM_ENROLMENT_OP_MAPPING AS eom \n" +
|
||||
// "INNER JOIN DM_OPERATION AS op ON op.ID=eom.OPERATION_ID\n" +
|
||||
// "INNER JOIN DM_ENROLMENT AS de ON de.ID=eom.ENROLMENT_ID\n" +
|
||||
// "INNER JOIN DM_DEVICE AS d ON d.ID=de.DEVICE_ID \n" +
|
||||
// "INNER JOIN DM_DEVICE_TYPE AS dt ON dt.ID=d.DEVICE_TYPE_ID\n" +
|
||||
// "LEFT JOIN DM_DEVICE_OPERATION_RESPONSE AS dor ON dor.ENROLMENT_ID=de.id \n" +
|
||||
// "AND dor.OPERATION_ID=eom.OPERATION_ID\n" +
|
||||
// "WHERE eom.UPDATED_TIMESTAMP > ? AND de.TENANT_ID = ? ORDER BY eom.OPERATION_ID";
|
||||
// if(limit > 0) {
|
||||
// sql = sql + " LIMIT ?";
|
||||
// }
|
||||
//
|
||||
// if(offset > 0) {
|
||||
// sql = sql + " OFFSET ?";
|
||||
// }
|
||||
|
||||
|
||||
/*
|
||||
String sql = "SELECT opm.ENROLMENT_ID, opm.CREATED_TIMESTAMP, opm.UPDATED_TIMESTAMP, opm.OPERATION_ID,\n" +
|
||||
"op.OPERATION_CODE, op.TYPE as OPERATION_TYPE, opm.STATUS, en.DEVICE_ID,\n" +
|
||||
"ops.RECEIVED_TIMESTAMP, ops.ID as OP_RES_ID, ops.OPERATION_RESPONSE,\n" +
|
||||
@ -514,15 +508,60 @@ public class GenericOperationDAOImpl implements OperationDAO {
|
||||
} else {
|
||||
sql += "ORDER BY opm.UPDATED_TIMESTAMP asc LIMIT ? OFFSET ?";
|
||||
}
|
||||
|
||||
*/
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
String sql = "SELECT " +
|
||||
" opr.ENROLMENT_ID, " +
|
||||
" opr.CREATED_TIMESTAMP, " +
|
||||
" opr.UPDATED_TIMESTAMP, " +
|
||||
" opr.OPERATION_ID, " +
|
||||
" opr.OPERATION_CODE, " +
|
||||
" opr.OPERATION_TYPE, " +
|
||||
" opr.STATUS, " +
|
||||
" opr.DEVICE_ID, " +
|
||||
" opr.DEVICE_IDENTIFICATION, " +
|
||||
" opr.DEVICE_TYPE, " +
|
||||
" ops.RECEIVED_TIMESTAMP, " +
|
||||
" ops.ID OP_RES_ID, " +
|
||||
" ops.OPERATION_RESPONSE " +
|
||||
" FROM " +
|
||||
" (SELECT " +
|
||||
" opm.ID MAPPING_ID, " +
|
||||
" opm.ENROLMENT_ID, " +
|
||||
" opm.CREATED_TIMESTAMP, " +
|
||||
" opm.UPDATED_TIMESTAMP, " +
|
||||
" opm.OPERATION_ID, " +
|
||||
" op.OPERATION_CODE, " +
|
||||
" op.TYPE OPERATION_TYPE, " +
|
||||
" opm.STATUS, " +
|
||||
" en.DEVICE_ID, " +
|
||||
" de.DEVICE_IDENTIFICATION, " +
|
||||
" dt.NAME DEVICE_TYPE, " +
|
||||
" de.TENANT_ID " +
|
||||
" FROM" +
|
||||
" DM_ENROLMENT_OP_MAPPING opm " +
|
||||
" INNER JOIN DM_OPERATION op ON opm.OPERATION_ID = op.ID " +
|
||||
" INNER JOIN DM_ENROLMENT en ON opm.ENROLMENT_ID = en.ID " +
|
||||
" INNER JOIN DM_DEVICE de ON en.DEVICE_ID = de.ID " +
|
||||
" INNER JOIN DM_DEVICE_TYPE dt ON dt.ID = de.DEVICE_TYPE_ID " +
|
||||
" WHERE " +
|
||||
" opm.UPDATED_TIMESTAMP > ? " +
|
||||
" AND de.TENANT_ID = ? " +
|
||||
" ORDER BY opm.UPDATED_TIMESTAMP " +
|
||||
" LIMIT ? OFFSET ?) opr " +
|
||||
" LEFT JOIN DM_DEVICE_OPERATION_RESPONSE ops ON opr.MAPPING_ID = ops.EN_OP_MAP_ID " +
|
||||
" WHERE " +
|
||||
" opr.UPDATED_TIMESTAMP > ? " +
|
||||
" AND opr.TENANT_ID = ? ";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
|
||||
stmt.setLong(1, timestamp);
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
stmt.setInt(2, tenantId);
|
||||
stmt.setInt(3, limit);
|
||||
stmt.setInt(4, offset);
|
||||
stmt.setLong(5, timestamp);
|
||||
stmt.setInt(6, tenantId);
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
|
||||
|
||||
@ -18,15 +18,25 @@
|
||||
|
||||
package org.wso2.carbon.device.mgt.core.operation.mgt.dao.impl.operation;
|
||||
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.ActivityStatus;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationResponse;
|
||||
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation;
|
||||
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.operation.mgt.dao.OperationManagementDAOUtil;
|
||||
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.impl.GenericOperationDAOImpl;
|
||||
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.util.OperationDAOUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This class holds the implementation of OperationDAO which can be used to support MySQl db syntax.
|
||||
@ -66,4 +76,163 @@ public class MySQLOperationDAOImpl extends GenericOperationDAOImpl {
|
||||
}
|
||||
return isUpdated;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<Activity> getActivitiesUpdatedAfter(long timestamp, int limit,
|
||||
int offset) throws OperationManagementDAOException {
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
List<Activity> activities = new ArrayList<>();
|
||||
try {
|
||||
Connection conn = OperationManagementDAOFactory.getConnection();
|
||||
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
String sql = "SELECT " +
|
||||
" opr.ENROLMENT_ID, " +
|
||||
" opr.CREATED_TIMESTAMP, " +
|
||||
" opr.UPDATED_TIMESTAMP, " +
|
||||
" opr.OPERATION_ID, " +
|
||||
" opr.OPERATION_CODE, " +
|
||||
" opr.OPERATION_TYPE, " +
|
||||
" opr.STATUS, " +
|
||||
" opr.DEVICE_ID, " +
|
||||
" opr.DEVICE_IDENTIFICATION, " +
|
||||
" opr.DEVICE_TYPE, " +
|
||||
" ops.RECEIVED_TIMESTAMP, " +
|
||||
" ops.ID OP_RES_ID, " +
|
||||
" ops.OPERATION_RESPONSE " +
|
||||
" FROM " +
|
||||
" (SELECT " +
|
||||
" opm.ID MAPPING_ID, " +
|
||||
" opm.ENROLMENT_ID, " +
|
||||
" opm.CREATED_TIMESTAMP, " +
|
||||
" opm.UPDATED_TIMESTAMP, " +
|
||||
" opm.OPERATION_ID, " +
|
||||
" op.OPERATION_CODE, " +
|
||||
" op.TYPE OPERATION_TYPE, " +
|
||||
" opm.STATUS, " +
|
||||
" en.DEVICE_ID, " +
|
||||
" de.DEVICE_IDENTIFICATION, " +
|
||||
" dt.NAME DEVICE_TYPE, " +
|
||||
" de.TENANT_ID " +
|
||||
" FROM" +
|
||||
" DM_ENROLMENT_OP_MAPPING opm FORCE INDEX (IDX_ENROLMENT_OP_MAPPING) " +
|
||||
" INNER JOIN DM_OPERATION op ON opm.OPERATION_ID = op.ID " +
|
||||
" INNER JOIN DM_ENROLMENT en ON opm.ENROLMENT_ID = en.ID " +
|
||||
" INNER JOIN DM_DEVICE de ON en.DEVICE_ID = de.ID " +
|
||||
" INNER JOIN DM_DEVICE_TYPE dt ON dt.ID = de.DEVICE_TYPE_ID " +
|
||||
" WHERE" +
|
||||
" opm.UPDATED_TIMESTAMP > ? " +
|
||||
" AND de.TENANT_ID = ? " +
|
||||
" ORDER BY opm.UPDATED_TIMESTAMP " +
|
||||
" LIMIT ? OFFSET ?) opr " +
|
||||
" LEFT JOIN DM_DEVICE_OPERATION_RESPONSE ops ON opr.MAPPING_ID = ops.EN_OP_MAP_ID " +
|
||||
" WHERE " +
|
||||
" opr.UPDATED_TIMESTAMP > ? " +
|
||||
" AND opr.TENANT_ID = ? ";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
|
||||
stmt.setLong(1, timestamp);
|
||||
stmt.setInt(2, tenantId);
|
||||
stmt.setInt(3, limit);
|
||||
stmt.setInt(4, offset);
|
||||
stmt.setLong(5, timestamp);
|
||||
stmt.setInt(6, tenantId);
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
|
||||
int operationId = 0;
|
||||
int enrolmentId = 0;
|
||||
int responseId = 0;
|
||||
Activity activity = null;
|
||||
ActivityStatus activityStatus = null;
|
||||
while (rs.next()) {
|
||||
|
||||
if (operationId != rs.getInt("OPERATION_ID")) {
|
||||
activity = new Activity();
|
||||
activities.add(activity);
|
||||
List<ActivityStatus> statusList = new ArrayList<>();
|
||||
activityStatus = new ActivityStatus();
|
||||
|
||||
operationId = rs.getInt("OPERATION_ID");
|
||||
enrolmentId = rs.getInt("ENROLMENT_ID");
|
||||
|
||||
activity.setType(Activity.Type.valueOf(rs.getString("OPERATION_TYPE")));
|
||||
activity.setCreatedTimeStamp(new java.util.Date(rs.getLong(("CREATED_TIMESTAMP")) * 1000).toString());
|
||||
activity.setCode(rs.getString("OPERATION_CODE"));
|
||||
|
||||
DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
|
||||
deviceIdentifier.setId(rs.getString("DEVICE_IDENTIFICATION"));
|
||||
deviceIdentifier.setType(rs.getString("DEVICE_TYPE"));
|
||||
activityStatus.setDeviceIdentifier(deviceIdentifier);
|
||||
|
||||
activityStatus.setStatus(ActivityStatus.Status.valueOf(rs.getString("STATUS")));
|
||||
|
||||
List<OperationResponse> operationResponses = new ArrayList<>();
|
||||
if (rs.getInt("UPDATED_TIMESTAMP") != 0) {
|
||||
activityStatus.setUpdatedTimestamp(new java.util.Date(
|
||||
rs.getLong(("UPDATED_TIMESTAMP")) * 1000).toString());
|
||||
|
||||
}
|
||||
if (rs.getTimestamp("RECEIVED_TIMESTAMP") != (null)) {
|
||||
operationResponses.add(OperationDAOUtil.getOperationResponse(rs));
|
||||
responseId = rs.getInt("OP_RES_ID");
|
||||
}
|
||||
activityStatus.setResponses(operationResponses);
|
||||
statusList.add(activityStatus);
|
||||
activity.setActivityStatus(statusList);
|
||||
activity.setActivityId(OperationDAOUtil.getActivityId(rs.getInt("OPERATION_ID")));
|
||||
|
||||
}
|
||||
|
||||
if (operationId == rs.getInt("OPERATION_ID") && enrolmentId != rs.getInt("ENROLMENT_ID")) {
|
||||
activityStatus = new ActivityStatus();
|
||||
|
||||
activity.setType(Activity.Type.valueOf(rs.getString("OPERATION_TYPE")));
|
||||
activity.setCreatedTimeStamp(new java.util.Date(rs.getLong(("CREATED_TIMESTAMP")) * 1000).toString());
|
||||
activity.setCode(rs.getString("OPERATION_CODE"));
|
||||
|
||||
DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
|
||||
deviceIdentifier.setId(rs.getString("DEVICE_IDENTIFICATION"));
|
||||
deviceIdentifier.setType(rs.getString("DEVICE_TYPE"));
|
||||
activityStatus.setDeviceIdentifier(deviceIdentifier);
|
||||
|
||||
activityStatus.setStatus(ActivityStatus.Status.valueOf(rs.getString("STATUS")));
|
||||
|
||||
List<OperationResponse> operationResponses = new ArrayList<>();
|
||||
if (rs.getInt("UPDATED_TIMESTAMP") != 0) {
|
||||
activityStatus.setUpdatedTimestamp(new java.util.Date(
|
||||
rs.getLong(("UPDATED_TIMESTAMP")) * 1000).toString());
|
||||
}
|
||||
if (rs.getTimestamp("RECEIVED_TIMESTAMP") != (null)) {
|
||||
operationResponses.add(OperationDAOUtil.getOperationResponse(rs));
|
||||
responseId = rs.getInt("OP_RES_ID");
|
||||
}
|
||||
activityStatus.setResponses(operationResponses);
|
||||
activity.getActivityStatus().add(activityStatus);
|
||||
|
||||
enrolmentId = rs.getInt("ENROLMENT_ID");
|
||||
}
|
||||
|
||||
if (rs.getInt("OP_RES_ID") != 0 && responseId != rs.getInt("OP_RES_ID")) {
|
||||
if (rs.getTimestamp("RECEIVED_TIMESTAMP") != (null)) {
|
||||
activityStatus.getResponses().add(OperationDAOUtil.getOperationResponse(rs));
|
||||
responseId = rs.getInt("OP_RES_ID");
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new OperationManagementDAOException("Error occurred while getting the operation details from " +
|
||||
"the database.", e);
|
||||
} catch (ClassNotFoundException e) {
|
||||
throw new OperationManagementDAOException("Error occurred while converting the operation response to string.", e);
|
||||
} catch (IOException e) {
|
||||
throw new OperationManagementDAOException("IO exception occurred while converting the operations responses.", e);
|
||||
} finally {
|
||||
OperationManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return activities;
|
||||
}
|
||||
}
|
||||
@ -188,7 +188,7 @@ public class OracleOperationDAOImpl extends GenericOperationDAOImpl {
|
||||
List<Activity> activities = new ArrayList<>();
|
||||
try {
|
||||
Connection conn = OperationManagementDAOFactory.getConnection();
|
||||
String sql = "SELECT opm.ENROLMENT_ID, opm.CREATED_TIMESTAMP, opm.UPDATED_TIMESTAMP, opm.OPERATION_ID,\n"
|
||||
/*String sql = "SELECT opm.ENROLMENT_ID, opm.CREATED_TIMESTAMP, opm.UPDATED_TIMESTAMP, opm.OPERATION_ID,\n"
|
||||
+ "op.OPERATION_CODE, op.TYPE OPERATION_TYPE, opm.STATUS, en.DEVICE_ID,\n"
|
||||
+ "ops.RECEIVED_TIMESTAMP, ops.ID OP_RES_ID, ops.OPERATION_RESPONSE,\n"
|
||||
+ "de.DEVICE_IDENTIFICATION, dt.NAME DEVICE_TYPE\n" + "FROM DM_ENROLMENT_OP_MAPPING opm\n"
|
||||
@ -205,12 +205,62 @@ public class OracleOperationDAOImpl extends GenericOperationDAOImpl {
|
||||
} else {
|
||||
sql += "ORDER BY opm.UPDATED_TIMESTAMP asc OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
|
||||
}
|
||||
*/
|
||||
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
|
||||
String sql = "SELECT " +
|
||||
" opr.ENROLMENT_ID, " +
|
||||
" opr.CREATED_TIMESTAMP, " +
|
||||
" opr.UPDATED_TIMESTAMP, " +
|
||||
" opr.OPERATION_ID, " +
|
||||
" opr.OPERATION_CODE, " +
|
||||
" opr.OPERATION_TYPE, " +
|
||||
" opr.STATUS, " +
|
||||
" opr.DEVICE_ID, " +
|
||||
" opr.DEVICE_IDENTIFICATION, " +
|
||||
" opr.DEVICE_TYPE, " +
|
||||
" ops.RECEIVED_TIMESTAMP, " +
|
||||
" ops.ID OP_RES_ID, " +
|
||||
" ops.OPERATION_RESPONSE " +
|
||||
" FROM " +
|
||||
" (SELECT " +
|
||||
" opm.ID MAPPING_ID, " +
|
||||
" opm.ENROLMENT_ID, " +
|
||||
" opm.CREATED_TIMESTAMP, " +
|
||||
" opm.UPDATED_TIMESTAMP, " +
|
||||
" opm.OPERATION_ID, " +
|
||||
" op.OPERATION_CODE, " +
|
||||
" op.TYPE OPERATION_TYPE, " +
|
||||
" opm.STATUS, " +
|
||||
" en.DEVICE_ID, " +
|
||||
" de.DEVICE_IDENTIFICATION, " +
|
||||
" dt.NAME DEVICE_TYPE, " +
|
||||
" de.TENANT_ID " +
|
||||
" FROM " +
|
||||
" DM_ENROLMENT_OP_MAPPING opm " +
|
||||
" INNER JOIN DM_OPERATION op ON opm.OPERATION_ID = op.ID " +
|
||||
" INNER JOIN DM_ENROLMENT en ON opm.ENROLMENT_ID = en.ID " +
|
||||
" INNER JOIN DM_DEVICE de ON en.DEVICE_ID = de.ID " +
|
||||
" INNER JOIN DM_DEVICE_TYPE dt ON dt.ID = de.DEVICE_TYPE_ID " +
|
||||
" WHERE " +
|
||||
" opm.UPDATED_TIMESTAMP > ? " +
|
||||
" AND de.TENANT_ID = ? " +
|
||||
" ORDER BY opm.UPDATED_TIMESTAMP " +
|
||||
" OFFSET ? ROWS FETCH NEXT ? ROWS ONLY) opr " +
|
||||
" LEFT JOIN DM_DEVICE_OPERATION_RESPONSE ops ON opr.MAPPING_ID = ops.EN_OP_MAP_ID " +
|
||||
" WHERE " +
|
||||
" opr.UPDATED_TIMESTAMP > ? " +
|
||||
" AND opr.TENANT_ID = ? ";
|
||||
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setLong(1, timestamp);
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
stmt.setInt(2, tenantId);
|
||||
stmt.setInt(3, offset);
|
||||
stmt.setInt(4, limit);
|
||||
stmt.setLong(5, timestamp);
|
||||
stmt.setInt(6, tenantId);
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
|
||||
|
||||
@ -145,7 +145,7 @@ public class SQLServerOperationDAOImpl extends GenericOperationDAOImpl {
|
||||
List<Activity> activities = new ArrayList<>();
|
||||
try {
|
||||
Connection conn = OperationManagementDAOFactory.getConnection();
|
||||
String sql = "SELECT opm.ENROLMENT_ID, opm.CREATED_TIMESTAMP, opm.UPDATED_TIMESTAMP, opm.OPERATION_ID,\n"
|
||||
/*String sql = "SELECT opm.ENROLMENT_ID, opm.CREATED_TIMESTAMP, opm.UPDATED_TIMESTAMP, opm.OPERATION_ID,\n"
|
||||
+ "op.OPERATION_CODE, op.TYPE OPERATION_TYPE, opm.STATUS, en.DEVICE_ID,\n"
|
||||
+ "ops.RECEIVED_TIMESTAMP, ops.ID OP_RES_ID, ops.OPERATION_RESPONSE,\n"
|
||||
+ "de.DEVICE_IDENTIFICATION, dt.NAME DEVICE_TYPE\n" + "FROM DM_ENROLMENT_OP_MAPPING opm\n"
|
||||
@ -161,13 +161,61 @@ public class SQLServerOperationDAOImpl extends GenericOperationDAOImpl {
|
||||
sql += "ORDER BY opm.OPERATION_ID OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
|
||||
} else {
|
||||
sql += "ORDER BY opm.UPDATED_TIMESTAMP asc OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
|
||||
}
|
||||
}*/
|
||||
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
|
||||
String sql = "SELECT " +
|
||||
" opr.ENROLMENT_ID, " +
|
||||
" opr.CREATED_TIMESTAMP, " +
|
||||
" opr.UPDATED_TIMESTAMP, " +
|
||||
" opr.OPERATION_ID, " +
|
||||
" opr.OPERATION_CODE, " +
|
||||
" opr.OPERATION_TYPE, " +
|
||||
" opr.STATUS, " +
|
||||
" opr.DEVICE_ID, " +
|
||||
" opr.DEVICE_IDENTIFICATION, " +
|
||||
" opr.DEVICE_TYPE, " +
|
||||
" ops.RECEIVED_TIMESTAMP, " +
|
||||
" ops.ID OP_RES_ID, " +
|
||||
" ops.OPERATION_RESPONSE " +
|
||||
" FROM " +
|
||||
" (SELECT " +
|
||||
" opm.ID MAPPING_ID, " +
|
||||
" opm.ENROLMENT_ID, " +
|
||||
" opm.CREATED_TIMESTAMP, " +
|
||||
" opm.UPDATED_TIMESTAMP, " +
|
||||
" opm.OPERATION_ID, " +
|
||||
" op.OPERATION_CODE, " +
|
||||
" op.TYPE OPERATION_TYPE, " +
|
||||
" opm.STATUS, " +
|
||||
" en.DEVICE_ID, " +
|
||||
" de.DEVICE_IDENTIFICATION, " +
|
||||
" dt.NAME DEVICE_TYPE, " +
|
||||
" de.TENANT_ID " +
|
||||
" FROM" +
|
||||
" DM_ENROLMENT_OP_MAPPING opm " +
|
||||
" INNER JOIN DM_OPERATION op ON opm.OPERATION_ID = op.ID " +
|
||||
" INNER JOIN DM_ENROLMENT en ON opm.ENROLMENT_ID = en.ID " +
|
||||
" INNER JOIN DM_DEVICE de ON en.DEVICE_ID = de.ID " +
|
||||
" INNER JOIN DM_DEVICE_TYPE dt ON dt.ID = de.DEVICE_TYPE_ID " +
|
||||
" WHERE " +
|
||||
" opm.UPDATED_TIMESTAMP > ? " +
|
||||
" AND de.TENANT_ID = ? " +
|
||||
" ORDER BY opm.UPDATED_TIMESTAMP " +
|
||||
" OFFSET ? ROWS FETCH NEXT ? ROWS ONLY) opr " +
|
||||
" LEFT JOIN DM_DEVICE_OPERATION_RESPONSE ops ON opr.MAPPING_ID = ops.EN_OP_MAP_ID " +
|
||||
" WHERE" +
|
||||
" opr.UPDATED_TIMESTAMP > ? " +
|
||||
" AND opr.TENANT_ID = ? ";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setLong(1, timestamp);
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
stmt.setInt(2, tenantId);
|
||||
stmt.setInt(3, offset);
|
||||
stmt.setInt(4, limit);
|
||||
stmt.setLong(5, timestamp);
|
||||
stmt.setInt(6, tenantId);
|
||||
|
||||
rs = stmt.executeQuery();
|
||||
|
||||
|
||||
@ -92,7 +92,7 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager {
|
||||
operations = this.getValidOperationNames(); //list operations for each device type
|
||||
devices = deviceManagementProviderService.getAllDevices(deviceType, false);//list devices for each type
|
||||
if (!devices.isEmpty()) {
|
||||
if (operations != null) {
|
||||
if (operations != null && DeviceManagerUtil.getValidDeviceIdentifiers(devices).size() != 0) {
|
||||
for (String str : operations) {
|
||||
CommandOperation operation = new CommandOperation();
|
||||
operation.setEnabled(true);
|
||||
|
||||
@ -247,6 +247,7 @@ public final class DeviceManagerUtil {
|
||||
switch (device.getEnrolmentInfo().getStatus()) {
|
||||
case BLOCKED:
|
||||
case REMOVED:
|
||||
break;
|
||||
case SUSPENDED:
|
||||
break;
|
||||
default:
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<artifactId>device-mgt</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<artifactId>device-mgt</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -45,6 +45,7 @@ if (!user) {
|
||||
} else {
|
||||
queryString = "?" + queryString;
|
||||
}
|
||||
|
||||
var deviceType = request.getParameter("deviceType"); // need a better solution here
|
||||
deviceTypeConfig = utility.getDeviceTypeConfig(deviceType);
|
||||
if (deviceTypeConfig && deviceTypeConfig.deviceType.downloadAgentUri) {
|
||||
@ -73,6 +74,31 @@ if (!user) {
|
||||
} else {
|
||||
result = 400;
|
||||
}
|
||||
}else if (uriMatcher.match("/{context}/api/devices/sketch/generate_link")) {
|
||||
|
||||
if (!request.getContent()){
|
||||
log.error("Request Payload Is Empty");
|
||||
// HTTP status code 400 refers to - Bad request.
|
||||
result = 400;
|
||||
}else{
|
||||
deviceType = request.getContent()["deviceType"];
|
||||
queryString = "?deviceName=" + request.getContent()["deviceName"] +"&deviceType="+
|
||||
request.getContent()["deviceType"]+"&sketchType="+request.getContent()["sketchType"];
|
||||
deviceTypeConfig = utility.getDeviceTypeConfig(deviceType);
|
||||
if (deviceTypeConfig && deviceTypeConfig.deviceType.downloadAgentUri) {
|
||||
|
||||
sketchDownloadEndPoint = devicemgtProps["httpsURL"] + "/" + deviceTypeConfig.deviceType.downloadAgentUri;
|
||||
|
||||
var requestUrl = sketchDownloadEndPoint + queryString
|
||||
result = "curl -k -o "+request.getContent()["deviceName"]+".zip -H \"Authorization: Bearer "
|
||||
+JSON.parse(session.get(constants["TOKEN_PAIR"])).accessToken+"\" " +"'"+requestUrl+"'";
|
||||
|
||||
} else {
|
||||
// HTTP status code 400 refers to - Bad request.
|
||||
result = 400;
|
||||
}
|
||||
}
|
||||
|
||||
} else if (uriMatcher.match("/{context}/api/devices/all")) {
|
||||
result = deviceModule.getOwnDevices();
|
||||
|
||||
|
||||
@ -150,7 +150,8 @@
|
||||
"perm:device-types:events:view",
|
||||
"perm:admin:device-type",
|
||||
"perm:device:enroll",
|
||||
"perm:geo-service:analytics"
|
||||
"perm:geo-service:analytics-view",
|
||||
"perm:geo-service:alerts-manage"
|
||||
],
|
||||
"isOAuthEnabled": true,
|
||||
"backendRestEndpoints": {
|
||||
|
||||
@ -67,23 +67,28 @@ deviceModule = function () {
|
||||
var carbonUser = session.get(constants["USER_SESSION_KEY"]);
|
||||
if (!carbonUser) {
|
||||
log.error("User object was not found in the session");
|
||||
throw constants["ERRORS"]["USER_NOT_FOUND"];
|
||||
userModule.logout(function () {
|
||||
response.sendRedirect(devicemgtProps["appContext"] + "login");
|
||||
});
|
||||
}
|
||||
var userName = carbonUser.username + "@" + carbonUser.domain;
|
||||
var locationHistory = [];
|
||||
try {
|
||||
var fromDate = new Date();
|
||||
fromDate.setHours(fromDate.getHours() - 2);
|
||||
var toDate = new Date();
|
||||
var serviceUrl = devicemgtProps["httpsURL"] + '/api/device-mgt/v1.0/geo-services/stats/' + deviceType + '/' + deviceId;
|
||||
serviceInvokers.XMLHttp.get(serviceUrl,
|
||||
function (backendResponse) {
|
||||
if (backendResponse.status === 200 && backendResponse.responseText) {
|
||||
locationHistory = JSON.parse(backendResponse.responseText);
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
log.error(e.message, e);
|
||||
var geoServicesEnabled = devicemgtProps.serverConfig.geoLocationConfiguration.isEnabled;
|
||||
if (geoServicesEnabled) {
|
||||
try {
|
||||
var fromDate = new Date();
|
||||
fromDate.setHours(fromDate.getHours() - 2);
|
||||
var toDate = new Date();
|
||||
var serviceUrl = devicemgtProps["httpsURL"] + '/api/device-mgt/v1.0/geo-services/stats/' + deviceType + '/' + deviceId + '?from=' + fromDate.getTime() + '&to=' + toDate.getTime();
|
||||
serviceInvokers.XMLHttp.get(serviceUrl,
|
||||
function (backendResponse) {
|
||||
if (backendResponse.status === 200 && backendResponse.responseText) {
|
||||
locationHistory = JSON.parse(backendResponse.responseText);
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
log.error(e.message, e);
|
||||
}
|
||||
}
|
||||
|
||||
var locationInfo = {};
|
||||
@ -261,7 +266,9 @@ deviceModule = function () {
|
||||
url, function (responsePayload) {
|
||||
if(!responsePayload["responseText"]){
|
||||
log.error("Error while fetching device count. API `" + url + "` returns HTTP: " + responsePayload["status"]);
|
||||
throw constants["ERRORS"]["UNKNOWN_ERROR"];
|
||||
userModule.logout(function () {
|
||||
response.sendRedirect(devicemgtProps["appContext"] + "login");
|
||||
});
|
||||
}
|
||||
return parse(responsePayload["responseText"])["count"];
|
||||
},
|
||||
@ -272,7 +279,9 @@ deviceModule = function () {
|
||||
);
|
||||
} else {
|
||||
log.error("User object was not found in the session");
|
||||
throw constants["ERRORS"]["USER_NOT_FOUND"];
|
||||
userModule.logout(function () {
|
||||
response.sendRedirect(devicemgtProps["appContext"] + "login");
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@ -300,7 +309,9 @@ deviceModule = function () {
|
||||
);
|
||||
} else {
|
||||
log.error("User object was not found in the session");
|
||||
throw constants["ERRORS"]["USER_NOT_FOUND"];
|
||||
userModule.logout(function () {
|
||||
response.sendRedirect(devicemgtProps["appContext"] + "login");
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@ -369,7 +380,9 @@ deviceModule = function () {
|
||||
var carbonUser = session.get(constants["USER_SESSION_KEY"]);
|
||||
if (!carbonUser) {
|
||||
log.error("User object was not found in the session");
|
||||
throw constants["ERRORS"]["USER_NOT_FOUND"];
|
||||
userModule.logout(function () {
|
||||
response.sendRedirect(devicemgtProps["appContext"] + "login");
|
||||
});
|
||||
}
|
||||
var userName = carbonUser.username + "@" + carbonUser.domain;
|
||||
var config = {};
|
||||
@ -397,7 +410,7 @@ deviceModule = function () {
|
||||
var jwtClient = JWTClientManagerService.getJWTClient();
|
||||
// returning access token by JWT grant type
|
||||
var deviceScope = "device_" + type.replace(" ", "") + "_" + deviceId + " perm:device:enroll " +
|
||||
"perm:device:disenroll perm:device:modify perm:devices:operations perm:device:publish-event";
|
||||
"perm:device:disenroll perm:device:modify perm:device:operations perm:device:publish-event";
|
||||
var tokenInfo = jwtClient.getAccessToken(config.clientId, config.clientSecret,
|
||||
userName, deviceScope);
|
||||
config.accessToken = tokenInfo.getAccessToken();
|
||||
|
||||
@ -41,7 +41,9 @@ var groupModule = {};
|
||||
} else {
|
||||
if (!user) {
|
||||
log.error("User object was not found in the session");
|
||||
throw constants["ERRORS"]["USER_NOT_FOUND"];
|
||||
userModule.logout(function () {
|
||||
response.sendRedirect(devicemgtProps["appContext"] + "login");
|
||||
});
|
||||
}
|
||||
log.error("Access denied for user: " + user.username);
|
||||
return -1;
|
||||
|
||||
@ -127,7 +127,9 @@ policyModule = function () {
|
||||
var carbonUser = session.get(constants["USER_SESSION_KEY"]);
|
||||
if (!carbonUser) {
|
||||
log.error("User object was not found in the session");
|
||||
throw constants["ERRORS"]["USER_NOT_FOUND"];
|
||||
userModule.logout(function () {
|
||||
response.sendRedirect(devicemgtProps["appContext"] + "login");
|
||||
});
|
||||
}
|
||||
try {
|
||||
var url = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] +
|
||||
@ -145,7 +147,9 @@ policyModule = function () {
|
||||
var carbonUser = session.get(constants["USER_SESSION_KEY"]);
|
||||
if (!carbonUser) {
|
||||
log.error("User object was not found in the session");
|
||||
throw constants["ERRORS"]["USER_NOT_FOUND"];
|
||||
userModule.logout(function () {
|
||||
response.sendRedirect(devicemgtProps["appContext"] + "login");
|
||||
});
|
||||
}
|
||||
try {
|
||||
var url = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] +
|
||||
|
||||
@ -39,7 +39,7 @@ var invokers = function () {
|
||||
var constants = require("/app/modules/constants.js");
|
||||
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
|
||||
var tokenUtil = require("/app/modules/oauth/token-handlers.js")["handlers"];
|
||||
|
||||
var tokenHandler = require("/app/modules/oauth/token-handler-utils.js")["utils"];
|
||||
/**
|
||||
* This method reads the token pair from the session and return the access token.
|
||||
* If the token pair is not set in the session, this will return null.
|
||||
@ -259,10 +259,12 @@ var invokers = function () {
|
||||
var wsRequest = new ws.WSRequest();
|
||||
var options = [];
|
||||
if (devicemgtProps["isOAuthEnabled"]) {
|
||||
var accessToken = privateMethods.getAccessToken();
|
||||
var adminUsername = devicemgtProps["adminUser"];
|
||||
var accessToken = tokenHandler.getJwtToken(adminUsername);
|
||||
var decoded = tokenHandler.encode(accessToken);
|
||||
if (accessToken) {
|
||||
var authenticationHeaderName = String(constants["AUTHORIZATION_HEADER"]);
|
||||
var authenticationHeaderValue = String(constants["BEARER_PREFIX"] + accessToken);
|
||||
var authenticationHeaderValue = String(constants["BEARER_PREFIX"] + decoded);
|
||||
var headers = [];
|
||||
var oAuthAuthenticationData = {};
|
||||
oAuthAuthenticationData.name = authenticationHeaderName;
|
||||
|
||||
@ -176,7 +176,7 @@
|
||||
<th data-for="By Ownership" class="select-filter"></th>
|
||||
<th class="no-sort"></th>
|
||||
</tr>
|
||||
<tr class="bulk-action-row">
|
||||
<tr class="bulk-action-row hidden">
|
||||
<th colspan="7">
|
||||
<ul class="tiles">
|
||||
{{#unless group}}
|
||||
@ -497,7 +497,7 @@
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>Please select one ore more devices in order to perform this
|
||||
<h3>Please select one or more devices in order to perform this
|
||||
operation.</h3>
|
||||
<br/>
|
||||
<div class="buttons">
|
||||
|
||||
@ -313,7 +313,7 @@ function loadDevices(searchType, searchParam) {
|
||||
},
|
||||
{
|
||||
targets: 4,
|
||||
data: 'deviceType',
|
||||
data: 'type',
|
||||
class: 'remove-padding-top viewEnabledIcon',
|
||||
render: function (status, type, row, meta) {
|
||||
return getDeviceTypeLabel(row.deviceType);
|
||||
@ -333,7 +333,7 @@ function loadDevices(searchType, searchParam) {
|
||||
},
|
||||
{
|
||||
targets: 6,
|
||||
data: 'status',
|
||||
data: 'action-buttons',
|
||||
class: 'text-right content-fill text-left-on-grid-view no-wrap tooltip-overflow-fix',
|
||||
render: function (status, type, row, meta) {
|
||||
var deviceType = row.deviceType;
|
||||
|
||||
@ -138,7 +138,7 @@
|
||||
<th data-for="By Status" class="select-filter"></th>
|
||||
<th class="no-sort"></th>
|
||||
</tr>
|
||||
<tr class="bulk-action-row">
|
||||
<tr class="bulk-action-row hidden">
|
||||
<th colspan="9">
|
||||
<ul class="tiles">
|
||||
{{#if removePermitted}}
|
||||
|
||||
@ -77,7 +77,7 @@
|
||||
<tr class="sort-row">
|
||||
<th>By Username</th>
|
||||
</tr>
|
||||
<tr class="bulk-action-row">
|
||||
<tr class="bulk-action-row hidden">
|
||||
<th colspan="3">
|
||||
<ul class="tiles">
|
||||
<li class="square">
|
||||
|
||||
@ -219,6 +219,7 @@ $.fn.datatables_extended = function(settings){
|
||||
$(document).off('click','.viewEnabledIcon');
|
||||
//--- End of EMM related codes
|
||||
} else if ($(button).html() == 'Cancel'){
|
||||
$('.bulk-action-row').addClass('hidden');
|
||||
thisTable.removeClass("table-selectable");
|
||||
$(button).addClass("active").html('Select');
|
||||
$(button).parent().next().children().addClass("disabled");
|
||||
@ -255,6 +256,11 @@ $.fn.datatables_extended = function(settings){
|
||||
$('body').on('click', '[data-type=selectable]', function(){
|
||||
var rowSelectedClass = 'DTTT_selected selected';
|
||||
$(this).toggleClass(rowSelectedClass);
|
||||
if ($('.table-selectable .DTTT_selected').length > 0) {
|
||||
$('.bulk-action-row').removeClass('hidden');
|
||||
} else {
|
||||
$('.bulk-action-row').addClass('hidden');
|
||||
}
|
||||
var button = this,
|
||||
thisTable = $(this).closest('.dataTables_wrapper').find('.dataTable').dataTable();
|
||||
|
||||
|
||||
@ -174,10 +174,11 @@ $.fn.datatables_extended_serverside_paging = function (settings, url, dataFilter
|
||||
var titles = [];
|
||||
column.nodes().unique().sort().each(function (d, j) {
|
||||
var title = $(d).attr('data-display');
|
||||
var searchVal = $(d).attr('data-search');
|
||||
if ($.inArray(title, titles) < 0) {
|
||||
titles.push(title);
|
||||
if (title !== undefined) {
|
||||
select.append('<option value="' + title + '">' + title + '</option>')
|
||||
select.append('<option value="' + searchVal + '">' + title + '</option>')
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -284,6 +285,7 @@ $.fn.datatables_extended_serverside_paging = function (settings, url, dataFilter
|
||||
$(document).off('click', '.viewEnabledIcon');
|
||||
//--- End of EMM related codes
|
||||
} else if ($(button).html() == 'Cancel') {
|
||||
$('.bulk-action-row').addClass('hidden');
|
||||
thisTable.removeClass("table-selectable");
|
||||
$(button).addClass("active").html('Select');
|
||||
$(button).parent().next().children().addClass("disabled");
|
||||
@ -321,6 +323,11 @@ $.fn.datatables_extended_serverside_paging = function (settings, url, dataFilter
|
||||
$('body').on('click', '[data-type=selectable]', function () {
|
||||
var rowSelectedClass = 'DTTT_selected selected';
|
||||
$(this).toggleClass(rowSelectedClass);
|
||||
if ($('.table-selectable .DTTT_selected').length > 0) {
|
||||
$('.bulk-action-row').removeClass('hidden');
|
||||
} else {
|
||||
$('.bulk-action-row').addClass('hidden');
|
||||
}
|
||||
var button = this,
|
||||
thisTable = $(this).closest('.dataTables_wrapper').find('.dataTable').dataTable();
|
||||
|
||||
|
||||
@ -60,7 +60,7 @@
|
||||
|
||||
<form id="form-{{operation}}" style="padding-bottom: 20px;"-->
|
||||
<select id="operation-type" class="form-control" onChange="operationTypeChage(this)" style="display:none">
|
||||
<option value="CONFIG">Config</option>
|
||||
<option value="PROFILE">Profile</option>
|
||||
<option value="COMMAND">Command</option>
|
||||
</select>
|
||||
<br />
|
||||
|
||||
@ -92,7 +92,23 @@
|
||||
</div>
|
||||
<div id="operations-log-container">
|
||||
<div class="panel-body">
|
||||
Not available yet
|
||||
<table class="table table-striped table-hover table-responsive list-table display responsive nowrap data-table"
|
||||
id="operation-log">
|
||||
<thead class="block">
|
||||
<tr class="sort-row">
|
||||
<!-- <th class="content-fill no-sort"></th> -->
|
||||
<th>Name</th>
|
||||
<th>Position</th>
|
||||
<th>Office</th>
|
||||
<!-- <th>Age</th>
|
||||
<th>Start date</th>
|
||||
<th>Salary</th>
|
||||
<th class="no-sort"></th> -->
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<br class="c-both"/>
|
||||
</div>
|
||||
|
||||
@ -25,9 +25,9 @@ $(window).load(function () {
|
||||
connect(websocketUrl)
|
||||
});
|
||||
|
||||
$(window).unload(function () {
|
||||
window.onbeforeunload = function() {
|
||||
disconnect();
|
||||
});
|
||||
};
|
||||
|
||||
//websocket connection
|
||||
function connect(target) {
|
||||
|
||||
@ -109,11 +109,11 @@
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.device-id a{
|
||||
font-size: 0.4em;
|
||||
.device-info a{
|
||||
position: absolute;
|
||||
margin: 0px 5px;
|
||||
right: -5px;
|
||||
top:0px;
|
||||
}
|
||||
.device-info h4:last-child{
|
||||
margin: 0px;
|
||||
|
||||
@ -73,7 +73,6 @@ function loadOperationsLog(update) {
|
||||
},
|
||||
dataSrc: function(json) {
|
||||
$("#operations-spinner").addClass("hidden");
|
||||
$("#operations-log-container").empty();
|
||||
return json.data;
|
||||
}
|
||||
},
|
||||
|
||||
@ -530,11 +530,21 @@
|
||||
</div>
|
||||
|
||||
<div id="dateRangePopup">
|
||||
<div>
|
||||
<label> From: <input id="timeFrom" type="text"> </label>
|
||||
<label> To: <input id="timeTo" type="text"> </label>
|
||||
<button type="button" class="btn btn-info btn-xs" onClick="focusOnHistorySpatialObject(document.getElementById('objectId').innerHTML, document.getElementById('timeFrom').value, document.getElementById('timeTo').value);return false;">Full History</button>
|
||||
<div class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3">From:</label>
|
||||
<div class="col-sm-9">
|
||||
<input id="timeFromCal" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3">To:</label>
|
||||
<div class="col-sm-9">
|
||||
<input id="timeToCal" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" class="btn btn-info btn-xs" onClick="focusOnHistorySpatialObject(document.getElementById('objectId').innerHTML, document.getElementById('timeFromCal').value, document.getElementById('timeToCal').value);return false;">Full History</button>
|
||||
</div>
|
||||
|
||||
<div id="markerPopupStop" class="popover top">
|
||||
@ -707,7 +717,7 @@
|
||||
{{js "js/leaflet/Leaflet.fullscreen.min.js" }}
|
||||
{{js "js/leaflet/Marker.Rotate.js" }}
|
||||
{{js "js/leaflet/leaflet.draw.js" }}
|
||||
{{js "js/jquery/jquery-ui.min.js" }}
|
||||
{{!js "js/jquery/jquery-ui.min.js" }}
|
||||
<!-- Leaflet plugins libries -->
|
||||
|
||||
{{js "js/firstTemp.js" }}
|
||||
@ -735,20 +745,37 @@
|
||||
geoPublicUri = $("#geo-charts").data("geo-public-uri");
|
||||
{{#if geoServicesEnabled}}
|
||||
var geoToolsMenu = $('#location-action-bar');
|
||||
var realtTime = createGeoToolListItem('javascript:enableRealTime()',
|
||||
'Return to Real Time View', 'fw fw-undo', geoToolsMenu);
|
||||
|
||||
var refreshMap = createGeoToolListItem('javascript:void(0);', 'Refresh', 'fw fw-refresh', geoToolsMenu, true);
|
||||
refreshMap.addClass("geo-alert");
|
||||
refreshMap.on("click", function(){enableRealTime();});
|
||||
|
||||
var realtTime = createGeoToolListItem('javascript:void(0);', 'Return to Real Time View', 'fw fw-undo', geoToolsMenu, true);
|
||||
realtTime.on("click", function(){enableRealTime();});
|
||||
realtTime.css("display", "none");
|
||||
realtTime.attr("id", "realTimeShow");
|
||||
createGeoToolListItem(geoPublicUri + '/assets/html_templates/modal/speed_alert.html',
|
||||
|
||||
var speedAlert = createGeoToolListItem(geoPublicUri + '/assets/html_templates/modal/speed_alert.html',
|
||||
'Set Speed Alert', 'glyphicon glyphicon-dashboard', geoToolsMenu);
|
||||
createGeoToolListItem(geoPublicUri + '/assets/html_templates/modal/stationery_alert.html',
|
||||
speedAlert.addClass("geo-alert");
|
||||
|
||||
var stationaryAlert = createGeoToolListItem(geoPublicUri + '/assets/html_templates/modal/stationery_alert.html',
|
||||
'Add Stationary Alert', 'glyphicon glyphicon-link', geoToolsMenu);
|
||||
createGeoToolListItem(geoPublicUri + '/assets/html_templates/modal/within_alert.html',
|
||||
stationaryAlert.addClass("geo-alert");
|
||||
|
||||
var withinAlert = createGeoToolListItem(geoPublicUri + '/assets/html_templates/modal/within_alert.html',
|
||||
'Add Geofence Alert', 'glyphicon glyphicon-log-in', geoToolsMenu);
|
||||
createGeoToolListItem(geoPublicUri + '/assets/html_templates/modal/exit_alert.html',
|
||||
withinAlert.addClass("geo-alert");
|
||||
|
||||
var exitAlert = createGeoToolListItem(geoPublicUri + '/assets/html_templates/modal/exit_alert.html',
|
||||
'Add Geofence Exit Alert', 'glyphicon glyphicon-log-out', geoToolsMenu);
|
||||
exitAlert.addClass("geo-alert");
|
||||
{{/if}}
|
||||
}
|
||||
|
||||
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
|
||||
$('#dateRangePopup.ui-dialog-content').dialog('close');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{{/zone}}
|
||||
|
||||
@ -35,12 +35,12 @@ var zoomLevel = 15;
|
||||
var tileSet = "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png";
|
||||
var attribution = "© <a href='https://openstreetmap.org/copyright'>OpenStreetMap</a> contributors";
|
||||
|
||||
function initialLoad() {
|
||||
function initialLoad(geoFencingEnabled) {
|
||||
if (document.getElementById('map') == null) {
|
||||
setTimeout(initialLoad, 500); // give everything some time to render
|
||||
} else {
|
||||
initializeMap();
|
||||
processAfterInitializationMap();
|
||||
processAfterInitializationMap(geoFencingEnabled);
|
||||
$("#loading").hide();
|
||||
}
|
||||
}
|
||||
@ -111,7 +111,7 @@ var geoAlertsBar;
|
||||
var groupedOverlays;
|
||||
var layerControl;
|
||||
|
||||
function processAfterInitializationMap() {
|
||||
function processAfterInitializationMap(geoFencingEnabled) {
|
||||
attributionControl = L.control({
|
||||
position: "bottomright"
|
||||
});
|
||||
@ -123,7 +123,9 @@ function processAfterInitializationMap() {
|
||||
map.addControl(L.control.fullscreen({position: 'bottomright'}));
|
||||
|
||||
geoAlertsBar = L.control.geoAlerts({position: 'topright'});
|
||||
map.addControl(geoAlertsBar);
|
||||
if (geoFencingEnabled) {
|
||||
map.addControl(geoAlertsBar);
|
||||
}
|
||||
|
||||
groupedOverlays = {
|
||||
"Web Map Service layers": {}
|
||||
@ -254,7 +256,7 @@ function focusOnSpatialObject(objectId) {
|
||||
// TODO: check the map._layersMaxZoom and set the zoom level accordingly
|
||||
|
||||
spatialObject.marker.openPopup();
|
||||
getAlertsHistory(deviceType, deviceId, new Date($('#timeFrom').val()).getTime(), new Date($('#timeTo').val()).getTime());
|
||||
getAlertsHistory(deviceType, deviceId, new Date($('#timeFromCal').val()).getTime(), new Date($('#timeToCal').val()).getTime());
|
||||
spatialObject.drawPath();
|
||||
if (speedGraphControl) {
|
||||
setTimeout(function () {
|
||||
@ -277,6 +279,7 @@ var getProviderData = function (timeFrom, timeTo) {
|
||||
var serviceUrl = '/api/device-mgt/v1.0/geo-services/stats/' + deviceType + '/' + deviceId + '?from=' + timeFrom + '&to=' + timeTo;
|
||||
invokerUtil.get(serviceUrl,
|
||||
function (data) {
|
||||
if(data === ""){showCurrentLocation(tableData);}
|
||||
tableData = JSON.parse(data);
|
||||
if (tableData.length === 0) {
|
||||
showCurrentLocation(tableData);
|
||||
@ -359,7 +362,8 @@ function notifyError(message) {
|
||||
}
|
||||
|
||||
function enableRealTime() {
|
||||
document.getElementById('realTimeShow').style.display = 'none';
|
||||
$("#realTimeShow").hide();
|
||||
$(".geo-alert").show();
|
||||
spatialObject = currentSpatialObjects[selectedSpatialObject];
|
||||
if (spatialObject) {
|
||||
spatialObject.removePath();
|
||||
@ -368,8 +372,13 @@ function enableRealTime() {
|
||||
selectedSpatialObject = null;
|
||||
clearFocus();
|
||||
clearMap();
|
||||
document.getElementById('objectInfo').style.display = 'none';
|
||||
isBatchModeOn = false;
|
||||
initializeGeoLocation(geoFencingEnabled);
|
||||
}
|
||||
|
||||
function disableRealTime(){
|
||||
$(".geo-alert").hide();
|
||||
$("#realTimeShow").show();
|
||||
}
|
||||
|
||||
var geoFencingEnabled = true;
|
||||
@ -456,7 +465,7 @@ function focusOnHistorySpatialObject(objectId, timeFrom, timeTo) {
|
||||
notifyError('No end time provided to show history. Please provide a suitable value' + timeTo);
|
||||
} else {
|
||||
$('#dateRangePopup').dialog('close');
|
||||
document.getElementById('realTimeShow').style.display = 'block';
|
||||
disableRealTime();
|
||||
isBatchModeOn = true;
|
||||
clearFocus(); // Clear current focus if any
|
||||
clearMap();
|
||||
@ -504,7 +513,7 @@ function focusOnHistorySpatialObject(objectId, timeFrom, timeTo) {
|
||||
// TODO: check the map._layersMaxZoom and set the zoom level accordingly
|
||||
|
||||
spatialObject.marker.openPopup();
|
||||
getAlertsHistory(deviceType, deviceId, new Date($('#timeFrom').val()).getTime(), new Date($('#timeTo').val()).getTime());
|
||||
getAlertsHistory(deviceType, deviceId, new Date($('#timeFromCal').val()).getTime(), new Date($('#timeToCal').val()).getTime());
|
||||
spatialObject.drawPath();
|
||||
if (speedGraphControl) {
|
||||
setTimeout(function () {
|
||||
@ -524,11 +533,13 @@ function clearFocus() {
|
||||
}
|
||||
}
|
||||
|
||||
function createGeoToolListItem(link, text, icon, menuRoot) {
|
||||
function createGeoToolListItem(link, text, icon, menuRoot, noModal) {
|
||||
var listItem = $("<div/>", { class: 'action-btn filter'}).appendTo(menuRoot);
|
||||
var anchor = $("<a/>", {href: link, text: ' ' + text}).appendTo(listItem);
|
||||
anchor.attr('data-toggle', 'modal');
|
||||
anchor.attr('data-target', '#commonModal');
|
||||
if(!noModal){
|
||||
anchor.attr('data-toggle', 'modal');
|
||||
anchor.attr('data-target', '#commonModal');
|
||||
}
|
||||
$("<i/>", {class: icon}).prependTo(anchor);
|
||||
return listItem;
|
||||
}
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
$(function() {
|
||||
$("#timeFrom").datepicker({
|
||||
$("#timeFromCal").datepicker({
|
||||
orientation: 'top'
|
||||
});
|
||||
$("#timeTo").datepicker({
|
||||
$("#timeToCal").datepicker({
|
||||
orientation: 'top'
|
||||
});
|
||||
});
|
||||
|
||||
@ -185,6 +185,9 @@ function setSpeedAlert() {
|
||||
if (speedAlertValue == null || speedAlertValue === undefined || speedAlertValue == "") {
|
||||
var message = "Speed cannot be empty.";
|
||||
noty({text: message, type : 'error' });
|
||||
} else if (areaName.indexOf(" ") > -1) {
|
||||
var message = "Area Name cannot contain spaces.";
|
||||
noty({text: message, type : 'error' });
|
||||
} else {
|
||||
data = {
|
||||
'parseData': JSON.stringify({'speedAlertValue': speedAlertValue, 'deviceId': deviceId}), // parseKey : parseValue pair , this key pair is replace with the key in the template file
|
||||
@ -235,6 +238,9 @@ function setWithinAlert(leafletId) {
|
||||
if (areaName == null || areaName === undefined || areaName == "") {
|
||||
var message = "Area Name cannot be empty.";
|
||||
noty({text: message, type : 'error' });
|
||||
} else if (areaName.indexOf(" ") > -1) {
|
||||
var message = "Area Name cannot contain spaces.";
|
||||
noty({text: message, type : 'error' });
|
||||
} else {
|
||||
var data = {
|
||||
'parseData': JSON.stringify({
|
||||
@ -288,6 +294,9 @@ function setExitAlert(leafletId) {
|
||||
if (areaName == null || areaName === undefined || areaName == "") {
|
||||
var message = "Area Name cannot be empty.";
|
||||
noty({text: message, type : 'error' });
|
||||
} else if (areaName.indexOf(" ") > -1) {
|
||||
var message = "Area Name cannot contain spaces.";
|
||||
noty({text: message, type : 'error' });
|
||||
} else {
|
||||
var data = {
|
||||
'parseData': JSON.stringify({
|
||||
@ -348,6 +357,9 @@ function setStationeryAlert(leafletId) {
|
||||
if (stationeryName == null || stationeryName === undefined || stationeryName == "") {
|
||||
var message = "Stationery Name cannot be empty.";
|
||||
noty({text: message, type : 'error' });
|
||||
} else if (stationeryName.indexOf(" ") > -1) {
|
||||
var message = "Stationery Name cannot contain spaces.";
|
||||
noty({text: message, type : 'error' });
|
||||
} else if (fluctuationRadius == null || fluctuationRadius === undefined || fluctuationRadius == "") {
|
||||
var message = "Fluctuation Radius cannot be empty.";
|
||||
noty({text: message, type : 'error' });
|
||||
@ -462,6 +474,9 @@ function setTrafficAlert(leafletId) {
|
||||
if (areaName == null || areaName === undefined || areaName == "") {
|
||||
var message = "Area Name cannot be empty.";
|
||||
noty({text: message, type : 'error' });
|
||||
} else if (areaName.indexOf(" ") > -1) {
|
||||
var message = "Area Name cannot contain spaces.";
|
||||
noty({text: message, type : 'error' });
|
||||
} else {
|
||||
var data = {
|
||||
'parseData': JSON.stringify({
|
||||
|
||||
@ -630,7 +630,7 @@ function initializeGeoLocation(geoFencingEnabled) {
|
||||
+ "deviceId=" + deviceId + "&deviceType=" + deviceType + "&websocketToken=" + wsToken;
|
||||
$("#proximity_alert").hide();
|
||||
|
||||
initialLoad();
|
||||
initialLoad(geoFencingEnabled);
|
||||
InitSpatialObject(geoFencingEnabled);
|
||||
|
||||
if (geoFencingEnabled) {
|
||||
|
||||
@ -50,11 +50,10 @@ function onRequest(context) {
|
||||
var BILLING_INFO_RETRY_COUNT_KEY = 'BILLING_INFO_RETRY_COUNT_' + context.user.domain;
|
||||
|
||||
if (viewModal.Main.Account.billingEnabled) {
|
||||
var cookie = getLoginCookie();
|
||||
if (!session.get(BILLING_INFO_KEY) || daysAfterLastCheck(session.get(BILLING_INFO_KEY).lastChecked) > 1) {
|
||||
session.put(BILLING_INFO_RETRY_COUNT_KEY, 0);
|
||||
var serviceUrl = viewModal.Main.Account.cloudMgtHost + "/cloudmgt/site/blocks/admin/admin.jag";
|
||||
getBillingData(serviceUrl, cookie, 1);
|
||||
getBillingData(serviceUrl, getLoginCookie(), 1);
|
||||
}
|
||||
|
||||
var billingInfo = session.get(BILLING_INFO_KEY);
|
||||
@ -65,7 +64,7 @@ function onRequest(context) {
|
||||
var cloudMgtIndexPage = viewModal.Main.Account.cloudMgtIndexPage;
|
||||
|
||||
if (!billingInfo) {
|
||||
recordFirstLogin(serviceUrl, cookie, 1);
|
||||
recordFirstLogin(serviceUrl, getLoginCookie(), 1);
|
||||
log.info("Access denied for tenant: " + context.user.domain
|
||||
+ " with a NULL subscription. Redirected to CloudMgt");
|
||||
response.sendRedirect(cloudMgtIndexPage);
|
||||
|
||||
@ -384,6 +384,11 @@ var responsiveTextRatio = 0.2,
|
||||
//Event for row select/deselect
|
||||
$('body').on('click', '[data-type=selectable]', function(){
|
||||
$(this).toggleClass(ROW_SELECTED_CLASS);
|
||||
if ($('.table-selectable .DTTT_selected').length > 0) {
|
||||
$('.bulk-action-row').removeClass('hidden');
|
||||
} else {
|
||||
$('.bulk-action-row').addClass('hidden');
|
||||
}
|
||||
var button = this,
|
||||
thisTable = $(this).closest('.dataTables_wrapper').find('.dataTable').dataTable();
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
<parent>
|
||||
<artifactId>device-mgt</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>carbon-devicemgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>email-sender</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>carbon-devicemgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,13 +22,13 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>identity-extensions</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.device.mgt.oauth.extensions</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - OAuth Extensions</name>
|
||||
<url>http://wso2.org</url>
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
<parent>
|
||||
<artifactId>identity-extensions</artifactId>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>identity-extensions</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -103,11 +103,19 @@ public class JWTClientManagerServiceImpl implements JWTClientManagerService {
|
||||
if (defaultJWTClientMode != null && !defaultJWTClientMode.isEmpty()) {
|
||||
isDefaultJwtClient = Boolean.parseBoolean(defaultJWTClientMode);
|
||||
}
|
||||
JWTConfig jwtConfig = new JWTConfig(properties);
|
||||
if (isDefaultJwtClient) {
|
||||
try {
|
||||
JWTConfig jwtConfig = new JWTConfig(properties);
|
||||
defaultJWTClient = new JWTClient(jwtConfig, true);
|
||||
addJWTClient(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME, defaultJWTClient);
|
||||
} catch (JWTClientAlreadyExistsException e) {
|
||||
log.warn("Attempting to register a default jwt client for the super tenant" +
|
||||
" when one already exists. Returning existing jwt client", e);
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
JWTClient jwtClient = new JWTClient(jwtConfig);
|
||||
addJWTClient(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME, jwtClient);
|
||||
} catch (JWTClientAlreadyExistsException e) {
|
||||
log.warn("Attempting to register a jwt client for the super tenant" +
|
||||
" when one already exists. Returning existing jwt client", e);
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>carbon-devicemgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,14 +22,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>policy-mgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.complex.policy.decision.point</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - Policy Decision Point</name>
|
||||
<description>WSO2 Carbon - Policy Decision Point</description>
|
||||
|
||||
@ -3,14 +3,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>policy-mgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.policy.decision.point</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - Policy Decision Point</name>
|
||||
<description>WSO2 Carbon - Policy Decision Point</description>
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>policy-mgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.policy.information.point</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - Policy Information Point</name>
|
||||
<description>WSO2 Carbon - Policy Information Point</description>
|
||||
|
||||
@ -22,14 +22,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>policy-mgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.policy.mgt.common</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - Policy Management Common</name>
|
||||
<description>WSO2 Carbon - Policy Management Common</description>
|
||||
|
||||
@ -22,14 +22,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>policy-mgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.policy.mgt.core</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - Policy Management Core</name>
|
||||
<description>WSO2 Carbon - Policy Management Core</description>
|
||||
|
||||
@ -23,13 +23,13 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>carbon-devicemgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>policy-mgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
<name>WSO2 Carbon - Policy Management Component</name>
|
||||
<url>http://wso2.org</url>
|
||||
|
||||
@ -21,14 +21,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>webapp-authenticator-framework</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>org.wso2.carbon.webapp.authenticator.framework</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>bundle</packaging>
|
||||
<name>WSO2 Carbon - Web Application Authenticator Framework Bundle</name>
|
||||
<description>WSO2 Carbon - Web Application Authenticator Framework Bundle</description>
|
||||
|
||||
@ -22,14 +22,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>carbon-devicemgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>webapp-authenticator-framework</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
<name>WSO2 Carbon - Webapp Authenticator Framework</name>
|
||||
<url>http://wso2.org</url>
|
||||
|
||||
@ -21,14 +21,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>apimgt-extensions-feature</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.apimgt.application.extension.feature</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<name>WSO2 Carbon - API Management Application Extension Feature</name>
|
||||
<url>http://wso2.org</url>
|
||||
<description>This feature contains an implementation of a api application registration, which takes care of subscription
|
||||
|
||||
@ -22,14 +22,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>apimgt-extensions-feature</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.apimgt.handler.server.feature</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<name>WSO2 Carbon - Device Management - APIM handler Server Feature</name>
|
||||
<url>http://wso2.org</url>
|
||||
<description>This feature contains the handler for the api authentications
|
||||
|
||||
@ -21,13 +21,13 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>apimgt-extensions-feature</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.apimgt.integration.client.feature</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
<name>WSO2 Carbon - APIM Integration Client Feature</name>
|
||||
<url>http://wso2.org</url>
|
||||
|
||||
@ -21,14 +21,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>apimgt-extensions-feature</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.apimgt.webapp.publisher.feature</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<name>WSO2 Carbon - API Management Webapp Publisher Feature</name>
|
||||
<url>http://wso2.org</url>
|
||||
<description>This feature contains an implementation of a Tomcat lifecycle listener, which takes care of publishing
|
||||
|
||||
@ -22,14 +22,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>carbon-devicemgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>apimgt-extensions-feature</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
<name>WSO2 Carbon - API Management Extensions Feature</name>
|
||||
<url>http://wso2.org</url>
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>certificate-mgt-feature</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>certificate-mgt-feature</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@ -22,14 +22,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>certificate-mgt-feature</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.certificate.mgt.server.feature</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<name>WSO2 Carbon - Certificate Management Server Feature</name>
|
||||
<url>http://wso2.org</url>
|
||||
<description>This feature contains the core bundles required for back-end Certificate Management functionality
|
||||
|
||||
@ -22,14 +22,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>carbon-devicemgt</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>certificate-mgt-feature</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
<name>WSO2 Carbon - Certificate Management Feature</name>
|
||||
<url>http://wso2.org</url>
|
||||
|
||||
@ -22,14 +22,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>device-mgt-extensions-feature</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<name>WSO2 Carbon - Device Type Deployer Feature</name>
|
||||
<url>http://wso2.org</url>
|
||||
<description>WSO2 Carbon - Device Type Deployer Feature</description>
|
||||
|
||||
@ -22,14 +22,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>device-mgt-extensions-feature</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<name>WSO2 Carbon - FCM Based Push Notification Provider Feature</name>
|
||||
<url>http://wso2.org</url>
|
||||
<description>WSO2 Carbon - MQTT Based Push Notification Provider Feature</description>
|
||||
|
||||
@ -22,14 +22,14 @@
|
||||
<parent>
|
||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||
<artifactId>device-mgt-extensions-feature</artifactId>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<version>3.0.39-SNAPSHOT</version>
|
||||
<version>3.0.64-SNAPSHOT</version>
|
||||
<name>WSO2 Carbon - MQTT Based Push Notification Provider Feature</name>
|
||||
<url>http://wso2.org</url>
|
||||
<description>WSO2 Carbon - MQTT Based Push Notification Provider Feature</description>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user