diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/operation/mgt/Operation.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/operation/mgt/Operation.java index 6c521827603..d56dc0daa9b 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/operation/mgt/Operation.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/operation/mgt/Operation.java @@ -20,10 +20,11 @@ package org.wso2.carbon.device.mgt.common.operation.mgt; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; +import java.io.Serializable; import java.util.Properties; @XmlRootElement -public class Operation { +public class Operation implements Serializable { public enum Type { CONFIG, MESSAGE, INFO, COMMAND, PROFILE diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ProfileOperationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ProfileOperationDAOImpl.java index 8a4355e36fc..b77b33f990a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ProfileOperationDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ProfileOperationDAOImpl.java @@ -43,38 +43,16 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl { Connection conn = OperationManagementDAOFactory.openConnection(); PreparedStatement stmt = null; - ByteArrayOutputStream bao = null; - ObjectOutputStream oos = null; try { - bao = new ByteArrayOutputStream(); - oos = new ObjectOutputStream(bao); - oos.writeObject(profileOp); - stmt = conn.prepareStatement("INSERT INTO DM_PROFILE_OPERATION(OPERATION_ID, OPERATION_DETAILS) " + "VALUES(?, ?)"); stmt.setInt(1, operationId); - stmt.setBytes(2, bao.toByteArray()); + stmt.setObject(2, profileOp); stmt.executeUpdate(); } catch (SQLException e) { throw new OperationManagementDAOException("Error occurred while adding profile operation", e); - } catch (IOException e) { - throw new OperationManagementDAOException("Error occurred while serializing profile operation object", e); } finally { - if (bao != null) { - try { - bao.close(); - } catch (IOException e) { - log.warn("Error occurred while closing ByteArrayOutputStream", e); - } - } - if (oos != null) { - try { - oos.close(); - } catch (IOException e) { - log.warn("Error occurred while closing ObjectOutputStream", e); - } - } OperationManagementDAOUtil.cleanupResources(stmt); } return operationId; @@ -132,8 +110,8 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl { PreparedStatement stmt = null; ResultSet rs = null; - ByteArrayInputStream bais; - ObjectOutputStream objectOutputStream; + ByteArrayInputStream bais = null; + ObjectInputStream ois = null; try { Connection connection = OperationManagementDAOFactory.openConnection(); @@ -149,21 +127,13 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl { stmt.setString(2, deviceId.getId()); rs = stmt.executeQuery(); - byte[] operationObjbyteArr; - Blob operationBlob; - ByteArrayInputStream in; - ObjectInputStream is; - + byte[] operationDetails = new byte[0]; if (rs.next()) { - operationBlob = rs.getBlob("OPERATIONDETAILS"); - operationObjbyteArr = operationBlob.getBytes(1, (int) operationBlob.length()); - in = new ByteArrayInputStream(operationObjbyteArr); - is = new ObjectInputStream(in); - return (ProfileOperation) is.readObject(); - }else{ - return null; + operationDetails = rs.getBytes("OPERATIONDETAILS"); } - + bais = new ByteArrayInputStream(operationDetails); + ois = new ObjectInputStream(bais); + return (ProfileOperation) ois.readObject(); } catch (SQLException e) { log.error("SQL error occurred while retrieving profile operation", e); throw new OperationManagementDAOException("Error occurred while adding operation metadata", e); @@ -175,6 +145,20 @@ public class ProfileOperationDAOImpl extends OperationDAOImpl { log.error("IO error occurred while de serialize profile operation", e); throw new OperationManagementDAOException("Error occurred while serializing profile operation object", e); } finally { + if (bais != null) { + try { + bais.close(); + } catch (IOException e) { + log.warn("Error occurred while closing ByteArrayOutputStream", e); + } + } + if (ois != null) { + try { + ois.close(); + } catch (IOException e) { + log.warn("Error occurred while closing ObjectOutputStream", e); + } + } OperationManagementDAOUtil.cleanupResources(stmt, rs); OperationManagementDAOFactory.closeConnection(); }