Skip to content

Commit d46a07b

Browse files
committed
Implemented a FlutterMethodCallHandler base class.
1 parent 158f4e8 commit d46a07b

File tree

5 files changed

+86
-47
lines changed

5 files changed

+86
-47
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/* This is free and unencumbered software released into the public domain. */
2+
3+
package com.github.drydart.flutter_sqlcipher;
4+
5+
import android.content.res.AssetFileDescriptor;
6+
import android.content.res.AssetManager;
7+
import android.graphics.Bitmap;
8+
import android.graphics.BitmapFactory;
9+
import io.flutter.plugin.common.MethodCall;
10+
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
11+
import io.flutter.plugin.common.PluginRegistry.Registrar;
12+
import java.io.InputStream;
13+
import java.io.IOException;
14+
15+
/** FlutterMethodCallHandler */
16+
@SuppressWarnings("unchecked")
17+
abstract class FlutterMethodCallHandler implements MethodCallHandler {
18+
final Registrar registrar;
19+
20+
FlutterMethodCallHandler(final Registrar registrar) {
21+
this.registrar = registrar;
22+
}
23+
24+
AssetManager
25+
getAssets() {
26+
return registrar.context().getAssets();
27+
}
28+
29+
AssetFileDescriptor
30+
openAsset(final String assetName) throws IOException {
31+
final String assetKey = registrar.lookupKeyForAsset(assetName);
32+
return getAssets().openFd(assetKey);
33+
}
34+
35+
Bitmap
36+
loadBitmap(final String assetName) throws IOException {
37+
return loadBitmap(assetName, null);
38+
}
39+
40+
Bitmap
41+
loadBitmap(final String assetName,
42+
final BitmapFactory.Options options) throws IOException {
43+
final InputStream stream = openAsset(assetName).createInputStream();
44+
return BitmapFactory.decodeStream(stream, null, options);
45+
}
46+
47+
static <T> T
48+
getRequiredArgument(final MethodCall call,
49+
final String name) {
50+
assert(call != null);
51+
assert(name != null);
52+
53+
if (!call.hasArgument(name)) {
54+
throw new AssertionError();
55+
}
56+
final T arg = call.argument(name);
57+
if (arg == null) {
58+
throw new AssertionError();
59+
}
60+
return arg;
61+
}
62+
63+
static <T> T
64+
getOptionalArgument(final MethodCall call,
65+
final String name) {
66+
return getOptionalArgument(call, name, (T)null);
67+
}
68+
69+
static <T> T
70+
getOptionalArgument(final MethodCall call,
71+
final String name,
72+
final T defaultValue) {
73+
assert(call != null);
74+
assert(name != null);
75+
76+
return call.hasArgument(name) ? (T)call.argument(name) : defaultValue;
77+
}
78+
}

android/src/main/java/com/github/drydart/flutter_sqlcipher/SQLCipherMethodHandler.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,11 @@
1010
import net.sqlcipher.database.SQLiteDatabase;
1111

1212
/** SQLCipherMethodHandler */
13-
class SQLCipherMethodHandler implements MethodCallHandler {
13+
class SQLCipherMethodHandler extends FlutterMethodCallHandler {
1414
static final String CHANNEL = "flutter_sqlcipher/SQLCipher";
1515

16-
final Registrar registrar;
17-
1816
SQLCipherMethodHandler(final Registrar registrar) {
19-
this.registrar = registrar;
17+
super(registrar);
2018
}
2119

2220
@Override

android/src/main/java/com/github/drydart/flutter_sqlcipher/SQLiteCursorMethodHandler.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,11 @@
1010
import net.sqlcipher.database.SQLiteCursor;
1111

1212
/** SQLiteCursorMethodHandler */
13-
class SQLiteCursorMethodHandler implements MethodCallHandler {
13+
class SQLiteCursorMethodHandler extends FlutterMethodCallHandler {
1414
static final String CHANNEL = "flutter_sqlcipher/SQLiteCursor";
1515

16-
final Registrar registrar;
17-
1816
SQLiteCursorMethodHandler(final Registrar registrar) {
19-
this.registrar = registrar;
17+
super(registrar);
2018
}
2119

2220
@Override

android/src/main/java/com/github/drydart/flutter_sqlcipher/SQLiteDatabaseMethodHandler.java

Lines changed: 2 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,14 @@
2020

2121
/** SQLiteDatabaseMethodHandler */
2222
@SuppressWarnings("unchecked")
23-
class SQLiteDatabaseMethodHandler implements MethodCallHandler {
23+
class SQLiteDatabaseMethodHandler extends FlutterMethodCallHandler {
2424
static final String CHANNEL = "flutter_sqlcipher/SQLiteDatabase";
2525

26-
final Registrar registrar;
2726
final Map<Integer, SQLiteDatabase> databases = new HashMap<>();
2827
int databaseID;
2928

3029
SQLiteDatabaseMethodHandler(final Registrar registrar) {
31-
this.registrar = registrar;
30+
super(registrar);
3231
}
3332

3433
@Override
@@ -442,38 +441,6 @@ class SQLiteDatabaseMethodHandler implements MethodCallHandler {
442441
return this.databases.get(id);
443442
}
444443

445-
private static <T> T
446-
getRequiredArgument(final MethodCall call,
447-
final String name) {
448-
assert(call != null);
449-
assert(name != null);
450-
451-
if (!call.hasArgument(name)) {
452-
throw new AssertionError();
453-
}
454-
final T arg = call.argument(name);
455-
if (arg == null) {
456-
throw new AssertionError();
457-
}
458-
return arg;
459-
}
460-
461-
private static <T> T
462-
getOptionalArgument(final MethodCall call,
463-
final String name) {
464-
return getOptionalArgument(call, name, (T)null);
465-
}
466-
467-
private static <T> T
468-
getOptionalArgument(final MethodCall call,
469-
final String name,
470-
final T defaultValue) {
471-
assert(call != null);
472-
assert(name != null);
473-
474-
return call.hasArgument(name) ? (T)call.argument(name) : defaultValue;
475-
}
476-
477444
private static ContentValues
478445
convertMapToContentValues(final Map<String, Object> input) {
479446
assert(input != null);

android/src/main/java/com/github/drydart/flutter_sqlcipher/SQLiteMethodHandler.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,11 @@
1010
import net.sqlcipher.database.SQLiteDatabase;
1111

1212
/** SQLiteMethodHandler */
13-
class SQLiteMethodHandler implements MethodCallHandler {
13+
class SQLiteMethodHandler extends FlutterMethodCallHandler {
1414
static final String CHANNEL = "flutter_sqlcipher/SQLite";
1515

16-
final Registrar registrar;
17-
1816
SQLiteMethodHandler(final Registrar registrar) {
19-
this.registrar = registrar;
17+
super(registrar);
2018
}
2119

2220
@Override

0 commit comments

Comments
 (0)