Skip to content

Commit 0661aa4

Browse files
authored
[CQ] fix nullability problems for flutter/dart (#8300)
Fix nullability problems in `src/io/flutter/dart/`. See #8291. If we pursue #8292, we could mark `src/io/flutter/dart/` as null-"clean". --- - [x] I’ve reviewed the contributor guide and applied the relevant portions to this PR. <details> <summary>Contribution guidelines:</summary><br> - See our [contributor guide]([https://github.com/dart-lang/sdk/blob/main/CONTRIBUTING.md](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview) for general expectations for PRs. - Larger or significant changes should be discussed in an issue before creating a PR. - Dart contributions to our repos should follow the [Dart style guide](https://dart.dev/guides/language/effective-dart) and use `dart format`. - Java and Kotlin contributions should strive to follow Java and Kotlin best practices ([discussion](#8098)). </details>
1 parent 42b9ec4 commit 0661aa4

File tree

2 files changed

+10
-31
lines changed

2 files changed

+10
-31
lines changed

flutter-idea/src/io/flutter/dart/FlutterDartAnalysisServer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class FlutterDartAnalysisServer implements Disposable {
3636
* Each key is a notification identifier.
3737
* Each value is the set of files subscribed to the notification.
3838
*/
39-
private final Map<String, List<String>> subscriptions = new HashMap<>();
39+
private final @NotNull Map<String, List<String>> subscriptions = new HashMap<>();
4040

4141
@VisibleForTesting
4242
protected final Map<String, List<FlutterOutlineListener>> fileOutlineListeners = new HashMap<>();

flutter-idea/src/io/flutter/dart/FlutterRequestUtilities.java

Lines changed: 9 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import com.google.gson.JsonElement;
1010
import com.google.gson.JsonObject;
1111
import com.google.gson.JsonPrimitive;
12-
import org.dartlang.analysis.server.protocol.FlutterWidgetPropertyValue;
1312
import org.jetbrains.annotations.NotNull;
1413
import org.jetbrains.annotations.Nullable;
1514

@@ -29,30 +28,11 @@ public class FlutterRequestUtilities {
2928
private static final String SUBSCRIPTIONS = "subscriptions";
3029

3130
private static final String METHOD_FLUTTER_SET_SUBSCRIPTIONS = "flutter.setSubscriptions";
32-
private static final String METHOD_FLUTTER_GET_WIDGET_DESCRIPTION = "flutter.getWidgetDescription";
33-
private static final String METHOD_FLUTTER_SET_WIDGET_PROPERTY_VALUE = "flutter.setWidgetPropertyValue";
3431

3532
private FlutterRequestUtilities() {
3633
throw new AssertionError("No instances.");
3734
}
3835

39-
public static JsonObject generateFlutterGetWidgetDescription(String id, String file, int offset) {
40-
final JsonObject params = new JsonObject();
41-
params.addProperty(FILE, file);
42-
params.addProperty(OFFSET, offset);
43-
return buildJsonObjectRequest(id, METHOD_FLUTTER_GET_WIDGET_DESCRIPTION, params);
44-
}
45-
46-
public static JsonObject generateFlutterSetWidgetPropertyValue(String id, int propertyId, @Nullable FlutterWidgetPropertyValue value) {
47-
final JsonObject params = new JsonObject();
48-
params.addProperty(ID, propertyId);
49-
// An omitted value indicates that the property should be removed.
50-
if (value != null) {
51-
params.add(VALUE, value.toJson());
52-
}
53-
return buildJsonObjectRequest(id, METHOD_FLUTTER_SET_WIDGET_PROPERTY_VALUE, params);
54-
}
55-
5636
/**
5737
* Generate and return a {@value #METHOD_FLUTTER_SET_SUBSCRIPTIONS} request.
5838
* <p>
@@ -66,15 +46,15 @@ public static JsonObject generateFlutterSetWidgetPropertyValue(String id, int pr
6646
* }
6747
* </pre>
6848
*/
69-
public static JsonObject generateAnalysisSetSubscriptions(String id,
70-
Map<String, List<String>> subscriptions) {
49+
public static JsonObject generateAnalysisSetSubscriptions(@NotNull String id,
50+
Map<String, @NotNull List<String>> subscriptions) {
7151
final JsonObject params = new JsonObject();
7252
params.add(SUBSCRIPTIONS, buildJsonElement(subscriptions));
7353
return buildJsonObjectRequest(id, METHOD_FLUTTER_SET_SUBSCRIPTIONS, params);
7454
}
7555

7656
@NotNull
77-
private static JsonElement buildJsonElement(Object object) {
57+
private static JsonElement buildJsonElement(@Nullable Object object) {
7858
if (object instanceof Boolean) {
7959
return new JsonPrimitive((Boolean)object);
8060
}
@@ -87,14 +67,17 @@ else if (object instanceof String) {
8767
else if (object instanceof List<?> list) {
8868
final JsonArray jsonArray = new JsonArray();
8969
for (Object item : list) {
90-
final JsonElement jsonItem = buildJsonElement(item);
91-
jsonArray.add(jsonItem);
70+
if (item != null) {
71+
final JsonElement jsonItem = buildJsonElement(item);
72+
jsonArray.add(jsonItem);
73+
}
9274
}
9375
return jsonArray;
9476
}
9577
else if (object instanceof Map<?, ?> map) {
9678
final JsonObject jsonObject = new JsonObject();
9779
for (Map.Entry<?, ?> entry : map.entrySet()) {
80+
if (entry == null) continue;
9881
final Object key = entry.getKey();
9982
// Prepare the string key.
10083
final String keyString;
@@ -114,10 +97,6 @@ else if (object instanceof Map<?, ?> map) {
11497
throw new IllegalArgumentException("Unable to convert to JSON: " + object);
11598
}
11699

117-
private static JsonObject buildJsonObjectRequest(String idValue, String methodValue) {
118-
return buildJsonObjectRequest(idValue, methodValue, null);
119-
}
120-
121100
private static JsonObject buildJsonObjectRequest(String idValue, String methodValue,
122101
JsonObject params) {
123102
final JsonObject jsonObject = new JsonObject();
@@ -133,7 +112,7 @@ private static JsonObject buildJsonObjectRequest(String idValue, String methodVa
133112
* Return the name of the given object, may be {@code "null"} String.
134113
*/
135114
@NotNull
136-
private static String getClassName(Object object) {
115+
private static String getClassName(@Nullable Object object) {
137116
return object != null && object.getClass().getName() != null ? object.getClass().getName() : "null";
138117
}
139118
}

0 commit comments

Comments
 (0)