| /* |
| * Copyright (c) 2015, the Dart project authors. |
| * |
| * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except |
| * in compliance with the License. You may obtain a copy of the License at |
| * |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Unless required by applicable law or agreed to in writing, software distributed under the License |
| * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express |
| * or implied. See the License for the specific language governing permissions and limitations under |
| * the License. |
| * |
| * This file has been automatically generated. Please do not edit it manually. |
| * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files". |
| */ |
| package org.dartlang.analysis.server.protocol; |
| |
| import java.util.Arrays; |
| import java.util.List; |
| import java.util.Map; |
| import com.google.common.collect.Lists; |
| import com.google.dart.server.utilities.general.JsonUtilities; |
| import com.google.dart.server.utilities.general.ObjectUtilities; |
| import com.google.gson.JsonArray; |
| import com.google.gson.JsonElement; |
| import com.google.gson.JsonObject; |
| import com.google.gson.JsonPrimitive; |
| import org.apache.commons.lang3.builder.HashCodeBuilder; |
| import java.util.ArrayList; |
| import java.util.Iterator; |
| import org.apache.commons.lang3.StringUtils; |
| |
| /** |
| * A suggestion for how to complete partially entered text. Many of the fields are optional, |
| * depending on the kind of element being suggested. |
| * |
| * @coverage dart.server.generated.types |
| */ |
| @SuppressWarnings("unused") |
| public class CompletionSuggestion { |
| |
| public static final CompletionSuggestion[] EMPTY_ARRAY = new CompletionSuggestion[0]; |
| |
| public static final List<CompletionSuggestion> EMPTY_LIST = Lists.newArrayList(); |
| |
| /** |
| * The kind of element being suggested. |
| */ |
| private final String kind; |
| |
| /** |
| * The relevance of this completion suggestion where a higher number indicates a higher relevance. |
| */ |
| private final int relevance; |
| |
| /** |
| * The identifier to be inserted if the suggestion is selected. If the suggestion is for a method |
| * or function, the client might want to additionally insert a template for the parameters. The |
| * information required in order to do so is contained in other fields. |
| */ |
| private final String completion; |
| |
| /** |
| * The offset, relative to the beginning of the completion, of where the selection should be placed |
| * after insertion. |
| */ |
| private final int selectionOffset; |
| |
| /** |
| * The number of characters that should be selected after insertion. |
| */ |
| private final int selectionLength; |
| |
| /** |
| * True if the suggested element is deprecated. |
| */ |
| private final boolean isDeprecated; |
| |
| /** |
| * True if the element is not known to be valid for the target. This happens if the type of the |
| * target is dynamic. |
| */ |
| private final boolean isPotential; |
| |
| /** |
| * An abbreviated version of the Dartdoc associated with the element being suggested, This field is |
| * omitted if there is no Dartdoc associated with the element. |
| */ |
| private final String docSummary; |
| |
| /** |
| * The Dartdoc associated with the element being suggested, This field is omitted if there is no |
| * Dartdoc associated with the element. |
| */ |
| private final String docComplete; |
| |
| /** |
| * The class that declares the element being suggested. This field is omitted if the suggested |
| * element is not a member of a class. |
| */ |
| private final String declaringType; |
| |
| /** |
| * A default String for use in generating argument list source contents on the client side. |
| */ |
| private final String defaultArgumentListString; |
| |
| /** |
| * Pairs of offsets and lengths describing 'defaultArgumentListString' text ranges suitable for use |
| * by clients to set up linked edits of default argument source contents. For example, given an |
| * argument list string 'x, y', the corresponding text range [0, 1, 3, 1], indicates two text |
| * ranges of length 1, starting at offsets 0 and 3. Clients can use these ranges to treat the 'x' |
| * and 'y' values specially for linked edits. |
| */ |
| private final int[] defaultArgumentListTextRanges; |
| |
| /** |
| * Information about the element reference being suggested. |
| */ |
| private final Element element; |
| |
| /** |
| * The return type of the getter, function or method or the type of the field being suggested. This |
| * field is omitted if the suggested element is not a getter, function or method. |
| */ |
| private final String returnType; |
| |
| /** |
| * The names of the parameters of the function or method being suggested. This field is omitted if |
| * the suggested element is not a setter, function or method. |
| */ |
| private final List<String> parameterNames; |
| |
| /** |
| * The types of the parameters of the function or method being suggested. This field is omitted if |
| * the parameterNames field is omitted. |
| */ |
| private final List<String> parameterTypes; |
| |
| /** |
| * The number of required parameters for the function or method being suggested. This field is |
| * omitted if the parameterNames field is omitted. |
| */ |
| private final Integer requiredParameterCount; |
| |
| /** |
| * True if the function or method being suggested has at least one named parameter. This field is |
| * omitted if the parameterNames field is omitted. |
| */ |
| private final Boolean hasNamedParameters; |
| |
| /** |
| * The name of the optional parameter being suggested. This field is omitted if the suggestion is |
| * not the addition of an optional argument within an argument list. |
| */ |
| private final String parameterName; |
| |
| /** |
| * The type of the options parameter being suggested. This field is omitted if the parameterName |
| * field is omitted. |
| */ |
| private final String parameterType; |
| |
| /** |
| * The import to be added if the suggestion is out of scope and needs an import to be added to be |
| * in scope. |
| */ |
| private final String importUri; |
| |
| /** |
| * Constructor for {@link CompletionSuggestion}. |
| */ |
| public CompletionSuggestion(String kind, int relevance, String completion, int selectionOffset, int selectionLength, boolean isDeprecated, boolean isPotential, String docSummary, String docComplete, String declaringType, String defaultArgumentListString, int[] defaultArgumentListTextRanges, Element element, String returnType, List<String> parameterNames, List<String> parameterTypes, Integer requiredParameterCount, Boolean hasNamedParameters, String parameterName, String parameterType, String importUri) { |
| this.kind = kind; |
| this.relevance = relevance; |
| this.completion = completion; |
| this.selectionOffset = selectionOffset; |
| this.selectionLength = selectionLength; |
| this.isDeprecated = isDeprecated; |
| this.isPotential = isPotential; |
| this.docSummary = docSummary; |
| this.docComplete = docComplete; |
| this.declaringType = declaringType; |
| this.defaultArgumentListString = defaultArgumentListString; |
| this.defaultArgumentListTextRanges = defaultArgumentListTextRanges; |
| this.element = element; |
| this.returnType = returnType; |
| this.parameterNames = parameterNames; |
| this.parameterTypes = parameterTypes; |
| this.requiredParameterCount = requiredParameterCount; |
| this.hasNamedParameters = hasNamedParameters; |
| this.parameterName = parameterName; |
| this.parameterType = parameterType; |
| this.importUri = importUri; |
| } |
| |
| @Override |
| public boolean equals(Object obj) { |
| if (obj instanceof CompletionSuggestion) { |
| CompletionSuggestion other = (CompletionSuggestion) obj; |
| return |
| ObjectUtilities.equals(other.kind, kind) && |
| other.relevance == relevance && |
| ObjectUtilities.equals(other.completion, completion) && |
| other.selectionOffset == selectionOffset && |
| other.selectionLength == selectionLength && |
| other.isDeprecated == isDeprecated && |
| other.isPotential == isPotential && |
| ObjectUtilities.equals(other.docSummary, docSummary) && |
| ObjectUtilities.equals(other.docComplete, docComplete) && |
| ObjectUtilities.equals(other.declaringType, declaringType) && |
| ObjectUtilities.equals(other.defaultArgumentListString, defaultArgumentListString) && |
| Arrays.equals(other.defaultArgumentListTextRanges, defaultArgumentListTextRanges) && |
| ObjectUtilities.equals(other.element, element) && |
| ObjectUtilities.equals(other.returnType, returnType) && |
| ObjectUtilities.equals(other.parameterNames, parameterNames) && |
| ObjectUtilities.equals(other.parameterTypes, parameterTypes) && |
| ObjectUtilities.equals(other.requiredParameterCount, requiredParameterCount) && |
| ObjectUtilities.equals(other.hasNamedParameters, hasNamedParameters) && |
| ObjectUtilities.equals(other.parameterName, parameterName) && |
| ObjectUtilities.equals(other.parameterType, parameterType) && |
| ObjectUtilities.equals(other.importUri, importUri); |
| } |
| return false; |
| } |
| |
| public static CompletionSuggestion fromJson(JsonObject jsonObject) { |
| String kind = jsonObject.get("kind").getAsString(); |
| int relevance = jsonObject.get("relevance").getAsInt(); |
| String completion = jsonObject.get("completion").getAsString(); |
| int selectionOffset = jsonObject.get("selectionOffset").getAsInt(); |
| int selectionLength = jsonObject.get("selectionLength").getAsInt(); |
| boolean isDeprecated = jsonObject.get("isDeprecated").getAsBoolean(); |
| boolean isPotential = jsonObject.get("isPotential").getAsBoolean(); |
| String docSummary = jsonObject.get("docSummary") == null ? null : jsonObject.get("docSummary").getAsString(); |
| String docComplete = jsonObject.get("docComplete") == null ? null : jsonObject.get("docComplete").getAsString(); |
| String declaringType = jsonObject.get("declaringType") == null ? null : jsonObject.get("declaringType").getAsString(); |
| String defaultArgumentListString = jsonObject.get("defaultArgumentListString") == null ? null : jsonObject.get("defaultArgumentListString").getAsString(); |
| int[] defaultArgumentListTextRanges = jsonObject.get("defaultArgumentListTextRanges") == null ? null : JsonUtilities.decodeIntArray(jsonObject.get("defaultArgumentListTextRanges").getAsJsonArray()); |
| Element element = jsonObject.get("element") == null ? null : Element.fromJson(jsonObject.get("element").getAsJsonObject()); |
| String returnType = jsonObject.get("returnType") == null ? null : jsonObject.get("returnType").getAsString(); |
| List<String> parameterNames = jsonObject.get("parameterNames") == null ? null : JsonUtilities.decodeStringList(jsonObject.get("parameterNames").getAsJsonArray()); |
| List<String> parameterTypes = jsonObject.get("parameterTypes") == null ? null : JsonUtilities.decodeStringList(jsonObject.get("parameterTypes").getAsJsonArray()); |
| Integer requiredParameterCount = jsonObject.get("requiredParameterCount") == null ? null : jsonObject.get("requiredParameterCount").getAsInt(); |
| Boolean hasNamedParameters = jsonObject.get("hasNamedParameters") == null ? null : jsonObject.get("hasNamedParameters").getAsBoolean(); |
| String parameterName = jsonObject.get("parameterName") == null ? null : jsonObject.get("parameterName").getAsString(); |
| String parameterType = jsonObject.get("parameterType") == null ? null : jsonObject.get("parameterType").getAsString(); |
| String importUri = jsonObject.get("importUri") == null ? null : jsonObject.get("importUri").getAsString(); |
| return new CompletionSuggestion(kind, relevance, completion, selectionOffset, selectionLength, isDeprecated, isPotential, docSummary, docComplete, declaringType, defaultArgumentListString, defaultArgumentListTextRanges, element, returnType, parameterNames, parameterTypes, requiredParameterCount, hasNamedParameters, parameterName, parameterType, importUri); |
| } |
| |
| public static List<CompletionSuggestion> fromJsonArray(JsonArray jsonArray) { |
| if (jsonArray == null) { |
| return EMPTY_LIST; |
| } |
| ArrayList<CompletionSuggestion> list = new ArrayList<CompletionSuggestion>(jsonArray.size()); |
| Iterator<JsonElement> iterator = jsonArray.iterator(); |
| while (iterator.hasNext()) { |
| list.add(fromJson(iterator.next().getAsJsonObject())); |
| } |
| return list; |
| } |
| |
| /** |
| * The identifier to be inserted if the suggestion is selected. If the suggestion is for a method |
| * or function, the client might want to additionally insert a template for the parameters. The |
| * information required in order to do so is contained in other fields. |
| */ |
| public String getCompletion() { |
| return completion; |
| } |
| |
| /** |
| * The class that declares the element being suggested. This field is omitted if the suggested |
| * element is not a member of a class. |
| */ |
| public String getDeclaringType() { |
| return declaringType; |
| } |
| |
| /** |
| * A default String for use in generating argument list source contents on the client side. |
| */ |
| public String getDefaultArgumentListString() { |
| return defaultArgumentListString; |
| } |
| |
| /** |
| * Pairs of offsets and lengths describing 'defaultArgumentListString' text ranges suitable for use |
| * by clients to set up linked edits of default argument source contents. For example, given an |
| * argument list string 'x, y', the corresponding text range [0, 1, 3, 1], indicates two text |
| * ranges of length 1, starting at offsets 0 and 3. Clients can use these ranges to treat the 'x' |
| * and 'y' values specially for linked edits. |
| */ |
| public int[] getDefaultArgumentListTextRanges() { |
| return defaultArgumentListTextRanges; |
| } |
| |
| /** |
| * The Dartdoc associated with the element being suggested, This field is omitted if there is no |
| * Dartdoc associated with the element. |
| */ |
| public String getDocComplete() { |
| return docComplete; |
| } |
| |
| /** |
| * An abbreviated version of the Dartdoc associated with the element being suggested, This field is |
| * omitted if there is no Dartdoc associated with the element. |
| */ |
| public String getDocSummary() { |
| return docSummary; |
| } |
| |
| /** |
| * Information about the element reference being suggested. |
| */ |
| public Element getElement() { |
| return element; |
| } |
| |
| /** |
| * True if the function or method being suggested has at least one named parameter. This field is |
| * omitted if the parameterNames field is omitted. |
| */ |
| public Boolean getHasNamedParameters() { |
| return hasNamedParameters; |
| } |
| |
| /** |
| * The import to be added if the suggestion is out of scope and needs an import to be added to be |
| * in scope. |
| */ |
| public String getImportUri() { |
| return importUri; |
| } |
| |
| /** |
| * True if the suggested element is deprecated. |
| */ |
| public boolean isDeprecated() { |
| return isDeprecated; |
| } |
| |
| /** |
| * True if the element is not known to be valid for the target. This happens if the type of the |
| * target is dynamic. |
| */ |
| public boolean isPotential() { |
| return isPotential; |
| } |
| |
| /** |
| * The kind of element being suggested. |
| */ |
| public String getKind() { |
| return kind; |
| } |
| |
| /** |
| * The name of the optional parameter being suggested. This field is omitted if the suggestion is |
| * not the addition of an optional argument within an argument list. |
| */ |
| public String getParameterName() { |
| return parameterName; |
| } |
| |
| /** |
| * The names of the parameters of the function or method being suggested. This field is omitted if |
| * the suggested element is not a setter, function or method. |
| */ |
| public List<String> getParameterNames() { |
| return parameterNames; |
| } |
| |
| /** |
| * The type of the options parameter being suggested. This field is omitted if the parameterName |
| * field is omitted. |
| */ |
| public String getParameterType() { |
| return parameterType; |
| } |
| |
| /** |
| * The types of the parameters of the function or method being suggested. This field is omitted if |
| * the parameterNames field is omitted. |
| */ |
| public List<String> getParameterTypes() { |
| return parameterTypes; |
| } |
| |
| /** |
| * The relevance of this completion suggestion where a higher number indicates a higher relevance. |
| */ |
| public int getRelevance() { |
| return relevance; |
| } |
| |
| /** |
| * The number of required parameters for the function or method being suggested. This field is |
| * omitted if the parameterNames field is omitted. |
| */ |
| public Integer getRequiredParameterCount() { |
| return requiredParameterCount; |
| } |
| |
| /** |
| * The return type of the getter, function or method or the type of the field being suggested. This |
| * field is omitted if the suggested element is not a getter, function or method. |
| */ |
| public String getReturnType() { |
| return returnType; |
| } |
| |
| /** |
| * The number of characters that should be selected after insertion. |
| */ |
| public int getSelectionLength() { |
| return selectionLength; |
| } |
| |
| /** |
| * The offset, relative to the beginning of the completion, of where the selection should be placed |
| * after insertion. |
| */ |
| public int getSelectionOffset() { |
| return selectionOffset; |
| } |
| |
| @Override |
| public int hashCode() { |
| HashCodeBuilder builder = new HashCodeBuilder(); |
| builder.append(kind); |
| builder.append(relevance); |
| builder.append(completion); |
| builder.append(selectionOffset); |
| builder.append(selectionLength); |
| builder.append(isDeprecated); |
| builder.append(isPotential); |
| builder.append(docSummary); |
| builder.append(docComplete); |
| builder.append(declaringType); |
| builder.append(defaultArgumentListString); |
| builder.append(defaultArgumentListTextRanges); |
| builder.append(element); |
| builder.append(returnType); |
| builder.append(parameterNames); |
| builder.append(parameterTypes); |
| builder.append(requiredParameterCount); |
| builder.append(hasNamedParameters); |
| builder.append(parameterName); |
| builder.append(parameterType); |
| builder.append(importUri); |
| return builder.toHashCode(); |
| } |
| |
| public JsonObject toJson() { |
| JsonObject jsonObject = new JsonObject(); |
| jsonObject.addProperty("kind", kind); |
| jsonObject.addProperty("relevance", relevance); |
| jsonObject.addProperty("completion", completion); |
| jsonObject.addProperty("selectionOffset", selectionOffset); |
| jsonObject.addProperty("selectionLength", selectionLength); |
| jsonObject.addProperty("isDeprecated", isDeprecated); |
| jsonObject.addProperty("isPotential", isPotential); |
| if (docSummary != null) { |
| jsonObject.addProperty("docSummary", docSummary); |
| } |
| if (docComplete != null) { |
| jsonObject.addProperty("docComplete", docComplete); |
| } |
| if (declaringType != null) { |
| jsonObject.addProperty("declaringType", declaringType); |
| } |
| if (defaultArgumentListString != null) { |
| jsonObject.addProperty("defaultArgumentListString", defaultArgumentListString); |
| } |
| if (defaultArgumentListTextRanges != null) { |
| JsonArray jsonArrayDefaultArgumentListTextRanges = new JsonArray(); |
| for (int elt : defaultArgumentListTextRanges) { |
| jsonArrayDefaultArgumentListTextRanges.add(new JsonPrimitive(elt)); |
| } |
| jsonObject.add("defaultArgumentListTextRanges", jsonArrayDefaultArgumentListTextRanges); |
| } |
| if (element != null) { |
| jsonObject.add("element", element.toJson()); |
| } |
| if (returnType != null) { |
| jsonObject.addProperty("returnType", returnType); |
| } |
| if (parameterNames != null) { |
| JsonArray jsonArrayParameterNames = new JsonArray(); |
| for (String elt : parameterNames) { |
| jsonArrayParameterNames.add(new JsonPrimitive(elt)); |
| } |
| jsonObject.add("parameterNames", jsonArrayParameterNames); |
| } |
| if (parameterTypes != null) { |
| JsonArray jsonArrayParameterTypes = new JsonArray(); |
| for (String elt : parameterTypes) { |
| jsonArrayParameterTypes.add(new JsonPrimitive(elt)); |
| } |
| jsonObject.add("parameterTypes", jsonArrayParameterTypes); |
| } |
| if (requiredParameterCount != null) { |
| jsonObject.addProperty("requiredParameterCount", requiredParameterCount); |
| } |
| if (hasNamedParameters != null) { |
| jsonObject.addProperty("hasNamedParameters", hasNamedParameters); |
| } |
| if (parameterName != null) { |
| jsonObject.addProperty("parameterName", parameterName); |
| } |
| if (parameterType != null) { |
| jsonObject.addProperty("parameterType", parameterType); |
| } |
| if (importUri != null) { |
| jsonObject.addProperty("importUri", importUri); |
| } |
| return jsonObject; |
| } |
| |
| @Override |
| public String toString() { |
| StringBuilder builder = new StringBuilder(); |
| builder.append("["); |
| builder.append("kind="); |
| builder.append(kind + ", "); |
| builder.append("relevance="); |
| builder.append(relevance + ", "); |
| builder.append("completion="); |
| builder.append(completion + ", "); |
| builder.append("selectionOffset="); |
| builder.append(selectionOffset + ", "); |
| builder.append("selectionLength="); |
| builder.append(selectionLength + ", "); |
| builder.append("isDeprecated="); |
| builder.append(isDeprecated + ", "); |
| builder.append("isPotential="); |
| builder.append(isPotential + ", "); |
| builder.append("docSummary="); |
| builder.append(docSummary + ", "); |
| builder.append("docComplete="); |
| builder.append(docComplete + ", "); |
| builder.append("declaringType="); |
| builder.append(declaringType + ", "); |
| builder.append("defaultArgumentListString="); |
| builder.append(defaultArgumentListString + ", "); |
| builder.append("defaultArgumentListTextRanges="); |
| builder.append(StringUtils.join(defaultArgumentListTextRanges, ", ") + ", "); |
| builder.append("element="); |
| builder.append(element + ", "); |
| builder.append("returnType="); |
| builder.append(returnType + ", "); |
| builder.append("parameterNames="); |
| builder.append(StringUtils.join(parameterNames, ", ") + ", "); |
| builder.append("parameterTypes="); |
| builder.append(StringUtils.join(parameterTypes, ", ") + ", "); |
| builder.append("requiredParameterCount="); |
| builder.append(requiredParameterCount + ", "); |
| builder.append("hasNamedParameters="); |
| builder.append(hasNamedParameters + ", "); |
| builder.append("parameterName="); |
| builder.append(parameterName + ", "); |
| builder.append("parameterType="); |
| builder.append(parameterType + ", "); |
| builder.append("importUri="); |
| builder.append(importUri); |
| builder.append("]"); |
| return builder.toString(); |
| } |
| |
| } |