Skip to content

Commit e784c3e

Browse files
[path_provider] Update Android Pigeon for non-nullable generics (#7783)
Removes workarounds for previous lack of non-nullable generics support. There are no native code changes because in practice we already didn't want nullable values in the collection, we just couldn't express it formally. Part of flutter/flutter#155891
1 parent 3890cee commit e784c3e

File tree

9 files changed

+429
-222
lines changed

9 files changed

+429
-222
lines changed

packages/path_provider/path_provider_android/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 2.2.12
2+
3+
* Updates Pigeon for non-nullable collection type support.
4+
15
## 2.2.11
26

37
* Updates Java compatibility version to 11.

packages/path_provider/path_provider_android/android/src/main/java/io/flutter/plugins/pathprovider/Messages.java

Lines changed: 74 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright 2013 The Flutter Authors. All rights reserved.
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
4-
// Autogenerated from Pigeon (v9.2.5), do not edit directly.
4+
// Autogenerated from Pigeon (v22.4.2), do not edit directly.
55
// See also: https://pub.dev/packages/pigeon
66

77
package io.flutter.plugins.pathprovider;
@@ -13,6 +13,8 @@
1313
import io.flutter.plugin.common.BinaryMessenger;
1414
import io.flutter.plugin.common.MessageCodec;
1515
import io.flutter.plugin.common.StandardMessageCodec;
16+
import java.io.ByteArrayOutputStream;
17+
import java.nio.ByteBuffer;
1618
import java.util.ArrayList;
1719
import java.util.List;
1820

@@ -38,7 +40,7 @@ public FlutterError(@NonNull String code, @Nullable String message, @Nullable Ob
3840

3941
@NonNull
4042
protected static ArrayList<Object> wrapError(@NonNull Throwable exception) {
41-
ArrayList<Object> errorList = new ArrayList<Object>(3);
43+
ArrayList<Object> errorList = new ArrayList<>(3);
4244
if (exception instanceof FlutterError) {
4345
FlutterError error = (FlutterError) exception;
4446
errorList.add(error.code);
@@ -68,10 +70,40 @@ public enum StorageDirectory {
6870

6971
final int index;
7072

71-
private StorageDirectory(final int index) {
73+
StorageDirectory(final int index) {
7274
this.index = index;
7375
}
7476
}
77+
78+
private static class PigeonCodec extends StandardMessageCodec {
79+
public static final PigeonCodec INSTANCE = new PigeonCodec();
80+
81+
private PigeonCodec() {}
82+
83+
@Override
84+
protected Object readValueOfType(byte type, @NonNull ByteBuffer buffer) {
85+
switch (type) {
86+
case (byte) 129:
87+
{
88+
Object value = readValue(buffer);
89+
return value == null ? null : StorageDirectory.values()[((Long) value).intValue()];
90+
}
91+
default:
92+
return super.readValueOfType(type, buffer);
93+
}
94+
}
95+
96+
@Override
97+
protected void writeValue(@NonNull ByteArrayOutputStream stream, Object value) {
98+
if (value instanceof StorageDirectory) {
99+
stream.write(129);
100+
writeValue(stream, value == null ? null : ((StorageDirectory) value).index);
101+
} else {
102+
super.writeValue(stream, value);
103+
}
104+
}
105+
}
106+
75107
/** Generated interface from Pigeon that represents a handler of messages from Flutter. */
76108
public interface PathProviderApi {
77109

@@ -98,30 +130,38 @@ public interface PathProviderApi {
98130

99131
/** The codec used by PathProviderApi. */
100132
static @NonNull MessageCodec<Object> getCodec() {
101-
return new StandardMessageCodec();
133+
return PigeonCodec.INSTANCE;
102134
}
103135
/**
104136
* Sets up an instance of `PathProviderApi` to handle messages through the `binaryMessenger`.
105137
*/
106-
static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable PathProviderApi api) {
138+
static void setUp(@NonNull BinaryMessenger binaryMessenger, @Nullable PathProviderApi api) {
139+
setUp(binaryMessenger, "", api);
140+
}
141+
142+
static void setUp(
143+
@NonNull BinaryMessenger binaryMessenger,
144+
@NonNull String messageChannelSuffix,
145+
@Nullable PathProviderApi api) {
146+
messageChannelSuffix = messageChannelSuffix.isEmpty() ? "" : "." + messageChannelSuffix;
107147
{
108148
BinaryMessenger.TaskQueue taskQueue = binaryMessenger.makeBackgroundTaskQueue();
109149
BasicMessageChannel<Object> channel =
110150
new BasicMessageChannel<>(
111151
binaryMessenger,
112-
"dev.flutter.pigeon.PathProviderApi.getTemporaryPath",
152+
"dev.flutter.pigeon.path_provider_android.PathProviderApi.getTemporaryPath"
153+
+ messageChannelSuffix,
113154
getCodec(),
114155
taskQueue);
115156
if (api != null) {
116157
channel.setMessageHandler(
117158
(message, reply) -> {
118-
ArrayList<Object> wrapped = new ArrayList<Object>();
159+
ArrayList<Object> wrapped = new ArrayList<>();
119160
try {
120161
String output = api.getTemporaryPath();
121162
wrapped.add(0, output);
122163
} catch (Throwable exception) {
123-
ArrayList<Object> wrappedError = wrapError(exception);
124-
wrapped = wrappedError;
164+
wrapped = wrapError(exception);
125165
}
126166
reply.reply(wrapped);
127167
});
@@ -134,19 +174,19 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable PathProvid
134174
BasicMessageChannel<Object> channel =
135175
new BasicMessageChannel<>(
136176
binaryMessenger,
137-
"dev.flutter.pigeon.PathProviderApi.getApplicationSupportPath",
177+
"dev.flutter.pigeon.path_provider_android.PathProviderApi.getApplicationSupportPath"
178+
+ messageChannelSuffix,
138179
getCodec(),
139180
taskQueue);
140181
if (api != null) {
141182
channel.setMessageHandler(
142183
(message, reply) -> {
143-
ArrayList<Object> wrapped = new ArrayList<Object>();
184+
ArrayList<Object> wrapped = new ArrayList<>();
144185
try {
145186
String output = api.getApplicationSupportPath();
146187
wrapped.add(0, output);
147188
} catch (Throwable exception) {
148-
ArrayList<Object> wrappedError = wrapError(exception);
149-
wrapped = wrappedError;
189+
wrapped = wrapError(exception);
150190
}
151191
reply.reply(wrapped);
152192
});
@@ -159,19 +199,19 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable PathProvid
159199
BasicMessageChannel<Object> channel =
160200
new BasicMessageChannel<>(
161201
binaryMessenger,
162-
"dev.flutter.pigeon.PathProviderApi.getApplicationDocumentsPath",
202+
"dev.flutter.pigeon.path_provider_android.PathProviderApi.getApplicationDocumentsPath"
203+
+ messageChannelSuffix,
163204
getCodec(),
164205
taskQueue);
165206
if (api != null) {
166207
channel.setMessageHandler(
167208
(message, reply) -> {
168-
ArrayList<Object> wrapped = new ArrayList<Object>();
209+
ArrayList<Object> wrapped = new ArrayList<>();
169210
try {
170211
String output = api.getApplicationDocumentsPath();
171212
wrapped.add(0, output);
172213
} catch (Throwable exception) {
173-
ArrayList<Object> wrappedError = wrapError(exception);
174-
wrapped = wrappedError;
214+
wrapped = wrapError(exception);
175215
}
176216
reply.reply(wrapped);
177217
});
@@ -184,19 +224,19 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable PathProvid
184224
BasicMessageChannel<Object> channel =
185225
new BasicMessageChannel<>(
186226
binaryMessenger,
187-
"dev.flutter.pigeon.PathProviderApi.getApplicationCachePath",
227+
"dev.flutter.pigeon.path_provider_android.PathProviderApi.getApplicationCachePath"
228+
+ messageChannelSuffix,
188229
getCodec(),
189230
taskQueue);
190231
if (api != null) {
191232
channel.setMessageHandler(
192233
(message, reply) -> {
193-
ArrayList<Object> wrapped = new ArrayList<Object>();
234+
ArrayList<Object> wrapped = new ArrayList<>();
194235
try {
195236
String output = api.getApplicationCachePath();
196237
wrapped.add(0, output);
197238
} catch (Throwable exception) {
198-
ArrayList<Object> wrappedError = wrapError(exception);
199-
wrapped = wrappedError;
239+
wrapped = wrapError(exception);
200240
}
201241
reply.reply(wrapped);
202242
});
@@ -209,19 +249,19 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable PathProvid
209249
BasicMessageChannel<Object> channel =
210250
new BasicMessageChannel<>(
211251
binaryMessenger,
212-
"dev.flutter.pigeon.PathProviderApi.getExternalStoragePath",
252+
"dev.flutter.pigeon.path_provider_android.PathProviderApi.getExternalStoragePath"
253+
+ messageChannelSuffix,
213254
getCodec(),
214255
taskQueue);
215256
if (api != null) {
216257
channel.setMessageHandler(
217258
(message, reply) -> {
218-
ArrayList<Object> wrapped = new ArrayList<Object>();
259+
ArrayList<Object> wrapped = new ArrayList<>();
219260
try {
220261
String output = api.getExternalStoragePath();
221262
wrapped.add(0, output);
222263
} catch (Throwable exception) {
223-
ArrayList<Object> wrappedError = wrapError(exception);
224-
wrapped = wrappedError;
264+
wrapped = wrapError(exception);
225265
}
226266
reply.reply(wrapped);
227267
});
@@ -234,19 +274,19 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable PathProvid
234274
BasicMessageChannel<Object> channel =
235275
new BasicMessageChannel<>(
236276
binaryMessenger,
237-
"dev.flutter.pigeon.PathProviderApi.getExternalCachePaths",
277+
"dev.flutter.pigeon.path_provider_android.PathProviderApi.getExternalCachePaths"
278+
+ messageChannelSuffix,
238279
getCodec(),
239280
taskQueue);
240281
if (api != null) {
241282
channel.setMessageHandler(
242283
(message, reply) -> {
243-
ArrayList<Object> wrapped = new ArrayList<Object>();
284+
ArrayList<Object> wrapped = new ArrayList<>();
244285
try {
245286
List<String> output = api.getExternalCachePaths();
246287
wrapped.add(0, output);
247288
} catch (Throwable exception) {
248-
ArrayList<Object> wrappedError = wrapError(exception);
249-
wrapped = wrappedError;
289+
wrapped = wrapError(exception);
250290
}
251291
reply.reply(wrapped);
252292
});
@@ -259,22 +299,21 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable PathProvid
259299
BasicMessageChannel<Object> channel =
260300
new BasicMessageChannel<>(
261301
binaryMessenger,
262-
"dev.flutter.pigeon.PathProviderApi.getExternalStoragePaths",
302+
"dev.flutter.pigeon.path_provider_android.PathProviderApi.getExternalStoragePaths"
303+
+ messageChannelSuffix,
263304
getCodec(),
264305
taskQueue);
265306
if (api != null) {
266307
channel.setMessageHandler(
267308
(message, reply) -> {
268-
ArrayList<Object> wrapped = new ArrayList<Object>();
309+
ArrayList<Object> wrapped = new ArrayList<>();
269310
ArrayList<Object> args = (ArrayList<Object>) message;
270-
StorageDirectory directoryArg =
271-
args.get(0) == null ? null : StorageDirectory.values()[(int) args.get(0)];
311+
StorageDirectory directoryArg = (StorageDirectory) args.get(0);
272312
try {
273313
List<String> output = api.getExternalStoragePaths(directoryArg);
274314
wrapped.add(0, output);
275315
} catch (Throwable exception) {
276-
ArrayList<Object> wrappedError = wrapError(exception);
277-
wrapped = wrappedError;
316+
wrapped = wrapError(exception);
278317
}
279318
reply.reply(wrapped);
280319
});

packages/path_provider/path_provider_android/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderPlugin.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ public class PathProviderPlugin implements FlutterPlugin, PathProviderApi {
2222

2323
public PathProviderPlugin() {}
2424

25-
private void setup(BinaryMessenger messenger, Context context) {
25+
private void setUp(BinaryMessenger messenger, Context context) {
2626
try {
27-
PathProviderApi.setup(messenger, this);
27+
PathProviderApi.setUp(messenger, this);
2828
} catch (Exception ex) {
2929
Log.e(TAG, "Received exception while setting up PathProviderPlugin", ex);
3030
}
@@ -34,12 +34,12 @@ private void setup(BinaryMessenger messenger, Context context) {
3434

3535
@Override
3636
public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
37-
setup(binding.getBinaryMessenger(), binding.getApplicationContext());
37+
setUp(binding.getBinaryMessenger(), binding.getApplicationContext());
3838
}
3939

4040
@Override
4141
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
42-
PathProviderApi.setup(binding.getBinaryMessenger(), null);
42+
PathProviderApi.setUp(binding.getBinaryMessenger(), null);
4343
}
4444

4545
@Override

0 commit comments

Comments
 (0)