Skip to content

Commit 051578d

Browse files
committed
Support protocol documentation annotations in JsonRpcDataProcessor
Adds special support for `@ProtocolDeprecated`, `@ProtocolDraft`, and `@ProtocolSince` annotations when generating getters and setters for `@JsonRpcData`-annotated classes in `JsonRpcDataProcessor`.
1 parent e2020d4 commit 051578d

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

org.eclipse.lsp4j.generator/src/main/java/org/eclipse/lsp4j/generator/JsonRpcDataProcessor.xtend

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
package org.eclipse.lsp4j.generator
1313

1414
import com.google.gson.annotations.JsonAdapter
15+
import org.eclipse.lsp4j.jsonrpc.ProtocolDeprecated
16+
import org.eclipse.lsp4j.jsonrpc.ProtocolDraft
17+
import org.eclipse.lsp4j.jsonrpc.ProtocolSince
1518
import org.eclipse.lsp4j.jsonrpc.validation.NonNull
1619
import org.eclipse.xtend.lib.annotations.AccessorsProcessor
1720
import org.eclipse.xtend.lib.annotations.EqualsHashCodeProcessor
@@ -58,33 +61,43 @@ class JsonRpcDataProcessor extends AbstractClassProcessor {
5861
!static
5962
].forEach [ field |
6063
val accessorsUtil = new AccessorsProcessor.Util(context)
61-
val deprecated = field.findAnnotation(Deprecated.findTypeGlobally)
62-
accessorsUtil.addGetter(field, Visibility.PUBLIC)
64+
val protocolDraft = field.findAnnotation(ProtocolDraft.newTypeReference.type)
65+
val protocolSince = field.findAnnotation(ProtocolSince.newTypeReference.type)
66+
val protocolDeprecated = field.findAnnotation(ProtocolDeprecated.newTypeReference.type)
6367
val hasNonNull = field.findAnnotation(NonNull.newTypeReference.type) !== null
6468
val hasJsonAdapter = field.findAnnotation(JsonAdapter.newTypeReference.type) !== null
69+
accessorsUtil.addGetter(field, Visibility.PUBLIC)
6570
impl.findDeclaredMethod(accessorsUtil.getGetterName(field)) => [
6671
docComment = field.docComment
72+
if (protocolDraft !== null)
73+
addAnnotation(protocolDraft)
74+
if (protocolSince !== null)
75+
addAnnotation(protocolSince)
76+
if (protocolDeprecated !== null)
77+
addAnnotation(protocolDeprecated)
6778
if (hasNonNull) {
6879
addAnnotation(newAnnotationReference(NonNull))
6980
}
70-
if (deprecated !== null)
71-
addAnnotation(newAnnotationReference(Deprecated))
7281
]
7382

7483
if (!field.type.inferred) {
7584
accessorsUtil.addSetter(field, Visibility.PUBLIC)
7685
val setterName = accessorsUtil.getSetterName(field)
7786
impl.findDeclaredMethod(setterName, field.type) => [
7887
docComment = field.docComment
88+
if (protocolDraft !== null)
89+
addAnnotation(protocolDraft)
90+
if (protocolSince !== null)
91+
addAnnotation(protocolSince)
92+
if (protocolDeprecated !== null)
93+
addAnnotation(protocolDeprecated)
7994
if (hasNonNull) {
8095
val parameter = parameters.head
8196
parameter.addAnnotation(newAnnotationReference(NonNull))
8297
body = '''
8398
this.«field.simpleName» = «getPreconditionsUtil(impl, context)».checkNotNull(«parameter.simpleName», "«field.simpleName»");
8499
'''
85100
}
86-
if (deprecated !== null)
87-
addAnnotation(newAnnotationReference(Deprecated))
88101
]
89102
val childTypes = field.type.childTypes
90103
if (!childTypes.empty) {

0 commit comments

Comments
 (0)