Skip to content

Commit

Permalink
Implemented a FlutterMethodCallHandler base class.
Browse files Browse the repository at this point in the history
  • Loading branch information
artob committed Feb 14, 2019
1 parent 158f4e8 commit d46a07b
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 47 deletions.
@@ -0,0 +1,78 @@
/* This is free and unencumbered software released into the public domain. */

package com.github.drydart.flutter_sqlcipher;

import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.PluginRegistry.Registrar;
import java.io.InputStream;
import java.io.IOException;

/** FlutterMethodCallHandler */
@SuppressWarnings("unchecked")
abstract class FlutterMethodCallHandler implements MethodCallHandler {
final Registrar registrar;

FlutterMethodCallHandler(final Registrar registrar) {
this.registrar = registrar;
}

AssetManager
getAssets() {
return registrar.context().getAssets();
}

AssetFileDescriptor
openAsset(final String assetName) throws IOException {
final String assetKey = registrar.lookupKeyForAsset(assetName);
return getAssets().openFd(assetKey);
}

Bitmap
loadBitmap(final String assetName) throws IOException {
return loadBitmap(assetName, null);
}

Bitmap
loadBitmap(final String assetName,
final BitmapFactory.Options options) throws IOException {
final InputStream stream = openAsset(assetName).createInputStream();
return BitmapFactory.decodeStream(stream, null, options);
}

static <T> T
getRequiredArgument(final MethodCall call,
final String name) {
assert(call != null);
assert(name != null);

if (!call.hasArgument(name)) {
throw new AssertionError();
}
final T arg = call.argument(name);
if (arg == null) {
throw new AssertionError();
}
return arg;
}

static <T> T
getOptionalArgument(final MethodCall call,
final String name) {
return getOptionalArgument(call, name, (T)null);
}

static <T> T
getOptionalArgument(final MethodCall call,
final String name,
final T defaultValue) {
assert(call != null);
assert(name != null);

return call.hasArgument(name) ? (T)call.argument(name) : defaultValue;
}
}
Expand Up @@ -10,13 +10,11 @@
import net.sqlcipher.database.SQLiteDatabase;

/** SQLCipherMethodHandler */
class SQLCipherMethodHandler implements MethodCallHandler {
class SQLCipherMethodHandler extends FlutterMethodCallHandler {
static final String CHANNEL = "flutter_sqlcipher/SQLCipher";

final Registrar registrar;

SQLCipherMethodHandler(final Registrar registrar) {
this.registrar = registrar;
super(registrar);
}

@Override
Expand Down
Expand Up @@ -10,13 +10,11 @@
import net.sqlcipher.database.SQLiteCursor;

/** SQLiteCursorMethodHandler */
class SQLiteCursorMethodHandler implements MethodCallHandler {
class SQLiteCursorMethodHandler extends FlutterMethodCallHandler {
static final String CHANNEL = "flutter_sqlcipher/SQLiteCursor";

final Registrar registrar;

SQLiteCursorMethodHandler(final Registrar registrar) {
this.registrar = registrar;
super(registrar);
}

@Override
Expand Down
Expand Up @@ -20,15 +20,14 @@

/** SQLiteDatabaseMethodHandler */
@SuppressWarnings("unchecked")
class SQLiteDatabaseMethodHandler implements MethodCallHandler {
class SQLiteDatabaseMethodHandler extends FlutterMethodCallHandler {
static final String CHANNEL = "flutter_sqlcipher/SQLiteDatabase";

final Registrar registrar;
final Map<Integer, SQLiteDatabase> databases = new HashMap<>();
int databaseID;

SQLiteDatabaseMethodHandler(final Registrar registrar) {
this.registrar = registrar;
super(registrar);
}

@Override
Expand Down Expand Up @@ -442,38 +441,6 @@ class SQLiteDatabaseMethodHandler implements MethodCallHandler {
return this.databases.get(id);
}

private static <T> T
getRequiredArgument(final MethodCall call,
final String name) {
assert(call != null);
assert(name != null);

if (!call.hasArgument(name)) {
throw new AssertionError();
}
final T arg = call.argument(name);
if (arg == null) {
throw new AssertionError();
}
return arg;
}

private static <T> T
getOptionalArgument(final MethodCall call,
final String name) {
return getOptionalArgument(call, name, (T)null);
}

private static <T> T
getOptionalArgument(final MethodCall call,
final String name,
final T defaultValue) {
assert(call != null);
assert(name != null);

return call.hasArgument(name) ? (T)call.argument(name) : defaultValue;
}

private static ContentValues
convertMapToContentValues(final Map<String, Object> input) {
assert(input != null);
Expand Down
Expand Up @@ -10,13 +10,11 @@
import net.sqlcipher.database.SQLiteDatabase;

/** SQLiteMethodHandler */
class SQLiteMethodHandler implements MethodCallHandler {
class SQLiteMethodHandler extends FlutterMethodCallHandler {
static final String CHANNEL = "flutter_sqlcipher/SQLite";

final Registrar registrar;

SQLiteMethodHandler(final Registrar registrar) {
this.registrar = registrar;
super(registrar);
}

@Override
Expand Down

0 comments on commit d46a07b

Please sign in to comment.