Skip to content

Commit 7b1a5a0

Browse files
committed
Process deprecations from the API metadata and annotate types, methods, and properties if they are deprecated.
1 parent 7a337d9 commit 7b1a5a0

File tree

6 files changed

+78
-18
lines changed

6 files changed

+78
-18
lines changed

.github/workflows/maven.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ jobs:
99
runs-on: ubuntu-latest
1010
strategy:
1111
matrix:
12-
java: [8, 11, 16]
12+
java: [8, 11, 16, 17]
1313
steps:
1414
- name: Checkout
1515
uses: actions/checkout@v2
1616
- name: Set up JDK
17-
uses: actions/setup-java@v2.3.0
17+
uses: actions/setup-java@v2.4.0
1818
with:
1919
distribution: 'temurin'
2020
java-version: ${{matrix.java}}

examples/pom.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
22
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
33
<modelVersion>4.0.0</modelVersion>
4+
<prerequisites>
5+
<maven>3.3.9</maven>
6+
</prerequisites>
47
<groupId>com.softlayer.api</groupId>
58
<artifactId>softlayer-api-client-examples</artifactId>
69
<packaging>jar</packaging>
710
<!-- Please keep version in sync with README -->
811
<version>0.3.3</version>
912
<name>softlayer-api-client-examples</name>
10-
<url>http://sldn.softlayer.com</url>
13+
<url>https://sldn.softlayer.com/</url>
1114
<licenses>
1215
<license>
1316
<name>The MIT License (MIT)</name>
14-
<url>http://opensource.org/licenses/MIT</url>
17+
<url>https://opensource.org/licenses/MIT</url>
1518
<distribution>repo</distribution>
1619
</license>
1720
</licenses>

gen/pom.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
22
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
33
<modelVersion>4.0.0</modelVersion>
4+
<prerequisites>
5+
<maven>3.3.9</maven>
6+
</prerequisites>
47
<groupId>com.softlayer.api</groupId>
58
<artifactId>softlayer-api-client-gen</artifactId>
69
<packaging>jar</packaging>
710
<!-- Please keep version in sync with README -->
811
<version>0.3.3</version>
912
<name>softlayer-api-client-gen</name>
10-
<url>http://sldn.softlayer.com</url>
13+
<url>https://sldn.softlayer.com/</url>
1114
<licenses>
1215
<license>
1316
<name>The MIT License (MIT)</name>
@@ -29,7 +32,7 @@
2932
<dependency>
3033
<groupId>com.google.code.gson</groupId>
3134
<artifactId>gson</artifactId>
32-
<version>2.8.8</version>
35+
<version>2.8.9</version>
3336
</dependency>
3437
<dependency>
3538
<groupId>junit</groupId>

gen/src/main/java/com/softlayer/api/gen/ClassWriter.java

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,10 @@ public ClassWriter emitProperty(TypeClass.Property property) throws IOException
134134
if (property.meta.doc != null) {
135135
emitJavadoc(property.meta.doc.replace("\n", "<br />\n"));
136136
}
137+
138+
if (property.meta.deprecated) {
139+
emitAnnotation("Deprecated");
140+
}
137141

138142
Map<String, Object> params = new HashMap<>(2);
139143
if (!property.name.equals(property.meta.name)) {
@@ -267,6 +271,10 @@ public ClassWriter emitServiceMethod(TypeClass.Method method, boolean async) thr
267271
javadoc += "@see <a href=\"" + SLDN_URL_BASE_PATH + "services/" + type.meta.name +
268272
"/" + method.meta.name + "\">" + type.meta.name + "::" + method.meta.name + "</a>";
269273
emitJavadoc(javadoc);
274+
275+
if (method.meta.deprecated) {
276+
emitAnnotation("Deprecated");
277+
}
270278

271279
Map<String, Object> params = new HashMap<>(2);
272280
if (!method.name.equals(method.meta.name)) {
@@ -279,6 +287,10 @@ public ClassWriter emitServiceMethod(TypeClass.Method method, boolean async) thr
279287
} else {
280288
// Otherwise, just a javadoc link
281289
emitJavadoc("Async version of {@link Service#" + method.name + "}");
290+
291+
if (method.meta.deprecated) {
292+
emitAnnotation("Deprecated");
293+
}
282294
}
283295

284296
String[] parameters = new String[method.parameters.size() * 2];
@@ -296,6 +308,9 @@ public ClassWriter emitServiceMethod(TypeClass.Method method, boolean async) thr
296308

297309
// Async has an extra callback method
298310
if (async) {
311+
if (method.meta.deprecated) {
312+
emitAnnotation("Deprecated");
313+
}
299314
parameters = Arrays.copyOf(parameters, parameters.length + 2);
300315
parameters[parameters.length - 2] = TYPE_RESPONSE_HANDLER + '<' + method.javaType + '>';
301316
parameters[parameters.length - 1] = "callback";
@@ -324,6 +339,10 @@ public ClassWriter emitServiceMethod(TypeClass.Property property, boolean async)
324339
javadoc += "@see <a href=\"" + SLDN_URL_BASE_PATH + "services/" + type.meta.name +
325340
"/" + name + "\">" + type.meta.name + "::" + name + "</a>";
326341
emitJavadoc(javadoc);
342+
343+
if (property.meta.deprecated) {
344+
emitAnnotation("Deprecated");
345+
}
327346

328347
// Instance is only required if it's not an account property
329348
if ("SoftLayer_Account".equals(type.meta.name)) {
@@ -334,6 +353,10 @@ public ClassWriter emitServiceMethod(TypeClass.Property property, boolean async)
334353
} else {
335354
// Otherwise, just a javadoc link
336355
emitJavadoc("Async version of {@link Service#" + name + "}");
356+
357+
if (property.meta.deprecated) {
358+
emitAnnotation("Deprecated");
359+
}
337360
}
338361

339362
String returnType = property.javaType;
@@ -355,17 +378,12 @@ public ClassWriter emitType() throws IOException {
355378
emitPackage(type.packageName);
356379

357380
emitTypeImports();
358-
359-
// Javadoc
360-
String javadoc = type.meta.typeDoc != null ? type.meta.typeDoc : type.meta.serviceDoc;
361-
if (javadoc == null) {
362-
javadoc = "";
363-
} else {
364-
javadoc = javadoc.replace("\n", "<br />\n") + "\n\n";
381+
382+
emitJavadoc(getTypeJavadoc());
383+
384+
if (type.meta.deprecated) {
385+
emitAnnotation("Deprecated");
365386
}
366-
javadoc += "@see <a href=\"" + SLDN_URL_BASE_PATH + "datatypes/" +
367-
type.meta.name + "\">" + type.meta.name + "</a>";
368-
emitJavadoc(javadoc);
369387

370388
// Each type has a type attribute
371389
emitAnnotation("ApiType", stringLiteral(type.meta.name));
@@ -432,6 +450,18 @@ public ClassWriter emitType() throws IOException {
432450
emitMask().endType();
433451
return this;
434452
}
453+
454+
protected String getTypeJavadoc() {
455+
String javadoc = type.meta.typeDoc != null ? type.meta.typeDoc : type.meta.serviceDoc;
456+
if (javadoc == null) {
457+
javadoc = "";
458+
} else {
459+
javadoc = javadoc.replace("\n", "<br />\n") + "\n\n";
460+
}
461+
javadoc += "@see <a href=\"" + SLDN_URL_BASE_PATH + "datatypes/" +
462+
type.meta.name + "\">" + type.meta.name + "</a>";
463+
return javadoc;
464+
}
435465

436466
public ClassWriter emitTypeImports() throws IOException {
437467
Map<String, String> imports = new HashMap<>(type.imports);

gen/src/main/java/com/softlayer/api/gen/Meta.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public static class Type {
7575
public String serviceDoc;
7676
public Map<String, Method> methods = Collections.emptyMap();
7777
public boolean noservice;
78+
public boolean deprecated;
7879
}
7980

8081
/**
@@ -86,6 +87,7 @@ public static class Property {
8687
public boolean typeArray;
8788
public PropertyForm form;
8889
public String doc;
90+
public boolean deprecated;
8991
}
9092

9193
public enum PropertyForm {
@@ -109,6 +111,7 @@ public static class Method {
109111
public boolean filterable;
110112
public boolean maskable;
111113
public List<Parameter> parameters = Collections.emptyList();
114+
public boolean deprecated;
112115
}
113116

114117
/**

pom.xml

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
22
<modelVersion>4.0.0</modelVersion>
3+
<prerequisites>
4+
<maven>3.3.9</maven>
5+
</prerequisites>
36
<groupId>com.softlayer.api</groupId>
47
<artifactId>softlayer-api-client</artifactId>
58
<packaging>jar</packaging>
@@ -60,7 +63,7 @@
6063
<dependency>
6164
<groupId>com.google.code.gson</groupId>
6265
<artifactId>gson</artifactId>
63-
<version>2.8.8</version>
66+
<version>2.8.9</version>
6467
</dependency>
6568
<dependency>
6669
<groupId>junit</groupId>
@@ -71,7 +74,7 @@
7174
<dependency>
7275
<groupId>org.mockito</groupId>
7376
<artifactId>mockito-core</artifactId>
74-
<version>3.6.0</version>
77+
<version>4.2.0</version>
7578
<scope>test</scope>
7679
</dependency>
7780
</dependencies>
@@ -181,4 +184,22 @@
181184
</plugin>
182185
</plugins>
183186
</build>
187+
<reporting>
188+
<plugins>
189+
<plugin>
190+
<groupId>org.codehaus.mojo</groupId>
191+
<artifactId>versions-maven-plugin</artifactId>
192+
<version>2.8.1</version>
193+
<reportSets>
194+
<reportSet>
195+
<reports>
196+
<report>dependency-updates-report</report>
197+
<report>plugin-updates-report</report>
198+
<report>property-updates-report</report>
199+
</reports>
200+
</reportSet>
201+
</reportSets>
202+
</plugin>
203+
</plugins>
204+
</reporting>
184205
</project>

0 commit comments

Comments
 (0)