blob: f403010662a0ebe33f1736a2d5e28bae01c24124 [file] [log] [blame]
/**
* Copyright (c) 2017, 2020 Kichwa Coders Ltd. and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
package org.eclipse.lsp4j.debug;
import java.util.Arrays;
import java.util.Map;
import org.eclipse.lsp4j.debug.RunInTerminalRequestArgumentsKind;
import org.eclipse.lsp4j.debug.util.Preconditions;
import org.eclipse.lsp4j.jsonrpc.validation.NonNull;
import org.eclipse.xtext.xbase.lib.Pure;
import org.eclipse.xtext.xbase.lib.util.ToStringBuilder;
/**
* Arguments for 'runInTerminal' request.
*/
@SuppressWarnings("all")
public class RunInTerminalRequestArguments {
/**
* What kind of terminal to launch.
* <p>
* This is an optional property.
*/
private RunInTerminalRequestArgumentsKind kind;
/**
* Optional title of the terminal.
* <p>
* This is an optional property.
*/
private String title;
/**
* Working directory for the command. For non-empty, valid paths this typically results in execution of a change
* directory command.
*/
@NonNull
private String cwd;
/**
* List of arguments. The first argument is the command to run.
*/
@NonNull
private String[] args;
/**
* Environment key-value pairs that are added to or removed from the default environment.
* <p>
* This is an optional property.
*/
private Map<String, String> env;
/**
* What kind of terminal to launch.
* <p>
* This is an optional property.
*/
@Pure
public RunInTerminalRequestArgumentsKind getKind() {
return this.kind;
}
/**
* What kind of terminal to launch.
* <p>
* This is an optional property.
*/
public void setKind(final RunInTerminalRequestArgumentsKind kind) {
this.kind = kind;
}
/**
* Optional title of the terminal.
* <p>
* This is an optional property.
*/
@Pure
public String getTitle() {
return this.title;
}
/**
* Optional title of the terminal.
* <p>
* This is an optional property.
*/
public void setTitle(final String title) {
this.title = title;
}
/**
* Working directory for the command. For non-empty, valid paths this typically results in execution of a change
* directory command.
*/
@Pure
@NonNull
public String getCwd() {
return this.cwd;
}
/**
* Working directory for the command. For non-empty, valid paths this typically results in execution of a change
* directory command.
*/
public void setCwd(@NonNull final String cwd) {
this.cwd = Preconditions.checkNotNull(cwd, "cwd");
}
/**
* List of arguments. The first argument is the command to run.
*/
@Pure
@NonNull
public String[] getArgs() {
return this.args;
}
/**
* List of arguments. The first argument is the command to run.
*/
public void setArgs(@NonNull final String[] args) {
this.args = Preconditions.checkNotNull(args, "args");
}
/**
* Environment key-value pairs that are added to or removed from the default environment.
* <p>
* This is an optional property.
*/
@Pure
public Map<String, String> getEnv() {
return this.env;
}
/**
* Environment key-value pairs that are added to or removed from the default environment.
* <p>
* This is an optional property.
*/
public void setEnv(final Map<String, String> env) {
this.env = env;
}
@Override
@Pure
public String toString() {
ToStringBuilder b = new ToStringBuilder(this);
b.add("kind", this.kind);
b.add("title", this.title);
b.add("cwd", this.cwd);
b.add("args", this.args);
b.add("env", this.env);
return b.toString();
}
@Override
@Pure
public boolean equals(final Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
RunInTerminalRequestArguments other = (RunInTerminalRequestArguments) obj;
if (this.kind == null) {
if (other.kind != null)
return false;
} else if (!this.kind.equals(other.kind))
return false;
if (this.title == null) {
if (other.title != null)
return false;
} else if (!this.title.equals(other.title))
return false;
if (this.cwd == null) {
if (other.cwd != null)
return false;
} else if (!this.cwd.equals(other.cwd))
return false;
if (this.args == null) {
if (other.args != null)
return false;
} else if (!Arrays.deepEquals(this.args, other.args))
return false;
if (this.env == null) {
if (other.env != null)
return false;
} else if (!this.env.equals(other.env))
return false;
return true;
}
@Override
@Pure
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((this.kind== null) ? 0 : this.kind.hashCode());
result = prime * result + ((this.title== null) ? 0 : this.title.hashCode());
result = prime * result + ((this.cwd== null) ? 0 : this.cwd.hashCode());
result = prime * result + ((this.args== null) ? 0 : Arrays.deepHashCode(this.args));
return prime * result + ((this.env== null) ? 0 : this.env.hashCode());
}
}