package com.nvarghese.beowulf.common.webtest.sfe.jobs;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.code.morphia.annotations.Embedded;
import com.google.code.morphia.annotations.PostLoad;
import com.google.code.morphia.annotations.PrePersist;
import com.google.code.morphia.annotations.Property;
import com.google.code.morphia.annotations.Serialized;
import com.google.code.morphia.annotations.Transient;
@Embedded
public class TestParameterDocument {
@Property("param_type")
private String parameterType;
@Transient
private Object parameterValue;
@Serialized
private byte[] _paramValueBytes;
@Transient
static Logger logger = LoggerFactory.getLogger(TestParameterDocument.class);
public TestParameterDocument() {
}
@PostLoad
void postLoadOperation() {
try {
ByteArrayInputStream bis = new ByteArrayInputStream(_paramValueBytes);
ObjectInputStream ois = new ObjectInputStream(bis);
parameterValue = ois.readObject();
} catch (IOException e) {
logger.error("Failed to load paramterValue. Reason: {}", e.getMessage(), e);
} catch (ClassNotFoundException e) {
logger.error("Failed to load paramterValue. Reason: {}", e.getMessage(), e);
}
}
@PrePersist
void prePersist() {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(parameterValue);
oos.flush();
oos.close();
bos.close();
_paramValueBytes = bos.toByteArray();
} catch (IOException e) {
logger.error("Failed to serialize paramterValue. Reason: {}", e.getMessage(), e);
}
}
public String getParameterType() {
return parameterType;
}
public void setParameterType(String parameterType) {
this.parameterType = parameterType;
}
public Object getParameterValue() {
return parameterValue;
}
public void setParameterValue(Object parameterValue) {
this.parameterValue = parameterValue;
}
}