package sk.stuba.fiit.perconik.activity.serializers.debug;
import java.util.Set;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IDebugTarget;
import sk.stuba.fiit.perconik.activity.serializers.AbstractConfigurableMultiSerializer;
import sk.stuba.fiit.perconik.data.content.StructuredContent;
import static sk.stuba.fiit.perconik.activity.serializers.Serializations.putObjectIdentity;
import static sk.stuba.fiit.perconik.data.content.StructuredContents.key;
public final class DebugTargetSerializer extends AbstractConfigurableMultiSerializer<IDebugTarget> {
public DebugTargetSerializer(final Option ... options) {
super(options);
}
public DebugTargetSerializer(final Iterable<Option> options) {
super(options);
}
static void putDebugTarget(final StructuredContent content, final IDebugTarget target, final Set<Option> options) {
content.put(key("model", "identifier"), target.getModelIdentifier());
try {
content.put(key("name"), target.getName());
} catch (DebugException ignore) {}
content.put(key("process"), new ProcessSerializer(options).serialize(target.getProcess()));
content.put(key("canDisconnect"), target.canDisconnect());
content.put(key("canResume"), target.canResume());
content.put(key("canSuspend"), target.canSuspend());
content.put(key("canTerminate"), target.canTerminate());
content.put(key("isDisconnected"), target.isDisconnected());
content.put(key("isSuspended"), target.isSuspended());
content.put(key("isTerminated"), target.isTerminated());
}
@Override
protected void put(final StructuredContent content, final IDebugTarget target) {
putObjectIdentity(content, target);
putDebugTarget(content, target, this.options);
}
}