mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
persisting profile operation payloads as string values as upposed to profile objects. this will iron iot future compatibility issues that may arise, due to operation dto getting updated
This commit is contained in:
parent
f06f83adda
commit
de0bc0bb50
@ -53,7 +53,7 @@ public class ProfileOperationDAOImpl extends GenericOperationDAOImpl {
|
||||
|
||||
bao = new ByteArrayOutputStream();
|
||||
oos = new ObjectOutputStream(bao);
|
||||
oos.writeObject(operation);
|
||||
oos.writeObject(operation.getPayLoad());
|
||||
|
||||
stmt.setInt(1, operationId);
|
||||
stmt.setBytes(2, bao.toByteArray());
|
||||
@ -91,7 +91,8 @@ public class ProfileOperationDAOImpl extends GenericOperationDAOImpl {
|
||||
ObjectInputStream ois;
|
||||
try {
|
||||
Connection conn = OperationManagementDAOFactory.getConnection();
|
||||
String sql = "SELECT OPERATION_ID, ENABLED, OPERATION_DETAILS FROM DM_PROFILE_OPERATION WHERE OPERATION_ID=?";
|
||||
String sql = "SELECT o.ID, po.ENABLED, po.OPERATION_DETAILS, o.CREATED_TIMESTAMP, o.OPERATION_CODE " +
|
||||
"FROM DM_PROFILE_OPERATION po INNER JOIN DM_OPERATION o ON po.OPERATION_ID = O.ID WHERE po.OPERATION_ID=?";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(1, id);
|
||||
@ -99,9 +100,20 @@ public class ProfileOperationDAOImpl extends GenericOperationDAOImpl {
|
||||
|
||||
if (rs.next()) {
|
||||
byte[] operationDetails = rs.getBytes("OPERATION_DETAILS");
|
||||
int oppId = rs.getInt("ID");
|
||||
bais = new ByteArrayInputStream(operationDetails);
|
||||
ois = new ObjectInputStream(bais);
|
||||
profileOperation = (ProfileOperation) ois.readObject();
|
||||
Object obj = ois.readObject();
|
||||
if(obj instanceof String){
|
||||
profileOperation = new ProfileOperation();
|
||||
profileOperation.setCode(rs.getString("OPERATION_CODE"));
|
||||
profileOperation.setId(oppId);
|
||||
profileOperation.setCreatedTimeStamp(rs.getString("CREATED_TIMESTAMP"));
|
||||
profileOperation.setId(oppId);
|
||||
profileOperation.setPayLoad(obj);
|
||||
} else {
|
||||
profileOperation = (ProfileOperation) obj;
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new OperationManagementDAOException("IO Error occurred while de serialize the profile " +
|
||||
@ -110,7 +122,7 @@ public class ProfileOperationDAOImpl extends GenericOperationDAOImpl {
|
||||
throw new OperationManagementDAOException("Class not found error occurred while de serialize the " +
|
||||
"profile operation object", e);
|
||||
} catch (SQLException e) {
|
||||
throw new OperationManagementDAOException("SQL Error occurred while retrieving the command " +
|
||||
throw new OperationManagementDAOException("SQL Error occurred while retrieving the profile " +
|
||||
"operation object " + "available for the id '" + id, e);
|
||||
} finally {
|
||||
OperationManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
@ -132,10 +144,12 @@ public class ProfileOperationDAOImpl extends GenericOperationDAOImpl {
|
||||
|
||||
try {
|
||||
Connection conn = OperationManagementDAOFactory.getConnection();
|
||||
String sql = "Select po.OPERATION_ID, ENABLED, OPERATION_DETAILS from DM_PROFILE_OPERATION po " +
|
||||
"INNER JOIN " +
|
||||
"(Select * From DM_ENROLMENT_OP_MAPPING WHERE ENROLMENT_ID=? " +
|
||||
"AND STATUS=?) dm ON dm.OPERATION_ID = po.OPERATION_ID";
|
||||
String sql = "SELECT o.ID, po1.ENABLED, po1.STATUS, o.TYPE, o.CREATED_TIMESTAMP, o.RECEIVED_TIMESTAMP, " +
|
||||
"o.OPERATION_CODE, po1.OPERATION_DETAILS " +
|
||||
"FROM (SELECT po.OPERATION_ID, po.ENABLED, po.OPERATION_DETAILS, dm.STATUS " +
|
||||
"FROM DM_PROFILE_OPERATION po INNER JOIN (SELECT ENROLMENT_ID, OPERATION_ID, STATUS FROM DM_ENROLMENT_OP_MAPPING " +
|
||||
"WHERE ENROLMENT_ID = ? AND STATUS = ?) dm ON dm.OPERATION_ID = po.OPERATION_ID) po1 " +
|
||||
"INNER JOIN DM_OPERATION o ON po1.OPERATION_ID = o.ID ";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(1, enrolmentId);
|
||||
@ -147,9 +161,20 @@ public class ProfileOperationDAOImpl extends GenericOperationDAOImpl {
|
||||
byte[] operationDetails = rs.getBytes("OPERATION_DETAILS");
|
||||
bais = new ByteArrayInputStream(operationDetails);
|
||||
ois = new ObjectInputStream(bais);
|
||||
profileOperation = (ProfileOperation) ois.readObject();
|
||||
Object obj = ois.readObject();
|
||||
if(obj instanceof String){
|
||||
profileOperation = new ProfileOperation();
|
||||
profileOperation.setCode(rs.getString("OPERATION_CODE"));
|
||||
profileOperation.setId(rs.getInt("ID"));
|
||||
profileOperation.setCreatedTimeStamp(rs.getString("CREATED_TIMESTAMP"));
|
||||
profileOperation.setPayLoad(obj);
|
||||
profileOperation.setStatus(status);
|
||||
operationList.add(profileOperation);
|
||||
} else {
|
||||
profileOperation = (ProfileOperation) obj;
|
||||
profileOperation.setStatus(status);
|
||||
operationList.add(profileOperation);
|
||||
}
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
|
||||
@ -67,6 +67,7 @@ public class OperationManagementTests extends BaseDeviceManagementTest {
|
||||
private static final String POLICY_OPERATION_CODE = "POLICY-TEST";
|
||||
private static final String CONFIG_OPERATION_CODE = "CONFIG-TEST";
|
||||
private static final String PROFILE_OPERATION_CODE = "PROFILE-TEST";
|
||||
private static final String PROFILE_NOTIFICATION_CODE = "NOTIFICATION";
|
||||
private static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";
|
||||
private static final int NO_OF_DEVICES = 5;
|
||||
private static final String ADMIN_USER = "admin";
|
||||
@ -205,8 +206,10 @@ public class OperationManagementTests extends BaseDeviceManagementTest {
|
||||
@Test(dependsOnMethods = "addConfigOperation")
|
||||
public void addProfileOperation() throws DeviceManagementException, OperationManagementException,
|
||||
InvalidDeviceException {
|
||||
Activity activity = this.operationMgtService.addOperation(getOperation(new ProfileOperation(),
|
||||
Operation.Type.PROFILE, PROFILE_OPERATION_CODE),
|
||||
Operation opp = getOperation(new ProfileOperation(),
|
||||
Operation.Type.PROFILE, PROFILE_NOTIFICATION_CODE);
|
||||
opp.setPayLoad("{\"messageText\":\"xyz\",\"messageTitle\":\"abc\"}");
|
||||
Activity activity = this.operationMgtService.addOperation(opp ,
|
||||
this.deviceIds);
|
||||
validateOperationResponse(activity, ActivityStatus.Status.PENDING);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user