Skip to content
This repository has been archived by the owner on Apr 29, 2024. It is now read-only.

Commit

Permalink
small clean-ups
Browse files Browse the repository at this point in the history
  • Loading branch information
mahesh-hegde committed Aug 10, 2022
1 parent 52b6270 commit 289d0ca
Show file tree
Hide file tree
Showing 19 changed files with 39 additions and 398 deletions.
1 change: 1 addition & 0 deletions .github/workflows/test-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ jobs:
with:
distribution: 'zulu'
java-version: '11'
cache: maven
- uses: dart-lang/setup-dart@v1.0
with:
sdk: stable
Expand Down
9 changes: 3 additions & 6 deletions jni/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,9 @@ android {

// Bumping the plugin ndkVersion requires all clients of this plugin to bump
// the version in their app and to download a newer version of the NDK.

// Note(MaheshH): Seems 22 is lowest one can get through SDKManager now?
//
// It's more of a logistic issue, I can't download NDK 21, so keeping it
// 22. You might get a warning to bump some versions.
// ndkVersion "22.1.7171670"
// Note(MaheshH) - Flutter seems to download minimum NDK of flutter when
// below line is commented out.
// How about leaving it?
// ndkVersion "21.1.6352462"

// Invoke the shared CMake build with the Android Gradle Plugin.
Expand Down
9 changes: 8 additions & 1 deletion jni/lib/src/jl_object.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ class JlObject {
throw DoubleFreeException(this, reference);
}
_deleted = true;
// TODO: this should be done in jni-thread-safe way
// will be solved when #12 is implemented.
Jni.getInstance().getEnv().DeleteGlobalRef(reference);
}
}
Expand All @@ -42,11 +44,16 @@ class JlString extends JlObject {
String toDartString() {
final jni = Jni.getInstance();
if (reference == nullptr) {
throw NullThrownError();
throw NullJlStringException();
}
final chars = jni.getJavaStringChars(reference);
final result = chars.cast<Utf8>().toDartString();
jni.releaseJavaStringChars(reference, chars);
return result;
}

late final _dartString = toDartString();

@override
String toString() => _dartString;
}
4 changes: 2 additions & 2 deletions jni/lib/src/jni.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import 'jvalues.dart';

import 'jni_object.dart';
import 'jni_class.dart';
import 'jni_exceptions.dart';

part 'direct_methods_generated.dart';

Expand Down Expand Up @@ -37,8 +38,7 @@ DynamicLibrary _loadJniHelpersLibrary(
final dylib = DynamicLibrary.open(libPath);
return dylib;
} on Error {
rethrow;
// throw HelperNotFoundException(libPath);
throw HelperNotFoundException(libPath);
}
}

Expand Down
5 changes: 5 additions & 0 deletions jni/lib/src/jni_exceptions.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ class UseAfterFreeException implements Exception {
}
}

class NullJlStringException implements Exception {
@override
String toString() => 'toDartString called on null JlString reference';
}

class DoubleFreeException implements Exception {
dynamic object;
Pointer<Void> ptr;
Expand Down
6 changes: 2 additions & 4 deletions jni_gen/bin/build_summarizer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,9 @@ Future<void> buildApiSummarizer() async {
],
workingDirectory: toolPath);
await mvnProc.exitCode;
final mvnOut =
commandOutputStream((line) => '[mvn:stdout] $line', mvnProc.stdout);
final mvnOut = prefixedCommandOutputStream('[mvn:stdout]', mvnProc.stdout);
mvnOut.forEach(stdout.writeln);
final mvnErr =
commandOutputStream((line) => '[mvn:stderr] $line', mvnProc.stderr);
final mvnErr = prefixedCommandOutputStream('[mvn:stderr]', mvnProc.stderr);
mvnErr.forEach(stdout.writeln);
// move ApiSummarizer.jar from target to current directory
File(targetJarFile).renameSync(jarFile);
Expand Down
File renamed without changes.
1 change: 0 additions & 1 deletion jni_gen/lib/src/bindings/cmake.dart

This file was deleted.

4 changes: 2 additions & 2 deletions jni_gen/lib/src/config/summary_source.dart
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ class SummarizerCommand extends SummarySource {
args.addAll(classes);

final proc = await Process.start(exec, args,
workingDirectory: workingDirectory?.toFilePath() ?? ".");
commandOutputStream((s) => "[ApiSummarizer] $s", proc.stderr)
workingDirectory: workingDirectory?.toFilePath() ?? '.');
prefixedCommandOutputStream('[ApiSummarizer]', proc.stderr)
.forEach(stderr.writeln);
return proc.stdout;
}
Expand Down
12 changes: 6 additions & 6 deletions jni_gen/lib/src/util/command_output.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import 'dart:convert';

Stream<String> commandOutputStream(
String Function(String) lineMapper, Stream<List<int>> input) {
return input
.transform(Utf8Decoder())
.transform(LineSplitter())
.map(lineMapper);
}
String Function(String) lineMapper, Stream<List<int>> input) =>
input.transform(Utf8Decoder()).transform(LineSplitter()).map(lineMapper);

Stream<String> prefixedCommandOutputStream(
String prefix, Stream<List<int>> input) =>
commandOutputStream((line) => '$prefix $line', input);
5 changes: 4 additions & 1 deletion jni_gen/lib/src/util/name_utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'package:jni_gen/src/elements/elements.dart';

String getPackageName(String binaryName) => cutFromLast(binaryName, '.')[0];

/// splits [str] into 2 from last occurence of [sep]
List<String> cutFromLast(String str, String sep) {
final li = str.lastIndexOf(sep);
if (li == -1) {
Expand All @@ -14,11 +15,13 @@ String getSimpleName(String binaryName) => binaryName.split('.').last;

String getSimpleNameOf(ClassDecl cls) => cls.simpleName;

// Eg -> a.b.X.Y -> X_Y
/// Returns class name as useful in dart.
/// Eg -> a.b.X.Y -> X_Y
String simplifiedClassName(String binaryName) =>
getSimpleName(binaryName).replaceAll('\$', '_');

// Utilities to operate on package names

List<String> getComponents(String packageName) => packageName.split('.');

String getLastName(String packageName) => cutFromLast(packageName, '.')[1];
2 changes: 1 addition & 1 deletion jni_gen/lib/src/writers/files_writer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ class FilesWriter extends BindingsWriter {

await _copyFileFromPackage(
'jni', 'src/dartjni.h', cWrapperDir.resolve('dartjni.h'));
await _copyFileFromPackage('jni_gen', 'cmake/CMakeLists.txt',
await _copyFileFromPackage('jni_gen', 'cmake/CMakeLists.txt.tmpl',
cWrapperDir.resolve('CMakeLists.txt'),
transform: (s) => s.replaceAll('{{LIBRARY_NAME}}', libraryName));
}
Expand Down
2 changes: 2 additions & 0 deletions jni_gen/lib/src/writers/plugin_writer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import 'package:jni_gen/src/config/wrapper_options.dart';

import 'bindings_writer.dart';

// TODO:

// Creates a plugin in directory pointed to by Url
// If a plugin already exists, then only updates the source files,
// leaving configuration such as pubspec.yaml intact
Expand Down
11 changes: 0 additions & 11 deletions jni_gen/test/my_test.dart

This file was deleted.

2 changes: 0 additions & 2 deletions jni_gen/test/package_resolver_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@ void main() {
'a.b',
{'a.b.C', 'a.b.c.D', 'a.b.c.d.E'});

// class names are imaginary

final tests = [
// Simple example
ResolverTest('org.apache.pdfbox.PDF',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@

import static org.objectweb.asm.Opcodes.ASM9;

/** Class that summarizes Java APIs in compiled JARs using ASM */
/** Class that summarizes Java APIs in compiled JARs using ASM
* not working yet.
*/
public class AsmSummarizer {

private static class JarClass {
Expand Down
30 changes: 0 additions & 30 deletions jni_gen_test/src/CMakeLists.txt

This file was deleted.

0 comments on commit 289d0ca

Please sign in to comment.