diff --git a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/impl/DeviceManagementConfigServiceImpl.java b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/impl/DeviceManagementConfigServiceImpl.java
index daf9d1c4194..9ccbecda3d8 100644
--- a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/impl/DeviceManagementConfigServiceImpl.java
+++ b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/impl/DeviceManagementConfigServiceImpl.java
@@ -112,12 +112,12 @@ public class DeviceManagementConfigServiceImpl implements DeviceManagementConfig
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
} catch (DeviceNotFoundException e) {
- log.error(e.getMessage(), e);
+ log.warn(e.getMessage());
return Response.status(Response.Status.BAD_REQUEST).entity(
new ErrorResponse.ErrorResponseBuilder().setMessage(e.getMessage()).build()).build();
} catch (AmbiguousConfigurationException e) {
- String msg = "Configurations are ambiguous";
- log.error(msg, e);
+ String msg = "Configurations are ambiguous. " + e.getMessage();
+ log.warn(msg);
return Response.status(Response.Status.BAD_REQUEST).entity(
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
} catch (JsonParseException | JsonMappingException e) {
@@ -126,7 +126,7 @@ public class DeviceManagementConfigServiceImpl implements DeviceManagementConfig
return Response.status(Response.Status.BAD_REQUEST).entity(
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
} catch (IOException e) {
- String msg = "Error occurred while parsing query param JSON data";
+ String msg = "Error occurred while parsing query param JSON data.";
log.error(msg.concat(" ").concat(properties), e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java
index 458b3bb6dac..f89dbce3adf 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java
@@ -273,9 +273,10 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
newEnrolmentInfo.setId(enrolmentInfo.getId());
//We are explicitly setting device status only if matching device enrollment is in
// removed status.
- if (enrolmentInfo.getStatus() == EnrolmentInfo.Status.REMOVED) {
+ if (enrolmentInfo.getStatus() == EnrolmentInfo.Status.REMOVED &&
+ newEnrolmentInfo.getStatus() == null) {
newEnrolmentInfo.setStatus(EnrolmentInfo.Status.ACTIVE);
- } else {
+ } else if (newEnrolmentInfo.getStatus() == null) {
newEnrolmentInfo.setStatus(enrolmentInfo.getStatus());
}
status = true;
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java
index 1f0f16d9fc0..2a12a75ae71 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java
@@ -646,7 +646,6 @@ public final class DeviceManagerUtil {
apiEndpoint.setEntity(constructApplicationRegistrationPayload());
HttpResponse response = client.execute(apiEndpoint);
if (response != null) {
- log.info("Obtained client credentials: " + response.getStatusLine().getStatusCode());
BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent()));
StringBuilder result = new StringBuilder();
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java
index f51b9cce746..f5694d53c2a 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java
@@ -53,6 +53,7 @@ import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DataSou
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceDetails;
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeConfiguration;
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.Feature;
+import org.wso2.carbon.device.mgt.extensions.device.type.template.config.Properties;
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.Table;
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.TableConfig;
import org.wso2.carbon.device.mgt.extensions.device.type.template.dao.DeviceDAODefinition;
@@ -81,6 +82,7 @@ import java.io.File;
import java.io.StringReader;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -102,6 +104,7 @@ public class DeviceTypeManager implements DeviceManager {
private FeatureManager featureManager;
private boolean propertiesExist;
private DeviceTypePluginDAOManager deviceTypePluginDAOManager;
+ private DeviceTypePluginDAOManager propertyBasedDeviceTypePluginDAOManager = null;
public DeviceTypeManager(DeviceTypeConfigIdentifier deviceTypeConfigIdentifier,
DeviceTypeConfiguration deviceTypeConfiguration) {
@@ -154,13 +157,13 @@ public class DeviceTypeManager implements DeviceManager {
DataSource dataSource = deviceTypeConfiguration.getDataSource();
if (dataSource == null) {
throw new DeviceTypeDeployerPayloadException("Could not find the datasource related with the "
- + "table id " + tableName + " for the device type " + deviceType);
+ + "table id " + tableName + " for the device type " + deviceType);
}
TableConfig tableConfig = dataSource.getTableConfig();
if (tableConfig == null) {
throw new DeviceTypeDeployerPayloadException("Could not find the table config with the "
- + "table id " + tableName + " for the device type " + deviceType);
+ + "table id " + tableName + " for the device type " + deviceType);
}
List
tables = deviceTypeConfiguration.getDataSource().getTableConfig().getTable();
Table deviceDefinitionTable = null;
@@ -197,6 +200,15 @@ public class DeviceTypeManager implements DeviceManager {
}
}
deviceTypePluginDAOManager = new DeviceTypePluginDAOManager(datasourceName, deviceDAODefinition);
+ if (deviceDetails.getProperties() == null || deviceDetails.getProperties().getProperty() == null
+ || deviceDetails.getProperties().getProperty().size() == 0) {
+ Properties properties = new Properties();
+ List propKeys = new ArrayList<>(deviceDAODefinition.getColumnNames());
+ propKeys.add("token");
+ properties.addProperties(propKeys);
+ deviceDetails.setProperties(properties);
+ }
+ propertyBasedDeviceTypePluginDAOManager = new DeviceTypePluginDAOManager(deviceType, deviceDetails);
} else {
throw new DeviceTypeDeployerPayloadException("Invalid datasource name.");
}
@@ -205,7 +217,7 @@ public class DeviceTypeManager implements DeviceManager {
}
} else {
if (deviceDetails.getProperties() != null && deviceDetails.getProperties().getProperty() != null
- && deviceDetails.getProperties().getProperty().size() > 0 ) {
+ && deviceDetails.getProperties().getProperty().size() > 0) {
deviceTypePluginDAOManager = new DeviceTypePluginDAOManager(deviceType, deviceDetails);
propertiesExist = true;
}
@@ -227,13 +239,13 @@ public class DeviceTypeManager implements DeviceManager {
deviceTypeManagerExtensionService.addPluginDAOManager(deviceType, deviceTypePluginDAOManager);
} catch (DeviceTypePluginExtensionException e) {
String msg = "Error occurred while saving DeviceTypePluginDAOManager for device type: "
- + deviceType;
+ + deviceType;
log.error(msg);
throw new DeviceTypeDeployerPayloadException(msg);
}
} else {
log.warn("Could not save DeviceTypePluginDAOManager for device type: " + deviceType +
- " since DeviceTypePluginDAOManager is null.");
+ " since DeviceTypePluginDAOManager is null.");
}
} else {
String msg = "Could not save DeviceTypePluginDAOManager since device type is null or empty.";
@@ -323,7 +335,7 @@ public class DeviceTypeManager implements DeviceManager {
new DeviceIdentifier(device.getDeviceIdentifier(), device.getType()));
try {
if (log.isDebugEnabled()) {
- log.debug("Enrolling a new Android device : " + device.getDeviceIdentifier());
+ log.debug("Enrolling a new device : " + device.getDeviceIdentifier());
}
if (isEnrolled) {
this.modifyEnrollment(device);
@@ -339,6 +351,23 @@ public class DeviceTypeManager implements DeviceManager {
} finally {
deviceTypePluginDAOManager.getDeviceTypeDAOHandler().closeConnection();
}
+ if (propertyBasedDeviceTypePluginDAOManager != null && !isEnrolled && status) {
+ try {
+ if (log.isDebugEnabled()) {
+ log.debug("Adding properties for new device : " + device.getDeviceIdentifier());
+ }
+ propertyBasedDeviceTypePluginDAOManager.getDeviceTypeDAOHandler().beginTransaction();
+ status = propertyBasedDeviceTypePluginDAOManager.getDeviceDAO().addDevice(device);
+ propertyBasedDeviceTypePluginDAOManager.getDeviceTypeDAOHandler().commitTransaction();
+ } catch (DeviceTypeMgtPluginException e) {
+ propertyBasedDeviceTypePluginDAOManager.getDeviceTypeDAOHandler().rollbackTransaction();
+ String msg = "Error while adding properties for " + deviceType + " device : " +
+ device.getDeviceIdentifier();
+ throw new DeviceManagementException(msg, e);
+ } finally {
+ propertyBasedDeviceTypePluginDAOManager.getDeviceTypeDAOHandler().closeConnection();
+ }
+ }
return status;
}
return true;
@@ -350,7 +379,7 @@ public class DeviceTypeManager implements DeviceManager {
boolean status;
try {
if (log.isDebugEnabled()) {
- log.debug("Modifying the Android device enrollment data");
+ log.debug("Adding properties for new device : " + device.getDeviceIdentifier());
}
deviceTypePluginDAOManager.getDeviceTypeDAOHandler().beginTransaction();
status = deviceTypePluginDAOManager.getDeviceDAO().updateDevice(device);
@@ -363,6 +392,23 @@ public class DeviceTypeManager implements DeviceManager {
} finally {
deviceTypePluginDAOManager.getDeviceTypeDAOHandler().closeConnection();
}
+ if (propertyBasedDeviceTypePluginDAOManager != null && status) {
+ try {
+ if (log.isDebugEnabled()) {
+ log.debug("Updating properties for new device : " + device.getDeviceIdentifier());
+ }
+ propertyBasedDeviceTypePluginDAOManager.getDeviceTypeDAOHandler().beginTransaction();
+ status = propertyBasedDeviceTypePluginDAOManager.getDeviceDAO().updateDevice(device);
+ propertyBasedDeviceTypePluginDAOManager.getDeviceTypeDAOHandler().commitTransaction();
+ } catch (DeviceTypeMgtPluginException e) {
+ propertyBasedDeviceTypePluginDAOManager.getDeviceTypeDAOHandler().rollbackTransaction();
+ String msg = "Error while updating properties for " + deviceType + " device : " +
+ device.getDeviceIdentifier();
+ throw new DeviceManagementException(msg, e);
+ } finally {
+ propertyBasedDeviceTypePluginDAOManager.getDeviceTypeDAOHandler().closeConnection();
+ }
+ }
return status;
}
return true;
@@ -393,7 +439,7 @@ public class DeviceTypeManager implements DeviceManager {
}
} catch (DeviceTypeMgtPluginException e) {
String msg = "Error while checking the enrollment status of " + deviceType + " device : " +
- deviceId.getId();
+ deviceId.getId();
throw new DeviceManagementException(msg, e);
} finally {
deviceTypePluginDAOManager.getDeviceTypeDAOHandler().closeConnection();
@@ -598,13 +644,42 @@ public class DeviceTypeManager implements DeviceManager {
log.debug("Error occurred while deleting the " + deviceType + " devices: '" +
deviceIdentifierList + "'. Transaction rolled back");
}
- String msg= "Error occurred while deleting the " + deviceType + " devices: '" +
+ String msg = "Error occurred while deleting the " + deviceType + " devices: '" +
deviceIdentifierList;
- log.error(msg,e);
+ log.error(msg, e);
throw new DeviceManagementException(msg, e);
} finally {
deviceTypePluginDAOManager.getDeviceTypeDAOHandler().closeConnection();
}
+ if (propertyBasedDeviceTypePluginDAOManager != null) {
+ try {
+ if (log.isDebugEnabled()) {
+ log.debug("Deleting the properties of " + deviceType + " devices : " + deviceIdentifierList);
+ }
+ propertyBasedDeviceTypePluginDAOManager.getDeviceTypeDAOHandler().beginTransaction();
+ if (propertyBasedDeviceTypePluginDAOManager.getDeviceDAO().deleteDevices(deviceIdentifierList)) {
+ propertyBasedDeviceTypePluginDAOManager.getDeviceTypeDAOHandler().commitTransaction();
+ } else {
+ propertyBasedDeviceTypePluginDAOManager.getDeviceTypeDAOHandler().rollbackTransaction();
+ String msg = "Error occurred while deleting the properties of " + deviceType + " devices: '" +
+ deviceIdentifierList;
+ log.error(msg);
+ throw new DeviceManagementException(msg);
+ }
+ } catch (DeviceTypeMgtPluginException e) {
+ propertyBasedDeviceTypePluginDAOManager.getDeviceTypeDAOHandler().rollbackTransaction();
+ if (log.isDebugEnabled()) {
+ log.debug("Error occurred while deleting the properties of " + deviceType + " devices: '" +
+ deviceIdentifierList + "'. Transaction rolled back");
+ }
+ String msg = "Error occurred while deleting the properties of " + deviceType + " devices: '" +
+ deviceIdentifierList;
+ log.error(msg, e);
+ throw new DeviceManagementException(msg, e);
+ } finally {
+ propertyBasedDeviceTypePluginDAOManager.getDeviceTypeDAOHandler().closeConnection();
+ }
+ }
}
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceTypePluginDAOManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceTypePluginDAOManager.java
index 6a4f0e01265..423defe013b 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceTypePluginDAOManager.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceTypePluginDAOManager.java
@@ -25,8 +25,8 @@ import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
public class DeviceTypePluginDAOManager {
- private PluginDAO deviceTypePluginDAO;
- private DeviceTypeDAOHandler deviceTypeDAOHandler;
+ private final PluginDAO deviceTypePluginDAO;
+ private final DeviceTypeDAOHandler deviceTypeDAOHandler;
private static final String DEFAULT_DATASOURCE_NAME = "jdbc/DM_DS";
public DeviceTypePluginDAOManager(String datasourceName, DeviceDAODefinition deviceDAODefinition) {
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PropertyBasedPluginDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PropertyBasedPluginDAOImpl.java
index b60e70c4c2b..bd2f6b90d8c 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PropertyBasedPluginDAOImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PropertyBasedPluginDAOImpl.java
@@ -151,11 +151,16 @@ public class PropertyBasedPluginDAOImpl implements PluginDAO {
"UPDATE DM_DEVICE_PROPERTIES SET PROPERTY_VALUE = ? WHERE DEVICE_TYPE_NAME = ? AND "
+ "DEVICE_IDENTIFICATION = ? AND PROPERTY_NAME = ? AND TENANT_ID= ?");
+ String propValue;
for (Device.Property property : device.getProperties()) {
if (!deviceProps.contains(property.getName())) {
continue;
}
- stmt.setString(1, property.getValue());
+ propValue = property.getValue();
+ if (propValue != null && propValue.length() > 100) {
+ propValue = "Value too long";
+ }
+ stmt.setString(1, propValue);
stmt.setString(2, deviceType);
stmt.setString(3, device.getDeviceIdentifier());
stmt.setString(4, property.getName());
@@ -253,7 +258,11 @@ public class PropertyBasedPluginDAOImpl implements PluginDAO {
private String getPropertyValue(List properties, String propertyName) {
for (Device.Property property : properties) {
if (property.getName() != null && property.getName().equals(propertyName)) {
- return property.getValue();
+ String value = property.getValue();
+ if (value != null && value.length() > 100) {
+ return "Value too long";
+ }
+ return value;
}
}
return null;