/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.volumecontroller.impl.plugins.discovery.smis;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.curator.framework.recipes.queue.QueueSerializer;
/**
* Discovery Jobs serializer.
*/
public class DataCollectionJobSerializer implements QueueSerializer<DataCollectionJob> {
private static final Logger _logger = LoggerFactory
.getLogger(DataCollectionJobSerializer.class);
/**
* deserialize Discovery Job
*
* @param data
* @return DiscoveryJob
* To-Do :
* Abstract QueuJob and Discovery Job using Job Class, so that same code can be used in
* both places.
*/
@Override
public DataCollectionJob deserialize(byte[] data) {
Object discoveryjob = null;
ByteArrayInputStream bis = null;
ObjectInput in = null;
try {
bis = new ByteArrayInputStream(data);
in = new ObjectInputStream(bis);
discoveryjob = in.readObject();
} catch (Exception e1) {
_logger.error("DeSerializing Object to byte Array Exception: ", e1);
} finally {
try {
in.close();
bis.close();
} catch (IOException e1) {
_logger.error("Error while closing Streams: ", e1);
}
}
return (DataCollectionJob) discoveryjob;
}
/**
* serialize
*
* @param DataCollectionJob
* @return bytes
*/
@Override
public byte[] serialize(DataCollectionJob job) {
byte[] Objbytes = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
try {
out = new ObjectOutputStream(bos);
out.writeObject(job);
Objbytes = bos.toByteArray();
} catch (Exception e) {
_logger.error("Serializing Object to byte Array Exception: ", e);
} finally {
try {
out.close();
bos.close();
} catch (IOException e) {
_logger.error("Error while closing Streams: ", e);
}
}
return Objbytes;
}
}