package sk.stuba.fiit.perconik.activity.serializers.debug; import java.util.Set; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.Launch; import sk.stuba.fiit.perconik.activity.serializers.AbstractConfigurableMultiSerializer; import sk.stuba.fiit.perconik.data.content.StructuredContent; import static java.util.Arrays.asList; import static sk.stuba.fiit.perconik.activity.serializers.Serializations.putObjectIdentity; import static sk.stuba.fiit.perconik.data.content.StructuredContents.key; public final class LaunchSerializer extends AbstractConfigurableMultiSerializer<ILaunch> { public LaunchSerializer(final Option ... options) { super(options); } public LaunchSerializer(final Iterable<Option> options) { super(options); } static void putLaunch(final StructuredContent content, final ILaunch launch, final Set<Option> options) { content.put(key("mode"), launch.getLaunchMode()); content.put(key("debug", "targets"), new DebugTargetSerializer(options).serialize(asList(launch.getDebugTargets()))); content.put(key("processes"), new ProcessSerializer(options).serialize(asList(launch.getProcesses()))); content.put(key("canTerminate"), launch.canTerminate()); content.put(key("isTerminated"), launch.isTerminated()); if (launch instanceof Launch) { Launch other = (Launch) launch; content.put(key("canDisconnect"), other.canDisconnect()); content.put(key("isDisconnected"), other.isDisconnected()); } } @Override protected void put(final StructuredContent content, final ILaunch launch) { putObjectIdentity(content, launch); putLaunch(content, launch, this.options); } }