mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Add upstream changes
This commit is contained in:
commit
fb859f046d
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>grafana-mgt</artifactId>
|
<artifactId>grafana-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>grafana-mgt</artifactId>
|
<artifactId>grafana-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>grafana-mgt</artifactId>
|
<artifactId>grafana-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>analytics-mgt</artifactId>
|
<artifactId>analytics-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>apimgt-extensions</artifactId>
|
<artifactId>apimgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>apimgt-extensions</artifactId>
|
<artifactId>apimgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>apimgt-extensions</artifactId>
|
<artifactId>apimgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>apimgt-extensions</artifactId>
|
<artifactId>apimgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>apimgt-extensions</artifactId>
|
<artifactId>apimgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>apimgt-extensions</artifactId>
|
<artifactId>apimgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>apimgt-extensions</artifactId>
|
<artifactId>apimgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>apimgt-extensions</artifactId>
|
<artifactId>apimgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -716,16 +716,16 @@ public class APIPublisherServiceImpl implements APIPublisherService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updatePermissions(String role, List<String> permissions) throws UserStoreException {
|
private void updatePermissions(String role, List<String> permissions) throws UserStoreException {
|
||||||
|
if (role == null || permissions == null) return;
|
||||||
AuthorizationManager authorizationManager = APIPublisherDataHolder.getInstance().getUserRealm()
|
AuthorizationManager authorizationManager = APIPublisherDataHolder.getInstance().getUserRealm()
|
||||||
.getAuthorizationManager();
|
.getAuthorizationManager();
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("Updating the role '" + role + "'");
|
log.debug("Updating the role '" + role + "'");
|
||||||
}
|
}
|
||||||
if (permissions != null && !permissions.isEmpty()) {
|
|
||||||
authorizationManager.clearRoleAuthorization(role);
|
authorizationManager.clearRoleAuthorization(role);
|
||||||
for (String permission : permissions) {
|
for (String permission : permissions) {
|
||||||
authorizationManager.authorizeRole(role, permission, CarbonConstants.UI_PERMISSION_ACTION);
|
authorizationManager.authorizeRole(role, permission, CarbonConstants.UI_PERMISSION_ACTION);
|
||||||
}
|
authorizationManager.refreshAllowedRolesForResource(permission);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>application-mgt</artifactId>
|
<artifactId>application-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>application-mgt</artifactId>
|
<artifactId>application-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -186,6 +186,8 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|||||||
try {
|
try {
|
||||||
// Only for iOS devices
|
// Only for iOS devices
|
||||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||||
|
// Ignore checking device type if app is a web clip
|
||||||
|
if(!applicationDTO.getType().equals("WEB_CLIP")){
|
||||||
if (DeviceTypes.IOS.toString().equalsIgnoreCase(APIUtil.getDeviceTypeData(applicationDTO
|
if (DeviceTypes.IOS.toString().equalsIgnoreCase(APIUtil.getDeviceTypeData(applicationDTO
|
||||||
.getDeviceTypeId()).getName())) {
|
.getDeviceTypeId()).getName())) {
|
||||||
// TODO: replace getAssetByAppId with the correct one in DAO
|
// TODO: replace getAssetByAppId with the correct one in DAO
|
||||||
@ -205,6 +207,7 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|||||||
vppManager.addAssociation(storedAsset, users);
|
vppManager.addAssociation(storedAsset, users);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} catch (BadRequestException e) {
|
} catch (BadRequestException e) {
|
||||||
String msg = "Device Type not found";
|
String msg = "Device Type not found";
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>certificate-mgt</artifactId>
|
<artifactId>certificate-mgt</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>certificate-mgt</artifactId>
|
<artifactId>certificate-mgt</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>certificate-mgt</artifactId>
|
<artifactId>certificate-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -53,8 +53,8 @@ public abstract class AbstractCertificateDAOImpl implements CertificateDAO{
|
|||||||
try {
|
try {
|
||||||
conn = this.getConnection();
|
conn = this.getConnection();
|
||||||
stmt = conn.prepareStatement(
|
stmt = conn.prepareStatement(
|
||||||
"INSERT INTO DM_DEVICE_CERTIFICATE (SERIAL_NUMBER, CERTIFICATE, TENANT_ID, USERNAME)"
|
"INSERT INTO DM_DEVICE_CERTIFICATE (SERIAL_NUMBER, CERTIFICATE, TENANT_ID, USERNAME, DEVICE_IDENTIFIER)"
|
||||||
+ " VALUES (?,?,?,?)");
|
+ " VALUES (?,?,?,?,?)");
|
||||||
PrivilegedCarbonContext threadLocalCarbonContext = PrivilegedCarbonContext.
|
PrivilegedCarbonContext threadLocalCarbonContext = PrivilegedCarbonContext.
|
||||||
getThreadLocalCarbonContext();
|
getThreadLocalCarbonContext();
|
||||||
String username = threadLocalCarbonContext.getUsername();
|
String username = threadLocalCarbonContext.getUsername();
|
||||||
@ -70,6 +70,7 @@ public abstract class AbstractCertificateDAOImpl implements CertificateDAO{
|
|||||||
stmt.setBytes(2, bytes);
|
stmt.setBytes(2, bytes);
|
||||||
stmt.setInt(3, certificate.getTenantId());
|
stmt.setInt(3, certificate.getTenantId());
|
||||||
stmt.setString(4, username);
|
stmt.setString(4, username);
|
||||||
|
stmt.setString(5, certificate.getDeviceIdentifier());
|
||||||
stmt.addBatch();
|
stmt.addBatch();
|
||||||
}
|
}
|
||||||
stmt.executeBatch();
|
stmt.executeBatch();
|
||||||
|
|||||||
@ -64,11 +64,11 @@ public class GenericCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
"WHERE TENANT_ID = ?";
|
"WHERE TENANT_ID = ?";
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(serialNumber)) {
|
if (StringUtils.isNotEmpty(serialNumber)) {
|
||||||
sql += " AND SERIAL_NUMBER = ?";
|
sql += " AND SERIAL_NUMBER LIKE ?";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
||||||
sql += " AND DEVICE_IDENTIFIER = ?";
|
sql += " AND DEVICE_IDENTIFIER LIKE ?";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(username)) {
|
if (StringUtils.isNotEmpty(username)) {
|
||||||
@ -80,11 +80,11 @@ public class GenericCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
|
|
||||||
int paramIdx = 2;
|
int paramIdx = 2;
|
||||||
if (StringUtils.isNotEmpty(serialNumber)) {
|
if (StringUtils.isNotEmpty(serialNumber)) {
|
||||||
stmt.setString(paramIdx++, serialNumber);
|
stmt.setString(paramIdx++, "%" + serialNumber + "%");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
||||||
stmt.setString(paramIdx++, deviceIdentifier);
|
stmt.setString(paramIdx++, "%" + deviceIdentifier + "%");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(username)) {
|
if (StringUtils.isNotEmpty(username)) {
|
||||||
@ -125,12 +125,12 @@ public class GenericCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
"WHERE TENANT_ID = ? ";
|
"WHERE TENANT_ID = ? ";
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(serialNumber)) {
|
if (StringUtils.isNotEmpty(serialNumber)) {
|
||||||
query += "AND SERIAL_NUMBER = ? ";
|
query += "AND SERIAL_NUMBER LIKE ? ";
|
||||||
isCertificateSerialNumberProvided = true;
|
isCertificateSerialNumberProvided = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
||||||
query += "AND DEVICE_IDENTIFIER = ? ";
|
query += "AND DEVICE_IDENTIFIER LIKE ? ";
|
||||||
isCertificateDeviceIdentifierProvided = true;
|
isCertificateDeviceIdentifierProvided = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,10 +145,10 @@ public class GenericCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
int paramIdx = 1;
|
int paramIdx = 1;
|
||||||
stmt.setInt(paramIdx++, tenantId);
|
stmt.setInt(paramIdx++, tenantId);
|
||||||
if (isCertificateSerialNumberProvided) {
|
if (isCertificateSerialNumberProvided) {
|
||||||
stmt.setString(paramIdx++, serialNumber);
|
stmt.setString(paramIdx++, "%" + serialNumber + "%");
|
||||||
}
|
}
|
||||||
if (isCertificateDeviceIdentifierProvided) {
|
if (isCertificateDeviceIdentifierProvided) {
|
||||||
stmt.setString(paramIdx++, deviceIdentifier);
|
stmt.setString(paramIdx++, "%" + deviceIdentifier + "%");
|
||||||
}
|
}
|
||||||
if (isCertificateUsernameProvided) {
|
if (isCertificateUsernameProvided) {
|
||||||
stmt.setString(paramIdx++, "%" + username + "%");
|
stmt.setString(paramIdx++, "%" + username + "%");
|
||||||
|
|||||||
@ -64,12 +64,12 @@ public class OracleCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
"FROM DM_DEVICE_CERTIFICATE " +
|
"FROM DM_DEVICE_CERTIFICATE " +
|
||||||
"WHERE TENANT_ID = ? ";
|
"WHERE TENANT_ID = ? ";
|
||||||
if (StringUtils.isNotEmpty(serialNumber)) {
|
if (StringUtils.isNotEmpty(serialNumber)) {
|
||||||
query += "AND SERIAL_NUMBER = ? ";
|
query += "AND SERIAL_NUMBER LIKE ? ";
|
||||||
isCertificateSerialNumberProvided = true;
|
isCertificateSerialNumberProvided = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
||||||
query += "AND DEVICE_IDENTIFIER = ? ";
|
query += "AND DEVICE_IDENTIFIER LIKE ? ";
|
||||||
isCertificateDeviceIdentifierProvided = true;
|
isCertificateDeviceIdentifierProvided = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,10 +84,10 @@ public class OracleCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
int paramIdx = 1;
|
int paramIdx = 1;
|
||||||
stmt.setInt(paramIdx++, tenantId);
|
stmt.setInt(paramIdx++, tenantId);
|
||||||
if (isCertificateSerialNumberProvided) {
|
if (isCertificateSerialNumberProvided) {
|
||||||
stmt.setString(paramIdx++, serialNumber);
|
stmt.setString(paramIdx++, "%" + serialNumber + "%");
|
||||||
}
|
}
|
||||||
if (isCertificateDeviceIdentifierProvided) {
|
if (isCertificateDeviceIdentifierProvided) {
|
||||||
stmt.setString(paramIdx++, deviceIdentifier);
|
stmt.setString(paramIdx++, "%" + deviceIdentifier + "%");
|
||||||
}
|
}
|
||||||
if (isCertificateUsernameProvided) {
|
if (isCertificateUsernameProvided) {
|
||||||
stmt.setString(paramIdx++, "%" + username + "%");
|
stmt.setString(paramIdx++, "%" + username + "%");
|
||||||
@ -137,11 +137,11 @@ public class OracleCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
"WHERE TENANT_ID = ?";
|
"WHERE TENANT_ID = ?";
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(serialNumber)) {
|
if (StringUtils.isNotEmpty(serialNumber)) {
|
||||||
sql += " AND SERIAL_NUMBER = ?";
|
sql += " AND SERIAL_NUMBER LIKE ?";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
||||||
sql += " AND DEVICE_IDENTIFIER = ?";
|
sql += " AND DEVICE_IDENTIFIER LIKE ?";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(username)) {
|
if (StringUtils.isNotEmpty(username)) {
|
||||||
@ -153,11 +153,11 @@ public class OracleCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
|
|
||||||
int paramIdx = 2;
|
int paramIdx = 2;
|
||||||
if (StringUtils.isNotEmpty(serialNumber)) {
|
if (StringUtils.isNotEmpty(serialNumber)) {
|
||||||
stmt.setString(paramIdx++, serialNumber);
|
stmt.setString(paramIdx++, "%" + serialNumber + "%");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
||||||
stmt.setString(paramIdx++, deviceIdentifier);
|
stmt.setString(paramIdx++, "%" + deviceIdentifier + "%");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(username)) {
|
if (StringUtils.isNotEmpty(username)) {
|
||||||
|
|||||||
@ -64,12 +64,12 @@ public class PostgreSQLCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
"FROM DM_DEVICE_CERTIFICATE " +
|
"FROM DM_DEVICE_CERTIFICATE " +
|
||||||
"WHERE TENANT_ID = ? ";
|
"WHERE TENANT_ID = ? ";
|
||||||
if (StringUtils.isNotEmpty(serialNumber)) {
|
if (StringUtils.isNotEmpty(serialNumber)) {
|
||||||
query += "AND SERIAL_NUMBER = ? ";
|
query += "AND SERIAL_NUMBER LIKE ? ";
|
||||||
isCertificateSerialNumberProvided = true;
|
isCertificateSerialNumberProvided = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
||||||
query += "AND DEVICE_IDENTIFIER = ? ";
|
query += "AND DEVICE_IDENTIFIER LIKE ? ";
|
||||||
isCertificateDeviceIdentifierProvided = true;
|
isCertificateDeviceIdentifierProvided = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,10 +84,10 @@ public class PostgreSQLCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
int paramIdx = 1;
|
int paramIdx = 1;
|
||||||
stmt.setInt(paramIdx++, tenantId);
|
stmt.setInt(paramIdx++, tenantId);
|
||||||
if (isCertificateSerialNumberProvided) {
|
if (isCertificateSerialNumberProvided) {
|
||||||
stmt.setString(paramIdx++, serialNumber);
|
stmt.setString(paramIdx++, "%" + serialNumber + "%");
|
||||||
}
|
}
|
||||||
if (isCertificateDeviceIdentifierProvided) {
|
if (isCertificateDeviceIdentifierProvided) {
|
||||||
stmt.setString(paramIdx++, deviceIdentifier);
|
stmt.setString(paramIdx++, "%" + deviceIdentifier + "%");
|
||||||
}
|
}
|
||||||
if (isCertificateUsernameProvided) {
|
if (isCertificateUsernameProvided) {
|
||||||
stmt.setString(paramIdx++, "%" + username + "%");
|
stmt.setString(paramIdx++, "%" + username + "%");
|
||||||
@ -137,15 +137,15 @@ public class PostgreSQLCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
"WHERE TENANT_ID = ?";
|
"WHERE TENANT_ID = ?";
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(serialNumber)) {
|
if (StringUtils.isNotEmpty(serialNumber)) {
|
||||||
sql += " AND SERIAL_NUMBER = ?";
|
sql += " AND SERIAL_NUMBER LIKE ?";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
||||||
sql += " AND DEVICE_IDENTIFIER = ?";
|
sql += " AND DEVICE_IDENTIFIER LIKE ?";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(username)) {
|
if (StringUtils.isNotEmpty(username)) {
|
||||||
sql += " AND USERNAME ILIKE ?";
|
sql += " AND USERNAME LIKE ?";
|
||||||
}
|
}
|
||||||
|
|
||||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||||
@ -153,11 +153,11 @@ public class PostgreSQLCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
|
|
||||||
int paramIdx = 2;
|
int paramIdx = 2;
|
||||||
if (StringUtils.isNotEmpty(serialNumber)) {
|
if (StringUtils.isNotEmpty(serialNumber)) {
|
||||||
stmt.setString(paramIdx++, serialNumber);
|
stmt.setString(paramIdx++, "%" + serialNumber + "%");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
||||||
stmt.setString(paramIdx++, deviceIdentifier);
|
stmt.setString(paramIdx++, "%" + deviceIdentifier + "%");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(username)) {
|
if (StringUtils.isNotEmpty(username)) {
|
||||||
|
|||||||
@ -64,12 +64,12 @@ public class SQLServerCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
"FROM DM_DEVICE_CERTIFICATE " +
|
"FROM DM_DEVICE_CERTIFICATE " +
|
||||||
"WHERE TENANT_ID = ? ";
|
"WHERE TENANT_ID = ? ";
|
||||||
if (StringUtils.isNotEmpty(serialNumber)) {
|
if (StringUtils.isNotEmpty(serialNumber)) {
|
||||||
query += "AND SERIAL_NUMBER = ? ";
|
query += "AND SERIAL_NUMBER LIKE ? ";
|
||||||
isCertificateSerialNumberProvided = true;
|
isCertificateSerialNumberProvided = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
||||||
query += "AND DEVICE_IDENTIFIER = ? ";
|
query += "AND DEVICE_IDENTIFIER LIKE ? ";
|
||||||
isCertificateDeviceIdentifierProvided = true;
|
isCertificateDeviceIdentifierProvided = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,10 +84,10 @@ public class SQLServerCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
int paramIdx = 1;
|
int paramIdx = 1;
|
||||||
stmt.setInt(paramIdx++, tenantId);
|
stmt.setInt(paramIdx++, tenantId);
|
||||||
if (isCertificateSerialNumberProvided) {
|
if (isCertificateSerialNumberProvided) {
|
||||||
stmt.setString(paramIdx++, serialNumber);
|
stmt.setString(paramIdx++, "%" + serialNumber + "%");
|
||||||
}
|
}
|
||||||
if (isCertificateDeviceIdentifierProvided) {
|
if (isCertificateDeviceIdentifierProvided) {
|
||||||
stmt.setString(paramIdx++, deviceIdentifier);
|
stmt.setString(paramIdx++, "%" + deviceIdentifier + "%");
|
||||||
}
|
}
|
||||||
if (isCertificateUsernameProvided) {
|
if (isCertificateUsernameProvided) {
|
||||||
stmt.setString(paramIdx++, "%" + username + "%");
|
stmt.setString(paramIdx++, "%" + username + "%");
|
||||||
@ -137,11 +137,11 @@ public class SQLServerCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
"WHERE TENANT_ID = ?";
|
"WHERE TENANT_ID = ?";
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(serialNumber)) {
|
if (StringUtils.isNotEmpty(serialNumber)) {
|
||||||
sql += " AND SERIAL_NUMBER = ?";
|
sql += " AND SERIAL_NUMBER LIKE ?";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
||||||
sql += " AND DEVICE_IDENTIFIER = ?";
|
sql += " AND DEVICE_IDENTIFIER LIKE ?";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(username)) {
|
if (StringUtils.isNotEmpty(username)) {
|
||||||
@ -153,11 +153,11 @@ public class SQLServerCertificateDAOImpl extends AbstractCertificateDAOImpl {
|
|||||||
|
|
||||||
int paramIdx = 2;
|
int paramIdx = 2;
|
||||||
if (StringUtils.isNotEmpty(serialNumber)) {
|
if (StringUtils.isNotEmpty(serialNumber)) {
|
||||||
stmt.setString(paramIdx++, serialNumber);
|
stmt.setString(paramIdx++, "%" + serialNumber + "%");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
if (StringUtils.isNotEmpty(deviceIdentifier)) {
|
||||||
stmt.setString(paramIdx++, deviceIdentifier);
|
stmt.setString(paramIdx++, "%" + deviceIdentifier + "%");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(username)) {
|
if (StringUtils.isNotEmpty(username)) {
|
||||||
|
|||||||
@ -849,6 +849,7 @@ public class CertificateGenerator {
|
|||||||
new io.entgra.device.mgt.core.certificate.mgt.core.bean.Certificate();
|
new io.entgra.device.mgt.core.certificate.mgt.core.bean.Certificate();
|
||||||
List<io.entgra.device.mgt.core.certificate.mgt.core.bean.Certificate> certificates = new ArrayList<>();
|
List<io.entgra.device.mgt.core.certificate.mgt.core.bean.Certificate> certificates = new ArrayList<>();
|
||||||
certificate.setTenantId(tenantId);
|
certificate.setTenantId(tenantId);
|
||||||
|
certificate.setDeviceIdentifier(commonName);
|
||||||
certificate.setCertificate(issuedCert);
|
certificate.setCertificate(issuedCert);
|
||||||
certificates.add(certificate);
|
certificates.add(certificate);
|
||||||
saveCertInKeyStore(certificates);
|
saveCertInKeyStore(certificates);
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt-extensions</artifactId>
|
<artifactId>device-mgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt-extensions</artifactId>
|
<artifactId>device-mgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt-extensions</artifactId>
|
<artifactId>device-mgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt-extensions</artifactId>
|
<artifactId>device-mgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt-extensions</artifactId>
|
<artifactId>device-mgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt-extensions</artifactId>
|
<artifactId>device-mgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt-extensions</artifactId>
|
<artifactId>device-mgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt-extensions</artifactId>
|
<artifactId>device-mgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt-extensions</artifactId>
|
<artifactId>device-mgt-extensions</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,230 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
~ Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
~
|
||||||
|
~ Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
|
~ Version 2.0 (the "License"); you may not use this file except
|
||||||
|
~ in compliance with the License.
|
||||||
|
~ You may obtain a copy of the License at
|
||||||
|
~
|
||||||
|
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
~
|
||||||
|
~ Unless required by applicable law or agreed to in writing,
|
||||||
|
~ software distributed under the License is distributed on an
|
||||||
|
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
~ KIND, either express or implied. See the License for the
|
||||||
|
~ specific language governing permissions and limitations
|
||||||
|
~ under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<parent>
|
||||||
|
<artifactId>device-mgt-extensions</artifactId>
|
||||||
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
|
<relativePath>../pom.xml</relativePath>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper</artifactId>
|
||||||
|
<packaging>bundle</packaging>
|
||||||
|
<name>Entgra IoT - User store role mapping Module</name>
|
||||||
|
<description>Entgra IoT - User store role mapping Module</description>
|
||||||
|
<url>http://entgra.io</url>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.felix</groupId>
|
||||||
|
<artifactId>maven-scr-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>1.8</source>
|
||||||
|
<target>1.8</target>
|
||||||
|
</configuration>
|
||||||
|
<version>2.3.2</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.felix</groupId>
|
||||||
|
<artifactId>maven-bundle-plugin</artifactId>
|
||||||
|
<version>1.4.0</version>
|
||||||
|
<extensions>true</extensions>
|
||||||
|
<configuration>
|
||||||
|
<instructions>
|
||||||
|
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
|
||||||
|
<Bundle-Name>${project.artifactId}</Bundle-Name>
|
||||||
|
<Bundle-Version>${io.entgra.device.mgt.core.version}</Bundle-Version>
|
||||||
|
<Bundle-Description>IOT - User store role mapping Module</Bundle-Description>
|
||||||
|
<Private-Package>io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.internal</Private-Package>
|
||||||
|
<Import-Package>
|
||||||
|
org.osgi.framework.*;version="${imp.package.version.osgi.framework}",
|
||||||
|
org.osgi.service.*;version="${imp.package.version.osgi.service}",
|
||||||
|
org.apache.commons.logging,
|
||||||
|
org.apache.axis2.*;version="${axis2.osgi.version.range}",
|
||||||
|
org.wso2.carbon.core,
|
||||||
|
org.wso2.carbon.utils.*,
|
||||||
|
javax.xml.bind;resolution:=optional,
|
||||||
|
javax.xml.bind.annotation,
|
||||||
|
javax.xml.parsers,
|
||||||
|
org.w3c.dom,
|
||||||
|
org.wso2.carbon,
|
||||||
|
org.wso2.carbon.context,
|
||||||
|
org.wso2.carbon.user.api,
|
||||||
|
org.wso2.carbon.user.core.common,
|
||||||
|
org.wso2.carbon.user.core.service,
|
||||||
|
org.wso2.carbon.user.mgt.common,
|
||||||
|
io.entgra.device.mgt.core.server.bootup.heartbeat.beacon.service,
|
||||||
|
io.entgra.device.mgt.core.server.bootup.heartbeat.beacon.exception
|
||||||
|
</Import-Package>
|
||||||
|
<Export-Package>
|
||||||
|
!io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.internal,
|
||||||
|
io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.*;version="${project.version}"
|
||||||
|
</Export-Package>
|
||||||
|
</instructions>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.jacoco</groupId>
|
||||||
|
<artifactId>jacoco-maven-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<destFile>${basedir}/target/coverage-reports/jacoco-unit.exec</destFile>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>jacoco-initialize</id>
|
||||||
|
<goals>
|
||||||
|
<goal>prepare-agent</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>jacoco-site</id>
|
||||||
|
<phase>test</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>report</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<dataFile>${basedir}/target/coverage-reports/jacoco-unit.exec</dataFile>
|
||||||
|
<outputDirectory>${basedir}/target/coverage-reports/site</outputDirectory>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<!-- <plugin>-->
|
||||||
|
<!-- <groupId>org.apache.maven.plugins</groupId>-->
|
||||||
|
<!-- <artifactId>maven-surefire-plugin</artifactId>-->
|
||||||
|
<!-- <configuration>-->
|
||||||
|
<!-- <systemPropertyVariables>-->
|
||||||
|
<!-- <log4j.configuration>file:src/test/resources/carbon-home/repository/conf/log4j.properties-->
|
||||||
|
<!-- </log4j.configuration>-->
|
||||||
|
<!-- </systemPropertyVariables>-->
|
||||||
|
<!-- <suiteXmlFiles>-->
|
||||||
|
<!-- <file>src/test/resources/testng.xml</file>-->
|
||||||
|
<!-- </suiteXmlFiles>-->
|
||||||
|
<!-- </configuration>-->
|
||||||
|
<!-- </plugin>-->
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.eclipse.osgi</groupId>
|
||||||
|
<artifactId>org.eclipse.osgi</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.eclipse.osgi</groupId>
|
||||||
|
<artifactId>org.eclipse.osgi.services</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.carbon</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.core</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.carbon</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.logging</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.carbon</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.utils</artifactId>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.carbon</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.user.api</artifactId>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.carbon</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.user.core</artifactId>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.carbon.identity.framework</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.user.mgt</artifactId>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mockito</groupId>
|
||||||
|
<artifactId>mockito-inline</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.testng</groupId>
|
||||||
|
<artifactId>testng</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.orbit.com.h2database</groupId>
|
||||||
|
<artifactId>h2</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.httpcomponents.wso2</groupId>
|
||||||
|
<artifactId>httpcore</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.apache.httpcomponents</groupId>
|
||||||
|
<artifactId>httpclient</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.carbon</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.securevault</artifactId>
|
||||||
|
<!--<version>${carbon.kernel.version}</version>-->
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.securevault</groupId>
|
||||||
|
<artifactId>org.wso2.securevault</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>xerces.wso2</groupId>
|
||||||
|
<artifactId>xercesImpl</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.axis2.wso2</groupId>
|
||||||
|
<artifactId>axis2</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.carbon</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.queuing</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-api</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
|
<artifactId>io.entgra.device.mgt.core.server.bootup.heartbeat.beacon</artifactId>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
@ -0,0 +1,139 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
package io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper;
|
||||||
|
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.bean.RoleMapping;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.bean.UserStoreRoleMappingConfig;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.internal.UserStoreRoleMappingDataHolder;
|
||||||
|
import io.entgra.device.mgt.core.server.bootup.heartbeat.beacon.exception.HeartBeatManagementException;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
|
import org.wso2.carbon.core.ServerStartupObserver;
|
||||||
|
import org.wso2.carbon.user.api.UserStoreException;
|
||||||
|
import org.wso2.carbon.user.api.UserStoreManager;
|
||||||
|
import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
public class UserStoreRoleMapper implements ServerStartupObserver {
|
||||||
|
private static final Log log = LogFactory.getLog(UserStoreRoleMapper.class);
|
||||||
|
|
||||||
|
private UserStoreRoleMappingConfig config = null;
|
||||||
|
@Override
|
||||||
|
public void completingServerStartup() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void completedServerStartup() {
|
||||||
|
|
||||||
|
config = UserStoreRoleMappingDataHolder.getInstance()
|
||||||
|
.getUserStoreRoleMappingConfigManager().getUserStoreRoleMappingConfig();
|
||||||
|
|
||||||
|
try {
|
||||||
|
if ((config.isEnabled() &&
|
||||||
|
UserStoreRoleMappingDataHolder.getInstance().getHeartBeatService().isTaskPartitioningEnabled() &&
|
||||||
|
UserStoreRoleMappingDataHolder.getInstance().getHeartBeatService().isQualifiedToExecuteTask())
|
||||||
|
|| (config.isEnabled() &&
|
||||||
|
!UserStoreRoleMappingDataHolder.getInstance().getHeartBeatService().isTaskPartitioningEnabled())) {
|
||||||
|
Runnable periodicTask = new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
updateRoleMapping();
|
||||||
|
log.info("UserStoreRoleMapper executed....");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ScheduledExecutorService executor =
|
||||||
|
Executors.newSingleThreadScheduledExecutor();
|
||||||
|
|
||||||
|
executor.scheduleAtFixedRate(periodicTask, config.getInitialDelayInSeconds(), config.getPeriodInSeconds(), TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
} catch (HeartBeatManagementException e) {
|
||||||
|
log.error("Error while accessing heart beat service " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateRoleMapping() {
|
||||||
|
try {
|
||||||
|
PrivilegedCarbonContext.startTenantFlow();
|
||||||
|
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(
|
||||||
|
MultitenantConstants.SUPER_TENANT_ID);
|
||||||
|
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(
|
||||||
|
MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
|
||||||
|
|
||||||
|
List<RoleMapping> roleMappings = config.getMappings();
|
||||||
|
|
||||||
|
if (!roleMappings.isEmpty()) {
|
||||||
|
UserStoreManager userStoreManager =
|
||||||
|
UserStoreRoleMappingDataHolder.getInstance().getRealmService()
|
||||||
|
.getTenantUserRealm(MultitenantConstants.SUPER_TENANT_ID).getUserStoreManager();
|
||||||
|
|
||||||
|
for (RoleMapping mapping : roleMappings) {
|
||||||
|
if (userStoreManager.isExistingRole(mapping.getSecondaryRole())) {
|
||||||
|
String[] users = userStoreManager.getUserListOfRole(mapping.getSecondaryRole());
|
||||||
|
if (users != null && users.length > 0) {
|
||||||
|
List<String> primaryRoles = mapping.getInternalRoles();
|
||||||
|
for (String role : primaryRoles) {
|
||||||
|
if (userStoreManager.isExistingRole(role)) {
|
||||||
|
String[] existingUsers = userStoreManager.getUserListOfRole(role);
|
||||||
|
List<String> existingUserList = new ArrayList<>(Arrays.asList(existingUsers));
|
||||||
|
List<String> newUserList = new ArrayList<>();
|
||||||
|
for (String user : users) {
|
||||||
|
if (existingUserList.contains(user)) {
|
||||||
|
// if contains, remove from existing list
|
||||||
|
existingUserList.remove(user);
|
||||||
|
} else {
|
||||||
|
// new user
|
||||||
|
newUserList.add(user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> deleteUserList = new ArrayList<>();
|
||||||
|
if (!existingUserList.isEmpty()) {
|
||||||
|
String domain = mapping.getSecondaryRole().substring(0, mapping.getSecondaryRole().indexOf("/"));
|
||||||
|
for (String user : existingUserList) {
|
||||||
|
if (user.startsWith(domain.toUpperCase())) {
|
||||||
|
deleteUserList.add(user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// update user list of given role
|
||||||
|
if (!newUserList.isEmpty() || !deleteUserList.isEmpty()) {
|
||||||
|
userStoreManager.updateUserListOfRole(role, deleteUserList.toArray(new String[0]), newUserList.toArray(new String[0]));
|
||||||
|
log.info("update user role mapping executed.....");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (UserStoreException e) {
|
||||||
|
log.error("Error while getting user store..." + e.getMessage());
|
||||||
|
} finally {
|
||||||
|
PrivilegedCarbonContext.endTenantFlow();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,76 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper;
|
||||||
|
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.bean.UserStoreRoleMappingConfig;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.exception.UserStoreRoleMapperException;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.w3c.dom.Document;
|
||||||
|
import org.wso2.carbon.utils.CarbonUtils;
|
||||||
|
|
||||||
|
import javax.xml.bind.JAXBContext;
|
||||||
|
import javax.xml.bind.JAXBException;
|
||||||
|
import javax.xml.bind.Unmarshaller;
|
||||||
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public class UserStoreRoleMappingConfigManager {
|
||||||
|
|
||||||
|
private static final Log log = LogFactory.getLog(UserStoreRoleMappingConfigManager.class);
|
||||||
|
private static final String USERSTORE_ROLE_MAPPING_CONFIG_PATH = CarbonUtils.getCarbonConfigDirPath() +
|
||||||
|
File.separator + "user-store-role-mapping-config.xml";
|
||||||
|
|
||||||
|
private final UserStoreRoleMappingConfig userStoreRoleMappingConfig;
|
||||||
|
|
||||||
|
public UserStoreRoleMappingConfigManager() throws UserStoreRoleMapperException {
|
||||||
|
try {
|
||||||
|
File UserStoreRoleMappingConfig = new File(USERSTORE_ROLE_MAPPING_CONFIG_PATH);
|
||||||
|
Document doc = convertToDocument(UserStoreRoleMappingConfig);
|
||||||
|
JAXBContext smsContext = JAXBContext.newInstance(UserStoreRoleMappingConfig.class);
|
||||||
|
Unmarshaller unmarshaller = smsContext.createUnmarshaller();
|
||||||
|
this.userStoreRoleMappingConfig = (UserStoreRoleMappingConfig) unmarshaller.unmarshal(doc);
|
||||||
|
} catch (JAXBException e) {
|
||||||
|
String msg = "Error occurred while initializing config '" + USERSTORE_ROLE_MAPPING_CONFIG_PATH + "'";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new UserStoreRoleMapperException(msg, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Document convertToDocument(File file) throws UserStoreRoleMapperException {
|
||||||
|
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
||||||
|
factory.setNamespaceAware(true);
|
||||||
|
|
||||||
|
try {
|
||||||
|
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
|
||||||
|
factory.setFeature("http://javax.xml.XMLConstants/feature/secure-processing", true);
|
||||||
|
DocumentBuilder docBuilder = factory.newDocumentBuilder();
|
||||||
|
return docBuilder.parse(file);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new UserStoreRoleMapperException("Error occurred while parsing " + USERSTORE_ROLE_MAPPING_CONFIG_PATH +
|
||||||
|
" file, while converting to a org.w3c.dom.Document", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserStoreRoleMappingConfig getUserStoreRoleMappingConfig() {
|
||||||
|
return this.userStoreRoleMappingConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,58 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
package io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.bean;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlAttribute;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@XmlRootElement(
|
||||||
|
name = "mapping"
|
||||||
|
)
|
||||||
|
public class RoleMapping {
|
||||||
|
private String secondaryRole;
|
||||||
|
|
||||||
|
private List<String> internalRoles;
|
||||||
|
|
||||||
|
@XmlAttribute(
|
||||||
|
name = "secondaryRole"
|
||||||
|
)
|
||||||
|
public String getSecondaryRole() {
|
||||||
|
return secondaryRole;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSecondaryRole(String secondaryRole) {
|
||||||
|
this.secondaryRole = secondaryRole;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElementWrapper(
|
||||||
|
name = "internalRoles"
|
||||||
|
)
|
||||||
|
@XmlElement(
|
||||||
|
name = "role"
|
||||||
|
)
|
||||||
|
public List<String> getInternalRoles() {
|
||||||
|
return internalRoles;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInternalRoles(List<String> internalRoles) {
|
||||||
|
this.internalRoles = internalRoles;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
package io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.bean;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@XmlRootElement(
|
||||||
|
name = "UserStoreRoleMappingConfig"
|
||||||
|
)
|
||||||
|
public class UserStoreRoleMappingConfig {
|
||||||
|
|
||||||
|
private boolean enabled;
|
||||||
|
private List<RoleMapping> mappings;
|
||||||
|
|
||||||
|
private long initialDelayInSeconds;
|
||||||
|
|
||||||
|
private long periodInSeconds;
|
||||||
|
|
||||||
|
@XmlElement(
|
||||||
|
name = "enabled"
|
||||||
|
)
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEnabled(boolean enabled) {
|
||||||
|
this.enabled = enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElementWrapper(
|
||||||
|
name = "mappings"
|
||||||
|
)
|
||||||
|
@XmlElement(
|
||||||
|
name = "mapping"
|
||||||
|
)
|
||||||
|
public List<RoleMapping> getMappings() {
|
||||||
|
return mappings;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMappings(List<RoleMapping> mappings) {
|
||||||
|
this.mappings = mappings;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement(
|
||||||
|
name = "initialDelayInSeconds"
|
||||||
|
)
|
||||||
|
public long getInitialDelayInSeconds() {
|
||||||
|
return initialDelayInSeconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInitialDelayInSeconds(long initialDelayInSeconds) {
|
||||||
|
this.initialDelayInSeconds = initialDelayInSeconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement(
|
||||||
|
name = "periodInSeconds"
|
||||||
|
)
|
||||||
|
public long getPeriodInSeconds() {
|
||||||
|
return periodInSeconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPeriodInSeconds(long periodInSeconds) {
|
||||||
|
this.periodInSeconds = periodInSeconds;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.exception;
|
||||||
|
|
||||||
|
public class UserStoreRoleMapperException extends Exception {
|
||||||
|
|
||||||
|
public UserStoreRoleMapperException(String msg, Exception e) {
|
||||||
|
super(msg, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,94 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
package io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.internal;
|
||||||
|
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.UserStoreRoleMappingConfigManager;
|
||||||
|
import io.entgra.device.mgt.core.server.bootup.heartbeat.beacon.service.HeartBeatManagementService;
|
||||||
|
import org.wso2.carbon.context.CarbonContext;
|
||||||
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
|
import org.wso2.carbon.user.api.UserRealm;
|
||||||
|
import org.wso2.carbon.user.api.UserStoreException;
|
||||||
|
import org.wso2.carbon.user.api.UserStoreManager;
|
||||||
|
import org.wso2.carbon.user.core.service.RealmService;
|
||||||
|
import org.wso2.carbon.utils.ConfigurationContextService;
|
||||||
|
|
||||||
|
public class UserStoreRoleMappingDataHolder {
|
||||||
|
|
||||||
|
private ConfigurationContextService configurationContextService;
|
||||||
|
private RealmService realmService;
|
||||||
|
private UserStoreRoleMappingConfigManager userStoreRoleMappingConfigManager;
|
||||||
|
private HeartBeatManagementService heartBeatService;
|
||||||
|
private static final UserStoreRoleMappingDataHolder thisInstance = new UserStoreRoleMappingDataHolder();
|
||||||
|
|
||||||
|
private UserStoreRoleMappingDataHolder() {}
|
||||||
|
|
||||||
|
public static UserStoreRoleMappingDataHolder getInstance() {
|
||||||
|
return thisInstance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigurationContextService getConfigurationContextService() {
|
||||||
|
return configurationContextService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setConfigurationContextService(ConfigurationContextService configurationContextService) {
|
||||||
|
this.configurationContextService = configurationContextService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserStoreManager getUserStoreManager() throws UserStoreException {
|
||||||
|
if (realmService == null) {
|
||||||
|
String msg = "Realm service has not initialized.";
|
||||||
|
throw new IllegalStateException(msg);
|
||||||
|
}
|
||||||
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
|
return realmService.getTenantUserRealm(tenantId).getUserStoreManager();
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserRealm getUserRealm() throws UserStoreException {
|
||||||
|
UserRealm realm;
|
||||||
|
if (realmService == null) {
|
||||||
|
throw new IllegalStateException("Realm service not initialized");
|
||||||
|
}
|
||||||
|
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
|
realm = realmService.getTenantUserRealm(tenantId);
|
||||||
|
return realm;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RealmService getRealmService() {
|
||||||
|
return realmService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRealmService(RealmService realmService) {
|
||||||
|
this.realmService = realmService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserStoreRoleMappingConfigManager getUserStoreRoleMappingConfigManager() {
|
||||||
|
return userStoreRoleMappingConfigManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserStoreRoleMappingConfigManager(UserStoreRoleMappingConfigManager userStoreRoleMappingConfigManager) {
|
||||||
|
this.userStoreRoleMappingConfigManager = userStoreRoleMappingConfigManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public HeartBeatManagementService getHeartBeatService() {
|
||||||
|
return heartBeatService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHeartBeatService(HeartBeatManagementService heartBeatService) {
|
||||||
|
this.heartBeatService = heartBeatService;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,135 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.internal;
|
||||||
|
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.UserStoreRoleMapper;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.UserStoreRoleMappingConfigManager;
|
||||||
|
import io.entgra.device.mgt.core.server.bootup.heartbeat.beacon.service.HeartBeatManagementService;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.osgi.framework.BundleContext;
|
||||||
|
import org.osgi.service.component.ComponentContext;
|
||||||
|
import org.wso2.carbon.core.ServerStartupObserver;
|
||||||
|
import org.wso2.carbon.user.core.service.RealmService;
|
||||||
|
import org.wso2.carbon.utils.ConfigurationContextService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @scr.component name="io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper.internal.UserStoreRoleMappingServiceComponent"
|
||||||
|
* immediate="true"
|
||||||
|
* @scr.reference name="user.realmservice.default"
|
||||||
|
* interface="org.wso2.carbon.user.core.service.RealmService"
|
||||||
|
* cardinality="1..1"
|
||||||
|
* policy="dynamic"
|
||||||
|
* bind="setRealmService"
|
||||||
|
* unbind="unsetRealmService"
|
||||||
|
* @scr.reference name="config.context.service"
|
||||||
|
* interface="org.wso2.carbon.utils.ConfigurationContextService"
|
||||||
|
* cardinality="0..1"
|
||||||
|
* policy="dynamic"
|
||||||
|
* bind="setConfigurationContextService"
|
||||||
|
* unbind="unsetConfigurationContextService"
|
||||||
|
* @scr.reference name="entgra.heart.beat.service"
|
||||||
|
* interface="io.entgra.device.mgt.core.server.bootup.heartbeat.beacon.service.HeartBeatManagementService"
|
||||||
|
* cardinality="0..1"
|
||||||
|
* policy="dynamic"
|
||||||
|
* bind="setHeartBeatService"
|
||||||
|
* unbind="unsetHeartBeatService"
|
||||||
|
*/
|
||||||
|
public class UserStoreRoleMappingServiceComponent {
|
||||||
|
|
||||||
|
private static final Log log = LogFactory.getLog(UserStoreRoleMappingServiceComponent.class);
|
||||||
|
|
||||||
|
protected void activate(ComponentContext ctx) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Activating Role Management Service Component");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
BundleContext bundleContext = ctx.getBundleContext();
|
||||||
|
UserStoreRoleMapper mapper = new UserStoreRoleMapper();
|
||||||
|
bundleContext.registerService(ServerStartupObserver.class.getName(), mapper, null);
|
||||||
|
UserStoreRoleMappingDataHolder.getInstance().setUserStoreRoleMappingConfigManager(new UserStoreRoleMappingConfigManager());
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Role Management Service Component has been successfully activated");
|
||||||
|
}
|
||||||
|
} catch (Throwable e) {
|
||||||
|
log.error("Error occurred while activating Role Management Service Component", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void deactivate(ComponentContext ctx) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("De-activating Role Manager Service Component");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setConfigurationContextService(ConfigurationContextService configurationContextService) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Setting ConfigurationContextService");
|
||||||
|
}
|
||||||
|
|
||||||
|
UserStoreRoleMappingDataHolder.getInstance().setConfigurationContextService(configurationContextService);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void unsetConfigurationContextService(ConfigurationContextService configurationContextService) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Un-setting ConfigurationContextService");
|
||||||
|
}
|
||||||
|
UserStoreRoleMappingDataHolder.getInstance().setConfigurationContextService(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets Realm Service.
|
||||||
|
*
|
||||||
|
* @param realmService An instance of RealmService
|
||||||
|
*/
|
||||||
|
protected void setRealmService(RealmService realmService) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Setting Realm Service");
|
||||||
|
}
|
||||||
|
UserStoreRoleMappingDataHolder.getInstance().setRealmService(realmService);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unsets Realm Service.
|
||||||
|
*
|
||||||
|
* @param realmService An instance of RealmService
|
||||||
|
*/
|
||||||
|
protected void unsetRealmService(RealmService realmService) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Unsetting Realm Service");
|
||||||
|
}
|
||||||
|
UserStoreRoleMappingDataHolder.getInstance().setRealmService(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
protected void setHeartBeatService(HeartBeatManagementService heartBeatService) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Setting heart beat service");
|
||||||
|
}
|
||||||
|
UserStoreRoleMappingDataHolder.getInstance().setHeartBeatService(heartBeatService);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
protected void unsetHeartBeatService(HeartBeatManagementService heartBeatManagementService) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Removing heart beat service");
|
||||||
|
}
|
||||||
|
UserStoreRoleMappingDataHolder.getInstance().setHeartBeatService(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
@ -43,6 +43,7 @@
|
|||||||
<module>io.entgra.device.mgt.core.device.mgt.extensions.logger</module>
|
<module>io.entgra.device.mgt.core.device.mgt.extensions.logger</module>
|
||||||
<module>io.entgra.device.mgt.core.device.mgt.extensions.defaultrole.manager</module>
|
<module>io.entgra.device.mgt.core.device.mgt.extensions.defaultrole.manager</module>
|
||||||
<module>io.entgra.device.mgt.core.device.mgt.extensions.stateengine</module>
|
<module>io.entgra.device.mgt.core.device.mgt.extensions.stateengine</module>
|
||||||
|
<module>io.entgra.device.mgt.core.device.mgt.extensions.userstore.role.mapper</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt</artifactId>
|
<artifactId>device-mgt</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -378,7 +378,7 @@ public interface ActivityInfoProviderService {
|
|||||||
tags = "Device Activity Info Provider",
|
tags = "Device Activity Info Provider",
|
||||||
extensions = {
|
extensions = {
|
||||||
@Extension(properties = {
|
@Extension(properties = {
|
||||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:get-activity")
|
@ExtensionProperty(name = Constants.SCOPE, value = "dm:activity:get")
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
nickname = "getDeviceActivitiesWithFilters"
|
nickname = "getDeviceActivitiesWithFilters"
|
||||||
|
|||||||
@ -21,6 +21,7 @@ package io.entgra.device.mgt.core.device.mgt.api.jaxrs.service.api;
|
|||||||
import io.entgra.device.mgt.core.apimgt.annotations.Scope;
|
import io.entgra.device.mgt.core.apimgt.annotations.Scope;
|
||||||
import io.entgra.device.mgt.core.apimgt.annotations.Scopes;
|
import io.entgra.device.mgt.core.apimgt.annotations.Scopes;
|
||||||
import io.entgra.device.mgt.core.device.mgt.api.jaxrs.beans.*;
|
import io.entgra.device.mgt.core.device.mgt.api.jaxrs.beans.*;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.api.jaxrs.service.impl.util.DisenrollRequest;
|
||||||
import io.entgra.device.mgt.core.device.mgt.api.jaxrs.util.Constants;
|
import io.entgra.device.mgt.core.device.mgt.api.jaxrs.util.Constants;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.Device;
|
import io.entgra.device.mgt.core.device.mgt.common.Device;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.EnrolmentInfo;
|
import io.entgra.device.mgt.core.device.mgt.common.EnrolmentInfo;
|
||||||
@ -33,11 +34,30 @@ import io.entgra.device.mgt.core.device.mgt.common.policy.mgt.Policy;
|
|||||||
import io.entgra.device.mgt.core.device.mgt.common.policy.mgt.monitor.NonComplianceData;
|
import io.entgra.device.mgt.core.device.mgt.common.policy.mgt.monitor.NonComplianceData;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.search.PropertyMap;
|
import io.entgra.device.mgt.core.device.mgt.common.search.PropertyMap;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.search.SearchContext;
|
import io.entgra.device.mgt.core.device.mgt.common.search.SearchContext;
|
||||||
import io.swagger.annotations.*;
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import io.swagger.annotations.ApiResponse;
|
||||||
|
import io.swagger.annotations.ApiResponses;
|
||||||
|
import io.swagger.annotations.Extension;
|
||||||
|
import io.swagger.annotations.ExtensionProperty;
|
||||||
|
import io.swagger.annotations.Info;
|
||||||
|
import io.swagger.annotations.ResponseHeader;
|
||||||
|
import io.swagger.annotations.SwaggerDefinition;
|
||||||
|
import io.swagger.annotations.Tag;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import javax.validation.constraints.Size;
|
import javax.validation.constraints.Size;
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.DELETE;
|
||||||
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.HeaderParam;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
|
import javax.ws.rs.PUT;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.PathParam;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
import javax.ws.rs.QueryParam;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -1255,6 +1275,49 @@ public interface DeviceManagementService {
|
|||||||
@Size(max = 45)
|
@Size(max = 45)
|
||||||
String deviceId);
|
String deviceId);
|
||||||
|
|
||||||
|
@PUT
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
@Path("/disenroll")
|
||||||
|
@ApiOperation(
|
||||||
|
produces = MediaType.APPLICATION_JSON,
|
||||||
|
httpMethod = "PUT",
|
||||||
|
value = "Remove Multiple Devices Specified by Device IDs and Device Type",
|
||||||
|
notes = "Deletes multiple devices of the specified device type specified by their device IDs" +
|
||||||
|
" and returns the status of the dis-enrollment operation.",
|
||||||
|
tags = "Device Management",
|
||||||
|
extensions = {
|
||||||
|
@Extension(properties = {
|
||||||
|
@ExtensionProperty(name = Constants.SCOPE, value = "dm:devices:delete")
|
||||||
|
})
|
||||||
|
},
|
||||||
|
nickname = "deleteMultipleDevicesByType"
|
||||||
|
)
|
||||||
|
@ApiResponses(
|
||||||
|
value = {
|
||||||
|
@ApiResponse(
|
||||||
|
code = 200,
|
||||||
|
message = "OK. \n Successfully deleted the devices.",
|
||||||
|
response = Device.class,
|
||||||
|
responseHeaders = {
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Content-Type",
|
||||||
|
description = "The content type of the body")
|
||||||
|
}),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 400,
|
||||||
|
message = "Bad Request. \n Invalid request or validation error.",
|
||||||
|
response = ErrorResponse.class),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 500,
|
||||||
|
message = "Internal Server Error. \n " +
|
||||||
|
"Server error occurred while deleting devices.",
|
||||||
|
response = ErrorResponse.class)
|
||||||
|
})
|
||||||
|
Response disenrollMultipleDevices(@ApiParam(
|
||||||
|
name = "deviceTypeWithDeviceIds",
|
||||||
|
value = "Device type and corresponding device IDs for disenrollment",
|
||||||
|
required = true)
|
||||||
|
DisenrollRequest deviceTypeWithDeviceIds);
|
||||||
@GET
|
@GET
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Path("/device-type/{type}/features")
|
@Path("/device-type/{type}/features")
|
||||||
|
|||||||
@ -116,7 +116,7 @@ import javax.ws.rs.core.Response;
|
|||||||
description = "Adding a User",
|
description = "Adding a User",
|
||||||
key = "um:users:cred:change",
|
key = "um:users:cred:change",
|
||||||
roles = {"Internal/devicemgt-user"},
|
roles = {"Internal/devicemgt-user"},
|
||||||
permissions = {"/login/password/update"}
|
permissions = {"/device-mgt/users/password/update"}
|
||||||
),
|
),
|
||||||
@Scope(
|
@Scope(
|
||||||
name = "Sending Enrollment Invitations to Users",
|
name = "Sending Enrollment Invitations to Users",
|
||||||
|
|||||||
@ -41,6 +41,7 @@ import io.entgra.device.mgt.core.application.mgt.common.exception.SubscriptionMa
|
|||||||
import io.entgra.device.mgt.core.application.mgt.common.services.ApplicationManager;
|
import io.entgra.device.mgt.core.application.mgt.common.services.ApplicationManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.services.SubscriptionManager;
|
import io.entgra.device.mgt.core.application.mgt.common.services.SubscriptionManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.util.HelperUtil;
|
import io.entgra.device.mgt.core.application.mgt.core.util.HelperUtil;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.api.jaxrs.service.impl.util.DisenrollRequest;
|
||||||
import org.apache.commons.httpclient.HttpStatus;
|
import org.apache.commons.httpclient.HttpStatus;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
@ -110,8 +111,9 @@ import java.util.ArrayList;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
@Path("/devices")
|
@Path("/devices")
|
||||||
public class DeviceManagementServiceImpl implements DeviceManagementService {
|
public class DeviceManagementServiceImpl implements DeviceManagementService {
|
||||||
@ -483,6 +485,64 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PUT
|
||||||
|
@Override
|
||||||
|
@Path("/disenroll")
|
||||||
|
public Response disenrollMultipleDevices(DisenrollRequest deviceTypeWithDeviceIds) {
|
||||||
|
|
||||||
|
if (deviceTypeWithDeviceIds == null) {
|
||||||
|
String errorMsg = "Invalid request. The request body must not be null.";
|
||||||
|
return Response.status(Response.Status.BAD_REQUEST).entity(errorMsg).build();
|
||||||
|
}
|
||||||
|
DeviceManagementProviderService deviceManagementProviderService = DeviceMgtAPIUtils.getDeviceManagementService();
|
||||||
|
|
||||||
|
List<DeviceIdentifier> successfullyDisenrolledDevices = new ArrayList<>();
|
||||||
|
List<DeviceIdentifier> failedToDisenrollDevices = new ArrayList<>();
|
||||||
|
|
||||||
|
Map<String, List<String>> list = deviceTypeWithDeviceIds.getDeviceTypeWithDeviceIds();
|
||||||
|
String deviceType;
|
||||||
|
List<String> deviceIds;
|
||||||
|
DeviceIdentifier deviceIdentifier;
|
||||||
|
Device persistedDevice;
|
||||||
|
boolean response;
|
||||||
|
|
||||||
|
for (Map.Entry<String, List<String>> entry : list.entrySet()) {
|
||||||
|
deviceType = entry.getKey();
|
||||||
|
deviceIds = entry.getValue();
|
||||||
|
|
||||||
|
for (String deviceId : deviceIds) {
|
||||||
|
deviceIdentifier = new DeviceIdentifier(deviceId, deviceType);
|
||||||
|
try {
|
||||||
|
persistedDevice = deviceManagementProviderService.getDevice(deviceIdentifier, true);
|
||||||
|
if (persistedDevice != null) {
|
||||||
|
response = deviceManagementProviderService.disenrollDevice(deviceIdentifier);
|
||||||
|
if (response) {
|
||||||
|
successfullyDisenrolledDevices.add(deviceIdentifier);
|
||||||
|
} else {
|
||||||
|
failedToDisenrollDevices.add(deviceIdentifier);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
failedToDisenrollDevices.add(deviceIdentifier);
|
||||||
|
if(log.isDebugEnabled()){
|
||||||
|
String msg = "Error encountered while dis-enrolling device of type: " + deviceType + " with " + deviceId;
|
||||||
|
log.error(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (DeviceManagementException e) {
|
||||||
|
String msg = "Error encountered while dis-enrolling device of type: " + deviceType + " with " + deviceId;
|
||||||
|
log.error(msg, e);
|
||||||
|
failedToDisenrollDevices.add(deviceIdentifier);
|
||||||
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, List<DeviceIdentifier>> responseMap = new HashMap<>();
|
||||||
|
responseMap.put("successfullyDisenrollDevices", successfullyDisenrolledDevices);
|
||||||
|
responseMap.put("failedToDisenrollDevices", failedToDisenrollDevices);
|
||||||
|
|
||||||
|
return Response.status(Response.Status.OK).entity(responseMap).build();
|
||||||
|
}
|
||||||
@POST
|
@POST
|
||||||
@Override
|
@Override
|
||||||
@Path("/type/{deviceType}/id/{deviceId}/rename")
|
@Path("/type/{deviceType}/id/{deviceId}/rename")
|
||||||
|
|||||||
@ -691,7 +691,7 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
if ((filter == null) || filter.isEmpty()) {
|
if ((filter == null) || filter.isEmpty()) {
|
||||||
filter = "*";
|
filter = "*";
|
||||||
} else {
|
} else {
|
||||||
filter += "*";
|
filter = "*" + filter + "*";
|
||||||
}
|
}
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("Getting the list of user roles");
|
log.debug("Getting the list of user roles");
|
||||||
|
|||||||
@ -449,7 +449,7 @@ public class UserManagementServiceImpl implements UserManagementService {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
if (StringUtils.isNotEmpty(username)) {
|
if (StringUtils.isNotEmpty(username)) {
|
||||||
commonUsers = getUserList(null, username);
|
commonUsers = getUserList(null, "*" + username + "*");
|
||||||
}
|
}
|
||||||
if (commonUsers != null) {
|
if (commonUsers != null) {
|
||||||
commonUsers.remove(Constants.APIM_RESERVED_USER);
|
commonUsers.remove(Constants.APIM_RESERVED_USER);
|
||||||
@ -457,7 +457,7 @@ public class UserManagementServiceImpl implements UserManagementService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!skipSearch(commonUsers) && StringUtils.isNotEmpty(firstName)) {
|
if (!skipSearch(commonUsers) && StringUtils.isNotEmpty(firstName)) {
|
||||||
tempList = getUserList(Constants.USER_CLAIM_FIRST_NAME, firstName);
|
tempList = getUserList(Constants.USER_CLAIM_FIRST_NAME, "*" + firstName + "*");
|
||||||
if (commonUsers == null) {
|
if (commonUsers == null) {
|
||||||
commonUsers = tempList;
|
commonUsers = tempList;
|
||||||
} else {
|
} else {
|
||||||
@ -466,7 +466,7 @@ public class UserManagementServiceImpl implements UserManagementService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!skipSearch(commonUsers) && StringUtils.isNotEmpty(lastName)) {
|
if (!skipSearch(commonUsers) && StringUtils.isNotEmpty(lastName)) {
|
||||||
tempList = getUserList(Constants.USER_CLAIM_LAST_NAME, lastName);
|
tempList = getUserList(Constants.USER_CLAIM_LAST_NAME, "*" + lastName + "*");
|
||||||
if (commonUsers == null || commonUsers.size() == 0) {
|
if (commonUsers == null || commonUsers.size() == 0) {
|
||||||
commonUsers = tempList;
|
commonUsers = tempList;
|
||||||
} else {
|
} else {
|
||||||
@ -475,7 +475,7 @@ public class UserManagementServiceImpl implements UserManagementService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!skipSearch(commonUsers) && StringUtils.isNotEmpty(emailAddress)) {
|
if (!skipSearch(commonUsers) && StringUtils.isNotEmpty(emailAddress)) {
|
||||||
tempList = getUserList(Constants.USER_CLAIM_EMAIL_ADDRESS, emailAddress);
|
tempList = getUserList(Constants.USER_CLAIM_EMAIL_ADDRESS, "*" + emailAddress + "*");
|
||||||
if (commonUsers == null || commonUsers.size() == 0) {
|
if (commonUsers == null || commonUsers.size() == 0) {
|
||||||
commonUsers = tempList;
|
commonUsers = tempList;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.entgra.device.mgt.core.device.mgt.api.jaxrs.service.impl.util;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ApiModel(value = "DisenrollRequest", description = "Contains the multiple devices specified by device IDs")
|
||||||
|
public class DisenrollRequest {
|
||||||
|
@ApiModelProperty(name = "deviceTypeWithDeviceIds", value = "Contains the multiple devices specified by device IDs with type",
|
||||||
|
required = true)
|
||||||
|
private Map<String, List<String>> deviceTypeWithDeviceIds;
|
||||||
|
|
||||||
|
public Map<String, List<String>> getDeviceTypeWithDeviceIds() {
|
||||||
|
return deviceTypeWithDeviceIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDeviceTypeWithDeviceIds(Map<String, List<String>> deviceTypeWithDeviceIds) {
|
||||||
|
this.deviceTypeWithDeviceIds = deviceTypeWithDeviceIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt</artifactId>
|
<artifactId>device-mgt</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -26,6 +26,7 @@ import io.entgra.device.mgt.core.device.mgt.common.license.mgt.License;
|
|||||||
import io.entgra.device.mgt.core.device.mgt.common.policy.mgt.PolicyMonitoringManager;
|
import io.entgra.device.mgt.core.device.mgt.common.policy.mgt.PolicyMonitoringManager;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
import io.entgra.device.mgt.core.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.push.notification.PushNotificationConfig;
|
import io.entgra.device.mgt.core.device.mgt.common.push.notification.PushNotificationConfig;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypeMetaDefinition;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -65,4 +66,6 @@ public interface DeviceManagementService {
|
|||||||
DeviceEnrollmentInvitationDetails getDeviceEnrollmentInvitationDetails();
|
DeviceEnrollmentInvitationDetails getDeviceEnrollmentInvitationDetails();
|
||||||
|
|
||||||
License getLicenseConfig();
|
License getLicenseConfig();
|
||||||
|
|
||||||
|
DeviceTypeMetaDefinition getDeviceTypeMetaDefinition();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,6 +41,8 @@ public class DeviceTypeMetaDefinition {
|
|||||||
|
|
||||||
private boolean longLivedToken = false;
|
private boolean longLivedToken = false;
|
||||||
|
|
||||||
|
private boolean storeVisibilityEnabled = true;
|
||||||
|
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return description;
|
return description;
|
||||||
}
|
}
|
||||||
@ -121,4 +123,12 @@ public class DeviceTypeMetaDefinition {
|
|||||||
public void setLongLivedToken(boolean longLivedToken) {
|
public void setLongLivedToken(boolean longLivedToken) {
|
||||||
this.longLivedToken = longLivedToken;
|
this.longLivedToken = longLivedToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isStoreVisibilityEnabled() {
|
||||||
|
return storeVisibilityEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStoreVisibilityEnabled(boolean storeVisibilityEnabled) {
|
||||||
|
this.storeVisibilityEnabled = storeVisibilityEnabled;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
package io.entgra.device.mgt.core.device.mgt.common.type.mgt;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlType;
|
||||||
|
|
||||||
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
|
@XmlType(name = "DeviceTypeMetaDetails", propOrder = {
|
||||||
|
"storeVisibilityEnabled"
|
||||||
|
})
|
||||||
|
public class DeviceTypeMetaDetails {
|
||||||
|
|
||||||
|
@XmlElement(name = "storeVisibilityEnabled")
|
||||||
|
private boolean storeVisibilityEnabled;
|
||||||
|
|
||||||
|
public boolean isStoreVisibilityEnabled() {
|
||||||
|
return storeVisibilityEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStoreVisibilityEnabled(boolean storeVisibilityEnabled) {
|
||||||
|
this.storeVisibilityEnabled = storeVisibilityEnabled;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt</artifactId>
|
<artifactId>device-mgt</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>device-mgt</artifactId>
|
<artifactId>device-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -85,7 +85,7 @@ public class DeviceManagementPluginRepository implements DeviceManagerStartupLis
|
|||||||
if (isInitiated) {
|
if (isInitiated) {
|
||||||
/* Initializing Device Management Service Provider */
|
/* Initializing Device Management Service Provider */
|
||||||
provider.init();
|
provider.init();
|
||||||
DeviceTypeMetaDefinition deviceTypeDefinition = null;
|
DeviceTypeMetaDefinition deviceTypeDefinition;
|
||||||
if (provider instanceof DeviceTypeDefinitionProvider) {
|
if (provider instanceof DeviceTypeDefinitionProvider) {
|
||||||
DeviceTypeServiceIdentifier deviceTypeIdentifier = new DeviceTypeServiceIdentifier(
|
DeviceTypeServiceIdentifier deviceTypeIdentifier = new DeviceTypeServiceIdentifier(
|
||||||
provider.getType());
|
provider.getType());
|
||||||
@ -102,6 +102,8 @@ public class DeviceManagementPluginRepository implements DeviceManagerStartupLis
|
|||||||
if (existingProvider != null) {
|
if (existingProvider != null) {
|
||||||
removeDeviceManagementProvider(provider);
|
removeDeviceManagementProvider(provider);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
deviceTypeDefinition = provider.getDeviceTypeMetaDefinition();
|
||||||
}
|
}
|
||||||
|
|
||||||
DeviceManagerUtil.registerDeviceType(deviceType, tenantId, isSharedWithAllTenants, deviceTypeDefinition);
|
DeviceManagerUtil.registerDeviceType(deviceType, tenantId, isSharedWithAllTenants, deviceTypeDefinition);
|
||||||
|
|||||||
@ -142,7 +142,7 @@ public abstract class AbstractGeofenceDAOImpl implements GeofenceDAO {
|
|||||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||||
stmt.setInt(index++, tenantId);
|
stmt.setInt(index++, tenantId);
|
||||||
if (isNameProvided) {
|
if (isNameProvided) {
|
||||||
stmt.setString(index++, request.getProperty(DeviceManagementConstants.GeoServices.FENCE_NAME).toString() + "%");
|
stmt.setString(index++, "%" + request.getProperty(DeviceManagementConstants.GeoServices.FENCE_NAME).toString() + "%");
|
||||||
}
|
}
|
||||||
stmt.setInt(index++, request.getRowCount());
|
stmt.setInt(index++, request.getRowCount());
|
||||||
stmt.setInt(index, request.getStartIndex());
|
stmt.setInt(index, request.getStartIndex());
|
||||||
@ -179,7 +179,7 @@ public abstract class AbstractGeofenceDAOImpl implements GeofenceDAO {
|
|||||||
"WHERE FENCE_NAME LIKE ?" +
|
"WHERE FENCE_NAME LIKE ?" +
|
||||||
"AND TENANT_ID = ? ";
|
"AND TENANT_ID = ? ";
|
||||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||||
stmt.setString(1, fenceName + "%");
|
stmt.setString(1, "%" + fenceName + "%");
|
||||||
stmt.setInt(2, tenantId);
|
stmt.setInt(2, tenantId);
|
||||||
try (ResultSet rst = stmt.executeQuery()) {
|
try (ResultSet rst = stmt.executeQuery()) {
|
||||||
geofenceData = extractGeofenceData(rst);
|
geofenceData = extractGeofenceData(rst);
|
||||||
|
|||||||
@ -20,6 +20,7 @@ package io.entgra.device.mgt.core.device.mgt.core.dao.impl.device;
|
|||||||
|
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.Count;
|
import io.entgra.device.mgt.core.device.mgt.common.Count;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.Device;
|
import io.entgra.device.mgt.core.device.mgt.common.Device;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.common.EnrolmentInfo;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.PaginationRequest;
|
import io.entgra.device.mgt.core.device.mgt.common.PaginationRequest;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.device.details.DeviceInfo;
|
import io.entgra.device.mgt.core.device.mgt.common.device.details.DeviceInfo;
|
||||||
import io.entgra.device.mgt.core.device.mgt.core.dao.DeviceManagementDAOException;
|
import io.entgra.device.mgt.core.device.mgt.core.dao.DeviceManagementDAOException;
|
||||||
@ -31,7 +32,11 @@ import org.apache.commons.lang.StringUtils;
|
|||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
import java.sql.*;
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Timestamp;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -1467,4 +1472,35 @@ public class SQLServerDeviceDAOImpl extends AbstractDeviceDAOImpl {
|
|||||||
return geoClusters;
|
return geoClusters;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void refactorDeviceStatus(Connection conn, List<Device> validDevices) throws DeviceManagementDAOException {
|
||||||
|
String updateQuery = "UPDATE DM_DEVICE_STATUS SET STATUS = ? WHERE ID = ?";
|
||||||
|
String selectLastMatchingRecordQuery = "SELECT TOP 1 ID FROM DM_DEVICE_STATUS WHERE ENROLMENT_ID = ? AND DEVICE_ID = ? ORDER BY ID DESC";
|
||||||
|
|
||||||
|
try (PreparedStatement selectStatement = conn.prepareStatement(selectLastMatchingRecordQuery);
|
||||||
|
PreparedStatement updateStatement = conn.prepareStatement(updateQuery)) {
|
||||||
|
|
||||||
|
for (Device device : validDevices) {
|
||||||
|
|
||||||
|
selectStatement.setInt(1, device.getEnrolmentInfo().getId());
|
||||||
|
selectStatement.setInt(2, device.getId());
|
||||||
|
|
||||||
|
ResultSet resultSet = selectStatement.executeQuery();
|
||||||
|
int lastRecordId = 0;
|
||||||
|
if (resultSet.next()) {
|
||||||
|
lastRecordId = resultSet.getInt("ID");
|
||||||
|
}
|
||||||
|
|
||||||
|
updateStatement.setString(1, String.valueOf(EnrolmentInfo.Status.DELETED));
|
||||||
|
updateStatement.setInt(2, lastRecordId);
|
||||||
|
updateStatement.execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "SQL error occurred while updating device status properties.";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new DeviceManagementDAOException(msg, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -142,7 +142,7 @@ public class GenericGeofenceDAOImpl extends AbstractGeofenceDAOImpl {
|
|||||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||||
stmt.setInt(index++, tenantId);
|
stmt.setInt(index++, tenantId);
|
||||||
if (isNameProvided) {
|
if (isNameProvided) {
|
||||||
stmt.setString(index++, request.getProperty(DeviceManagementConstants.GeoServices.FENCE_NAME).toString() + "%");
|
stmt.setString(index++, request.getProperty("%" + DeviceManagementConstants.GeoServices.FENCE_NAME).toString() + "%");
|
||||||
}
|
}
|
||||||
stmt.setInt(index++, request.getRowCount());
|
stmt.setInt(index++, request.getRowCount());
|
||||||
stmt.setInt(index, request.getStartIndex());
|
stmt.setInt(index, request.getStartIndex());
|
||||||
@ -179,7 +179,7 @@ public class GenericGeofenceDAOImpl extends AbstractGeofenceDAOImpl {
|
|||||||
"WHERE FENCE_NAME LIKE ?" +
|
"WHERE FENCE_NAME LIKE ?" +
|
||||||
"AND TENANT_ID = ? ";
|
"AND TENANT_ID = ? ";
|
||||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||||
stmt.setString(1, fenceName + "%");
|
stmt.setString(1,"%" + fenceName + "%");
|
||||||
stmt.setInt(2, tenantId);
|
stmt.setInt(2, tenantId);
|
||||||
try (ResultSet rst = stmt.executeQuery()) {
|
try (ResultSet rst = stmt.executeQuery()) {
|
||||||
geofenceData = extractGeofenceData(rst);
|
geofenceData = extractGeofenceData(rst);
|
||||||
|
|||||||
@ -71,7 +71,7 @@ public class SQLServerGeofenceDAOImpl extends AbstractGeofenceDAOImpl {
|
|||||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||||
stmt.setInt(index++, tenantId);
|
stmt.setInt(index++, tenantId);
|
||||||
if (isNameProvided) {
|
if (isNameProvided) {
|
||||||
stmt.setString(index++, request.getProperty(DeviceManagementConstants.GeoServices.FENCE_NAME).toString() + "%");
|
stmt.setString(index++, "%" + request.getProperty(DeviceManagementConstants.GeoServices.FENCE_NAME).toString() + "%");
|
||||||
}
|
}
|
||||||
stmt.setInt(index++, request.getStartIndex());
|
stmt.setInt(index++, request.getStartIndex());
|
||||||
stmt.setInt(index, request.getRowCount());
|
stmt.setInt(index, request.getRowCount());
|
||||||
@ -166,4 +166,48 @@ public class SQLServerGeofenceDAOImpl extends AbstractGeofenceDAOImpl {
|
|||||||
throw new DeviceManagementDAOException(msg, e);
|
throw new DeviceManagementDAOException(msg, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<GeofenceData> getGeoFences(int groupId, int tenantId) throws DeviceManagementDAOException {
|
||||||
|
try {
|
||||||
|
Connection conn = this.getConnection();
|
||||||
|
String sql = "SELECT " +
|
||||||
|
"G.ID AS FENCE_ID, " +
|
||||||
|
"FENCE_NAME, " +
|
||||||
|
"DESCRIPTION, " +
|
||||||
|
"LATITUDE, " +
|
||||||
|
"LONGITUDE, " +
|
||||||
|
"RADIUS, " +
|
||||||
|
"GEO_JSON, " +
|
||||||
|
"FENCE_SHAPE " +
|
||||||
|
"FROM DM_GEOFENCE G " +
|
||||||
|
"JOIN DM_GEOFENCE_GROUP_MAPPING M ON G.ID = M.FENCE_ID " +
|
||||||
|
"WHERE M.GROUP_ID = ? AND TENANT_ID = ?";
|
||||||
|
|
||||||
|
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||||
|
stmt.setInt(1, groupId);
|
||||||
|
stmt.setInt(2, tenantId);
|
||||||
|
ResultSet rst = stmt.executeQuery();
|
||||||
|
List <GeofenceData> geofenceDataList = new ArrayList<>();
|
||||||
|
while (rst.next()) {
|
||||||
|
GeofenceData geofenceData = new GeofenceData();
|
||||||
|
geofenceData.setId(rst.getInt("FENCE_ID"));
|
||||||
|
geofenceData.setFenceName(rst.getString("FENCE_NAME"));
|
||||||
|
geofenceData.setDescription(rst.getString("DESCRIPTION"));
|
||||||
|
geofenceData.setLatitude(rst.getDouble("LATITUDE"));
|
||||||
|
geofenceData.setLongitude(rst.getDouble("LONGITUDE"));
|
||||||
|
geofenceData.setRadius(rst.getFloat("RADIUS"));
|
||||||
|
geofenceData.setGeoJson(rst.getString("GEO_JSON"));
|
||||||
|
geofenceData.setFenceShape(rst.getString("FENCE_SHAPE"));
|
||||||
|
geofenceDataList.add(geofenceData);
|
||||||
|
}
|
||||||
|
return geofenceDataList;
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "Error occurred while retrieving Geo fences of group " + groupId
|
||||||
|
+ " and tenant " + tenantId;
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new DeviceManagementDAOException(msg, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,11 +24,21 @@ import io.entgra.device.mgt.core.device.mgt.core.dto.operation.mgt.ConfigOperati
|
|||||||
import io.entgra.device.mgt.core.device.mgt.core.dto.operation.mgt.Operation;
|
import io.entgra.device.mgt.core.device.mgt.core.dto.operation.mgt.Operation;
|
||||||
import io.entgra.device.mgt.core.device.mgt.core.operation.mgt.dao.OperationManagementDAOException;
|
import io.entgra.device.mgt.core.device.mgt.core.operation.mgt.dao.OperationManagementDAOException;
|
||||||
import io.entgra.device.mgt.core.device.mgt.core.operation.mgt.dao.OperationManagementDAOFactory;
|
import io.entgra.device.mgt.core.device.mgt.core.operation.mgt.dao.OperationManagementDAOFactory;
|
||||||
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.sql.*;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.ObjectInputStream;
|
||||||
|
import java.io.ObjectOutputStream;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Timestamp;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -43,7 +53,7 @@ public class ConfigOperationMSSQLDAOImpl extends GenericOperationDAOImpl {
|
|||||||
operation.setCreatedTimeStamp(new Timestamp(new Date().getTime()).toString());
|
operation.setCreatedTimeStamp(new Timestamp(new Date().getTime()).toString());
|
||||||
Connection connection = OperationManagementDAOFactory.getConnection();
|
Connection connection = OperationManagementDAOFactory.getConnection();
|
||||||
String sql = "INSERT INTO DM_OPERATION(TYPE, CREATED_TIMESTAMP, RECEIVED_TIMESTAMP, OPERATION_CODE, " +
|
String sql = "INSERT INTO DM_OPERATION(TYPE, CREATED_TIMESTAMP, RECEIVED_TIMESTAMP, OPERATION_CODE, " +
|
||||||
"INITIATED_BY, OPERATION_DETAILS) VALUES (?, ?, ?, ?, ?, ?)";
|
"INITIATED_BY, OPERATION_DETAILS, TENANT_ID) VALUES (?, ?, ?, ?, ?, ?, ?)";
|
||||||
try (PreparedStatement stmt = connection.prepareStatement(sql, new String[]{"id"})) {
|
try (PreparedStatement stmt = connection.prepareStatement(sql, new String[]{"id"})) {
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
ObjectOutputStream oos = new ObjectOutputStream(baos);
|
ObjectOutputStream oos = new ObjectOutputStream(baos);
|
||||||
@ -55,6 +65,7 @@ public class ConfigOperationMSSQLDAOImpl extends GenericOperationDAOImpl {
|
|||||||
stmt.setString(4, operation.getCode());
|
stmt.setString(4, operation.getCode());
|
||||||
stmt.setString(5, operation.getInitiatedBy());
|
stmt.setString(5, operation.getInitiatedBy());
|
||||||
stmt.setBytes(6, operationBytes);
|
stmt.setBytes(6, operationBytes);
|
||||||
|
stmt.setInt(7, PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId());
|
||||||
stmt.executeUpdate();
|
stmt.executeUpdate();
|
||||||
try (ResultSet rs = stmt.getGeneratedKeys()) {
|
try (ResultSet rs = stmt.getGeneratedKeys()) {
|
||||||
int id = -1;
|
int id = -1;
|
||||||
|
|||||||
@ -27,6 +27,7 @@ import io.entgra.device.mgt.core.device.mgt.common.policy.mgt.PolicyMonitoringMa
|
|||||||
import io.entgra.device.mgt.core.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
import io.entgra.device.mgt.core.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.push.notification.PushNotificationConfig;
|
import io.entgra.device.mgt.core.device.mgt.common.push.notification.PushNotificationConfig;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.spi.DeviceManagementService;
|
import io.entgra.device.mgt.core.device.mgt.common.spi.DeviceManagementService;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypeMetaDefinition;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -135,4 +136,9 @@ public class TestDeviceManagementService implements DeviceManagementService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override public License getLicenseConfig() { return null; }
|
@Override public License getLicenseConfig() { return null; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DeviceTypeMetaDefinition getDeviceTypeMetaDefinition() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt</artifactId>
|
<artifactId>device-mgt</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -17,13 +17,18 @@
|
|||||||
*/
|
*/
|
||||||
package io.entgra.device.mgt.core.device.mgt.extensions.device.type.template;
|
package io.entgra.device.mgt.core.device.mgt.extensions.device.type.template;
|
||||||
|
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.common.DeviceManager;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.common.DeviceStatusTaskPluginConfig;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.InitialOperationConfig;
|
import io.entgra.device.mgt.core.device.mgt.common.InitialOperationConfig;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.common.MonitoringOperation;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.common.OperationMonitoringTaskConfig;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.ProvisioningConfig;
|
import io.entgra.device.mgt.core.device.mgt.common.ProvisioningConfig;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.*;
|
import io.entgra.device.mgt.core.device.mgt.common.StartupOperationConfig;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypeMetaDetails;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.common.exceptions.DeviceManagementException;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.app.mgt.ApplicationManager;
|
import io.entgra.device.mgt.core.device.mgt.common.app.mgt.ApplicationManager;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.configuration.mgt.ConfigurationEntry;
|
import io.entgra.device.mgt.core.device.mgt.common.configuration.mgt.ConfigurationEntry;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.configuration.mgt.PlatformConfiguration;
|
import io.entgra.device.mgt.core.device.mgt.common.configuration.mgt.PlatformConfiguration;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.exceptions.DeviceManagementException;
|
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.general.GeneralConfig;
|
import io.entgra.device.mgt.core.device.mgt.common.general.GeneralConfig;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.invitation.mgt.DeviceEnrollmentInvitationDetails;
|
import io.entgra.device.mgt.core.device.mgt.common.invitation.mgt.DeviceEnrollmentInvitationDetails;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.license.mgt.License;
|
import io.entgra.device.mgt.core.device.mgt.common.license.mgt.License;
|
||||||
@ -31,6 +36,7 @@ import io.entgra.device.mgt.core.device.mgt.common.policy.mgt.PolicyMonitoringMa
|
|||||||
import io.entgra.device.mgt.core.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
import io.entgra.device.mgt.core.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.push.notification.PushNotificationConfig;
|
import io.entgra.device.mgt.core.device.mgt.common.push.notification.PushNotificationConfig;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.spi.DeviceManagementService;
|
import io.entgra.device.mgt.core.device.mgt.common.spi.DeviceManagementService;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypeMetaDefinition;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
||||||
import io.entgra.device.mgt.core.device.mgt.extensions.device.type.template.config.Feature;
|
import io.entgra.device.mgt.core.device.mgt.extensions.device.type.template.config.Feature;
|
||||||
import io.entgra.device.mgt.core.device.mgt.extensions.device.type.template.config.*;
|
import io.entgra.device.mgt.core.device.mgt.extensions.device.type.template.config.*;
|
||||||
@ -70,6 +76,7 @@ public class DeviceTypeManagerService implements DeviceManagementService {
|
|||||||
private DeviceTypePlatformDetails deviceTypePlatformDetails;
|
private DeviceTypePlatformDetails deviceTypePlatformDetails;
|
||||||
private DeviceEnrollmentInvitationDetails deviceEnrollmentInvitationDetails;
|
private DeviceEnrollmentInvitationDetails deviceEnrollmentInvitationDetails;
|
||||||
private GeneralConfig generalConfig;
|
private GeneralConfig generalConfig;
|
||||||
|
private DeviceTypeMetaDefinition deviceTypeMetaDefinition;
|
||||||
private boolean isRegistryBasedConfigs = false;
|
private boolean isRegistryBasedConfigs = false;
|
||||||
private boolean isScheduled = false;
|
private boolean isScheduled = false;
|
||||||
private String notifierType;
|
private String notifierType;
|
||||||
@ -97,6 +104,8 @@ public class DeviceTypeManagerService implements DeviceManagementService {
|
|||||||
this.setDeviceEnrollmentInvitationDetails(deviceTypeConfiguration);
|
this.setDeviceEnrollmentInvitationDetails(deviceTypeConfiguration);
|
||||||
this.licenseConfig = new License();
|
this.licenseConfig = new License();
|
||||||
this.setLicenseConfig(deviceTypeConfiguration);
|
this.setLicenseConfig(deviceTypeConfiguration);
|
||||||
|
this.deviceTypeMetaDefinition = new DeviceTypeMetaDefinition();
|
||||||
|
this.setDeviceTypeMetaDefinition(deviceTypeConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -250,6 +259,11 @@ public class DeviceTypeManagerService implements DeviceManagementService {
|
|||||||
return licenseConfig;
|
return licenseConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DeviceTypeMetaDefinition getDeviceTypeMetaDefinition() {
|
||||||
|
return deviceTypeMetaDefinition;
|
||||||
|
}
|
||||||
|
|
||||||
private void setProvisioningConfig(String tenantDomain, DeviceTypeConfiguration deviceTypeConfiguration) {
|
private void setProvisioningConfig(String tenantDomain, DeviceTypeConfiguration deviceTypeConfiguration) {
|
||||||
if (deviceTypeConfiguration.getProvisioningConfig() != null) {
|
if (deviceTypeConfiguration.getProvisioningConfig() != null) {
|
||||||
boolean sharedWithAllTenants = deviceTypeConfiguration.getProvisioningConfig().isSharedWithAllTenants();
|
boolean sharedWithAllTenants = deviceTypeConfiguration.getProvisioningConfig().isSharedWithAllTenants();
|
||||||
@ -377,4 +391,11 @@ public class DeviceTypeManagerService implements DeviceManagementService {
|
|||||||
licenseConfig.setText(license.getText());
|
licenseConfig.setText(license.getText());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDeviceTypeMetaDefinition(DeviceTypeConfiguration deviceTypeConfiguration) {
|
||||||
|
DeviceTypeMetaDetails deviceTypeMetaDefinitions = deviceTypeConfiguration.getDeviceTypeMetaDetails();
|
||||||
|
if (deviceTypeMetaDefinitions != null) {
|
||||||
|
deviceTypeMetaDefinition.setStoreVisibilityEnabled(deviceTypeMetaDefinitions.isStoreVisibilityEnabled());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,6 +18,7 @@
|
|||||||
package io.entgra.device.mgt.core.device.mgt.extensions.device.type.template.config;
|
package io.entgra.device.mgt.core.device.mgt.extensions.device.type.template.config;
|
||||||
|
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.invitation.mgt.DeviceEnrollmentInvitationDetails;
|
import io.entgra.device.mgt.core.device.mgt.common.invitation.mgt.DeviceEnrollmentInvitationDetails;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypeMetaDetails;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.*;
|
import javax.xml.bind.annotation.*;
|
||||||
@ -88,6 +89,8 @@ public class DeviceTypeConfiguration {
|
|||||||
protected DeviceTypePlatformDetails deviceTypePlatformDetails;
|
protected DeviceTypePlatformDetails deviceTypePlatformDetails;
|
||||||
@XmlElement(name = "DeviceEnrollmentInvitationDetails", required = true)
|
@XmlElement(name = "DeviceEnrollmentInvitationDetails", required = true)
|
||||||
protected DeviceEnrollmentInvitationDetails deviceEnrollmentInvitationDetails;
|
protected DeviceEnrollmentInvitationDetails deviceEnrollmentInvitationDetails;
|
||||||
|
@XmlElement(name = "DeviceTypeMetaDetails")
|
||||||
|
protected DeviceTypeMetaDetails deviceTypeMetaDetails;
|
||||||
|
|
||||||
public DeviceTypePlatformDetails getDeviceTypePlatformDetails() {
|
public DeviceTypePlatformDetails getDeviceTypePlatformDetails() {
|
||||||
return deviceTypePlatformDetails;
|
return deviceTypePlatformDetails;
|
||||||
@ -412,4 +415,12 @@ public class DeviceTypeConfiguration {
|
|||||||
DeviceEnrollmentInvitationDetails deviceEnrollmentInvitationDetails) {
|
DeviceEnrollmentInvitationDetails deviceEnrollmentInvitationDetails) {
|
||||||
this.deviceEnrollmentInvitationDetails = deviceEnrollmentInvitationDetails;
|
this.deviceEnrollmentInvitationDetails = deviceEnrollmentInvitationDetails;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DeviceTypeMetaDetails getDeviceTypeMetaDetails() {
|
||||||
|
return deviceTypeMetaDetails;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDeviceTypeMetaDetails(DeviceTypeMetaDetails deviceTypeMetaDetails) {
|
||||||
|
this.deviceTypeMetaDetails = deviceTypeMetaDetails;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,7 @@ import io.entgra.device.mgt.core.device.mgt.common.policy.mgt.PolicyMonitoringMa
|
|||||||
import io.entgra.device.mgt.core.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
import io.entgra.device.mgt.core.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.push.notification.PushNotificationConfig;
|
import io.entgra.device.mgt.core.device.mgt.common.push.notification.PushNotificationConfig;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.spi.DeviceManagementService;
|
import io.entgra.device.mgt.core.device.mgt.common.spi.DeviceManagementService;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypeMetaDefinition;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -118,4 +119,9 @@ public class TypeXDeviceManagementService implements DeviceManagementService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public License getLicenseConfig() { return null; }
|
public License getLicenseConfig() { return null; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DeviceTypeMetaDefinition getDeviceTypeMetaDefinition() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt</artifactId>
|
<artifactId>device-mgt</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>heartbeat-management</artifactId>
|
<artifactId>heartbeat-management</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>identity-extensions</artifactId>
|
<artifactId>identity-extensions</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>identity-extensions</artifactId>
|
<artifactId>identity-extensions</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>logger</artifactId>
|
<artifactId>logger</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>io.entgra.device.mgt.core.notification.logger</artifactId>
|
<artifactId>io.entgra.device.mgt.core.notification.logger</artifactId>
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>operation-template-mgt</artifactId>
|
<artifactId>operation-template-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>policy-mgt</artifactId>
|
<artifactId>policy-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>policy-mgt</artifactId>
|
<artifactId>policy-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>policy-mgt</artifactId>
|
<artifactId>policy-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>policy-mgt</artifactId>
|
<artifactId>policy-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -27,6 +27,7 @@ import io.entgra.device.mgt.core.device.mgt.common.policy.mgt.PolicyMonitoringMa
|
|||||||
import io.entgra.device.mgt.core.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
import io.entgra.device.mgt.core.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.push.notification.PushNotificationConfig;
|
import io.entgra.device.mgt.core.device.mgt.common.push.notification.PushNotificationConfig;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.spi.DeviceManagementService;
|
import io.entgra.device.mgt.core.device.mgt.common.spi.DeviceManagementService;
|
||||||
|
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypeMetaDefinition;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
import io.entgra.device.mgt.core.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -118,4 +119,9 @@ public class TypeXDeviceManagementService implements DeviceManagementService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public License getLicenseConfig() { return null; }
|
public License getLicenseConfig() { return null; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DeviceTypeMetaDefinition getDeviceTypeMetaDefinition() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>subtype-mgt</artifactId>
|
<artifactId>subtype-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>task-manager</artifactId>
|
<artifactId>task-manager</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>task-manager</artifactId>
|
<artifactId>task-manager</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>task-mgt</artifactId>
|
<artifactId>task-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>task-watcher</artifactId>
|
<artifactId>task-watcher</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<artifactId>task-mgt</artifactId>
|
<artifactId>task-mgt</artifactId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>tenant-mgt</artifactId>
|
<artifactId>tenant-mgt</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>tenant-mgt</artifactId>
|
<artifactId>tenant-mgt</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
<artifactId>io.entgra.device.mgt.core.parent</artifactId>
|
||||||
<groupId>io.entgra.device.mgt.core</groupId>
|
<groupId>io.entgra.device.mgt.core</groupId>
|
||||||
<version>5.0.31-SNAPSHOT</version>
|
<version>5.0.33-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user