Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion pkgs/jnigen/lib/src/bindings/dart_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1312,7 +1312,9 @@ ${modifier}final _$idName = $_protectedExtension
}
final params = defArgs.delimited(', ');
if (node.isDeprecated) {
s.writeln(" @core\$_.Deprecated('This Java method is deprecated.')");
final message =
node.javadoc?.deprecatedMessage ?? 'This Java method is deprecated.';
s.writeln(' @core\$_.Deprecated(${jsonEncode(message)})');
}
if (node.methodKind == MethodKind.getter) {
s.write(' $ifStatic$returnType get $name ');
Expand Down
34 changes: 34 additions & 0 deletions pkgs/jnigen/lib/src/elements/elements.dart
Original file line number Diff line number Diff line change
Expand Up @@ -973,6 +973,40 @@ class JavaDocComment implements Element<JavaDocComment> {

final String comment;

String? get deprecatedMessage {
final lines = comment.split('\n');
final messageLines = <String>[];
var readingDeprecatedTag = false;

for (final line in lines) {
final trimmed = line.trim();

if (!readingDeprecatedTag) {
if (trimmed.startsWith('@deprecated')) {
readingDeprecatedTag = true;

final firstLine = trimmed.substring('@deprecated'.length).trim();
if (firstLine.isNotEmpty) {
messageLines.add(firstLine);
}
}
continue;
}

// A new Javadoc block tag marks the end of the deprecated message.
if (trimmed.startsWith('@')) {
break;
}

if (trimmed.isNotEmpty) {
messageLines.add(trimmed);
}
}

final message = messageLines.join('\n').trim();
return message.isEmpty ? null : message;
}

factory JavaDocComment.fromJson(Map<String, dynamic> json) =>
_$JavaDocCommentFromJson(json);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1283,7 +1283,7 @@ extension Example$$Methods on Example {

/// from: `public java.lang.String deprecatedMethod()`
/// The returned object must be released after use, by calling the [release] method.
@core$_.Deprecated('This Java method is deprecated.')
@core$_.Deprecated("This Java method is deprecated.")
jni$_.JString? deprecatedMethod() {
final _$$selfRef = reference;
return _deprecatedMethod(_$$selfRef.pointer, _id_deprecatedMethod.pointer)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,11 @@ public String joinStrings(List<String> values, String delim) {
return null;
}

/**
* This method is retained for compatibility.
*
* @deprecated Use methodWithSeveralParams instead.
*/
@Deprecated
public String deprecatedMethod() {
return "deprecated";
Expand Down
Loading