package org.zstack.core.workflow;
import org.zstack.header.exception.CloudRuntimeException;
import org.zstack.utils.serializable.SerializableHelper;
import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
public class WorkFlowContext implements Serializable {
private Map<String, Object> context = new HashMap<String, Object>();
public void put(String key, Object value) {
if (!(key instanceof Serializable)) {
throw new IllegalArgumentException(String.format("key[%s] must be Serializable", key));
}
if (!(value instanceof Serializable)) {
throw new IllegalArgumentException(String.format("value[%s] must be Serializable", value.getClass().getName()));
}
context.put(key, value);
}
public Object get(String key) {
return context.get(key);
}
public void remove(String key) {
context.remove(key);
}
static WorkFlowContext fromBytes(byte[] bytes) {
try {
return SerializableHelper.readObject(bytes);
} catch (Exception e) {
throw new CloudRuntimeException("Unable to create WorkFlowContext from input bytes", e);
}
}
byte[] toBytes() {
try {
return SerializableHelper.writeObject(this);
} catch (IOException e) {
throw new CloudRuntimeException("Cannot write WorkFlowContext to bytes", e);
}
}
}