Skip to content

Commit a202f0a

Browse files
committed
[Java.Interop.Tools.JavaTypeSystem] Add 'annotated-visibility' for types.
1 parent 07d5595 commit a202f0a

File tree

7 files changed

+20
-13
lines changed

7 files changed

+20
-13
lines changed

src/Java.Interop.Tools.JavaTypeSystem/Adapters/JavaXmlApiExporter.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,15 @@ public static void Save (JavaTypeCollection types, XmlWriter writer)
5858
static void SaveType (JavaTypeModel type, XmlWriter writer)
5959
{
6060
if (type is JavaClassModel cls)
61-
SaveType (type, writer, "class", XmlConvert.ToString (cls.IsAbstract), cls.BaseType, cls.BaseTypeGeneric, cls.BaseTypeJni);
61+
SaveType (type, writer, "class", XmlConvert.ToString (cls.IsAbstract), cls.BaseType, cls.BaseTypeGeneric, cls.BaseTypeJni, cls.AnnotatedVisibility);
6262
else
63-
SaveType (type, writer, "interface", "true", null, null, null);
63+
SaveType (type, writer, "interface", "true", null, null, null, type.AnnotatedVisibility);
6464

6565
foreach (var nested in type.NestedTypes)
6666
SaveType (nested, writer);
6767
}
6868

69-
static void SaveType (JavaTypeModel cls, XmlWriter writer, string elementName, string abs, string? ext, string? extgen, string? jniExt)
69+
static void SaveType (JavaTypeModel cls, XmlWriter writer, string elementName, string abs, string? ext, string? extgen, string? jniExt, string annotatedVisibility)
7070
{
7171
writer.WriteStartElement (elementName);
7272

@@ -80,6 +80,7 @@ static void SaveType (JavaTypeModel cls, XmlWriter writer, string elementName, s
8080
writer.WriteAttributeString ("static", XmlConvert.ToString (cls.IsStatic));
8181
writer.WriteAttributeString ("visibility", cls.Visibility);
8282
writer.WriteAttributeStringIfValue ("jni-signature", cls.ExtendedJniSignature);
83+
writer.WriteAttributeStringIfValue ("annotated-visibility", annotatedVisibility);
8384

8485
if (cls.PropertyBag.TryGetValue ("merge.SourceFile", out var source))
8586
writer.WriteAttributeString ("merge.SourceFile", source);

src/Java.Interop.Tools.JavaTypeSystem/Adapters/JavaXmlApiImporter.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ public static JavaClassModel ParseClass (JavaPackage package, XElement element)
113113
javaDeprecated: element.XGetAttribute ("deprecated"),
114114
javaStatic: element.XGetAttributeAsBool ("static"),
115115
jniSignature: element.XGetAttribute ("jni-signature"),
116-
baseTypeJni: element.XGetAttribute ("jni-extends")
116+
baseTypeJni: element.XGetAttribute ("jni-extends"),
117+
annotatedVisibility: element.XGetAttribute ("annotated-visibility")
117118
);
118119

119120
if (element.XGetAttribute ("merge.SourceFile") is string source && source.HasValue ())
@@ -151,8 +152,9 @@ public static JavaInterfaceModel ParseInterface (JavaPackage package, XElement e
151152
var deprecated = element.XGetAttribute ("deprecated");
152153
var is_static = element.XGetAttribute ("static") == "true";
153154
var jni_signature = element.XGetAttribute ("jni-signature");
155+
var annotated_visibility = element.XGetAttribute ("annotated-visibility");
154156

155-
var model = new JavaInterfaceModel (package, nested_name, visibility, deprecated, is_static, jni_signature);
157+
var model = new JavaInterfaceModel (package, nested_name, visibility, deprecated, is_static, jni_signature, annotated_visibility);
156158

157159
if (element.XGetAttribute ("merge.SourceFile") is string source && source.HasValue ())
158160
model.PropertyBag.Add ("merge.SourceFile", source);

src/Java.Interop.Tools.JavaTypeSystem/Adapters/ManagedApiImporter.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ static bool ShouldImport (TypeDefinition td)
114114
javaDeprecated: obs_attr != null ? "deprecated" : "not-deprecated",
115115
javaStatic: false,
116116
jniSignature: FormatJniSignature (package, nested_name),
117-
baseTypeJni: base_jni.HasValue () ? $"L{base_jni};" : string.Empty
117+
baseTypeJni: base_jni.HasValue () ? $"L{base_jni};" : string.Empty,
118+
annotatedVisibility: string.Empty
118119
); ;
119120

120121
ParseImplementedInterfaces (type, model);
@@ -144,7 +145,8 @@ static bool ShouldImport (TypeDefinition td)
144145
javaVisibility: type.IsPublic || type.IsNestedPublic ? "public" : "protected internal",
145146
javaDeprecated: obs_attr != null ? "deprecated" : "not-deprecated",
146147
javaStatic: false,
147-
jniSignature: FormatJniSignature (package, nested_name)
148+
jniSignature: FormatJniSignature (package, nested_name),
149+
annotatedVisibility: ""
148150
);
149151

150152
ParseImplementedInterfaces (type, model);

src/Java.Interop.Tools.JavaTypeSystem/JavaModels/JavaBuiltInType.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace Java.Interop.Tools.JavaTypeSystem.Models
66
// Represents a Java built-in type like 'int' or 'float'
77
public class JavaBuiltInType : JavaTypeModel
88
{
9-
public JavaBuiltInType (string name) : base (new JavaPackage ("", "", null), name, "public", false, true, "not deprecated", false, "") { }
9+
public JavaBuiltInType (string name) : base (new JavaPackage ("", "", null), name, "public", false, true, "not deprecated", false, "", "") { }
1010

1111
public override void Resolve (JavaTypeCollection types, ICollection<JavaUnresolvableModel> unresolvables)
1212
{

src/Java.Interop.Tools.JavaTypeSystem/JavaModels/JavaClassModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ public class JavaClassModel : JavaTypeModel
1515
public JavaTypeReference? BaseTypeReference { get; private set; }
1616
public List<JavaConstructorModel> Constructors { get; } = new List<JavaConstructorModel> ();
1717

18-
public JavaClassModel (JavaPackage javaPackage, string javaNestedName, string javaVisibility, bool javaAbstract, bool javaFinal, string javaBaseType, string javaBaseTypeGeneric, string javaDeprecated, bool javaStatic, string jniSignature, string baseTypeJni) :
19-
base (javaPackage, javaNestedName, javaVisibility, javaAbstract, javaFinal, javaDeprecated, javaStatic, jniSignature)
18+
public JavaClassModel (JavaPackage javaPackage, string javaNestedName, string javaVisibility, bool javaAbstract, bool javaFinal, string javaBaseType, string javaBaseTypeGeneric, string javaDeprecated, bool javaStatic, string jniSignature, string baseTypeJni, string annotatedVisibility) :
19+
base (javaPackage, javaNestedName, javaVisibility, javaAbstract, javaFinal, javaDeprecated, javaStatic, jniSignature, annotatedVisibility)
2020
{
2121
BaseType = javaBaseType;
2222
BaseTypeGeneric = javaBaseTypeGeneric;

src/Java.Interop.Tools.JavaTypeSystem/JavaModels/JavaInterfaceModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ namespace Java.Interop.Tools.JavaTypeSystem.Models
44
{
55
public class JavaInterfaceModel : JavaTypeModel
66
{
7-
public JavaInterfaceModel (JavaPackage javaPackage, string javaNestedName, string javaVisibility, string javaDeprecated, bool javaStatic, string jniSignature) :
8-
base (javaPackage, javaNestedName, javaVisibility, false, false, javaDeprecated, javaStatic, jniSignature)
7+
public JavaInterfaceModel (JavaPackage javaPackage, string javaNestedName, string javaVisibility, string javaDeprecated, bool javaStatic, string jniSignature, string annotatedVisibility) :
8+
base (javaPackage, javaNestedName, javaVisibility, false, false, javaDeprecated, javaStatic, jniSignature, annotatedVisibility)
99
{
1010
}
1111

src/Java.Interop.Tools.JavaTypeSystem/JavaModels/JavaTypeModel.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public abstract class JavaTypeModel : IJavaResolvable
1717
public string NestedName { get; set; }
1818

1919
public string Visibility { get; }
20+
public string AnnotatedVisibility { get; }
2021
public bool IsAbstract { get; }
2122
public bool IsFinal { get; }
2223
public string Deprecated { get; }
@@ -36,12 +37,13 @@ public abstract class JavaTypeModel : IJavaResolvable
3637

3738
public Dictionary<string, string> PropertyBag { get; } = new Dictionary<string, string> ();
3839

39-
protected JavaTypeModel (JavaPackage javaPackage, string javaNestedName, string javaVisibility, bool javaAbstract, bool javaFinal, string deprecated, bool javaStatic, string jniSignature)
40+
protected JavaTypeModel (JavaPackage javaPackage, string javaNestedName, string javaVisibility, bool javaAbstract, bool javaFinal, string deprecated, bool javaStatic, string jniSignature, string annotatedVisibility)
4041
{
4142
Package = javaPackage;
4243
NestedName = javaNestedName.Replace ('$', '.');
4344
Name = NestedName.LastSubset ('.');
4445
Visibility = javaVisibility;
46+
AnnotatedVisibility = annotatedVisibility;
4547
IsAbstract = javaAbstract;
4648
IsFinal = javaFinal;
4749
Deprecated = deprecated;

0 commit comments

Comments
 (0)