Open
Description
Another one from AndroidX
ACW error during samples builds:
obj/Debug/android/src/mono/androidx/paging/AsyncPagedListDiffer_PagedListListenerImplementor.java(8,39): javac error JAVAC0000: error: PagedListListener is not public in AsyncPagedListDiffer; cannot be accessed from outside package [/Users/Shared/Projects/d/X/AndroidX_master/samples/BuildAll/BuildAll/BuildAll.csproj]
obj/Debug/android/src/mono/androidx/paging/AsyncPagedListDiffer_PagedListListenerImplementor.java(8,39): javac error JAVAC0000: androidx.paging.AsyncPagedListDiffer.PagedListListener [/Users/Shared/Projects/d/X/AndroidX_master/samples/BuildAll/BuildAll/BuildAll.csproj]
obj/Debug/android/src/mono/androidx/paging/AsyncPagedListDiffer_PagedListListenerImplementor.java(8,39): javac error JAVAC0000: [/Users/Shared/Projects/d/X/AndroidX_master/samples/BuildAll/BuildAll/BuildAll.csproj]
api.xml
for the AsyncPagedListDiffer
class:
<class abstract="false" deprecated="not deprecated" extends="java.lang.Object" extends-generic-aware="java.lang.Object" jni-extends="Ljava/lang/Object;" final="false" name="AsyncPagedListDiffer" static="false" visibility="public" jni-signature="Landroidx/paging/AsyncPagedListDiffer;">
<typeParameters>
<typeParameter name="T" classBound="java.lang.Object" jni-classBound="Ljava/lang/Object;"></typeParameter>
</typeParameters>
<constructor deprecated="not deprecated" final="false" name="AsyncPagedListDiffer" jni-signature="(Landroidx/recyclerview/widget/ListUpdateCallback;Landroidx/recyclerview/widget/AsyncDifferConfig;)V" bridge="false" static="false" type="androidx.paging.AsyncPagedListDiffer" synthetic="false" visibility="public">
<parameter name="listUpdateCallback" type="androidx.recyclerview.widget.ListUpdateCallback" jni-type="Landroidx/recyclerview/widget/ListUpdateCallback;">
</parameter>
<parameter name="config" type="androidx.recyclerview.widget.AsyncDifferConfig<T>" jni-type="Landroidx/recyclerview/widget/AsyncDifferConfig<TT;>;">
</parameter>
</constructor>
<constructor deprecated="not deprecated" final="false" name="AsyncPagedListDiffer" jni-signature="(Landroidx/recyclerview/widget/RecyclerView$Adapter;Landroidx/recyclerview/widget/DiffUtil$ItemCallback;)V" bridge="false" static="false" type="androidx.paging.AsyncPagedListDiffer" synthetic="false" visibility="public">
<parameter name="adapter" type="androidx.recyclerview.widget.RecyclerView.Adapter" jni-type="Landroidx/recyclerview/widget/RecyclerView$Adapter;">
</parameter>
<parameter name="diffCallback" type="androidx.recyclerview.widget.DiffUtil.ItemCallback<T>" jni-type="Landroidx/recyclerview/widget/DiffUtil$ItemCallback<TT;>;">
</parameter>
</constructor>
<method abstract="false" deprecated="not deprecated" final="false" name="getCurrentList" jni-signature="()Landroidx/paging/PagedList;" bridge="false" native="false" return="androidx.paging.PagedList<T>" jni-return="Landroidx/paging/PagedList<TT;>;" static="false" synchronized="false" synthetic="false" visibility="public">
</method>
<method abstract="false" deprecated="not deprecated" final="false" name="getItem" jni-signature="(I)Ljava/lang/Object;" bridge="false" native="false" return="T" jni-return="TT;" static="false" synchronized="false" synthetic="false" visibility="public">
<parameter name="index" type="int" jni-type="I">
</parameter>
</method>
<method abstract="false" deprecated="not deprecated" final="false" name="getItemCount" jni-signature="()I" bridge="false" native="false" return="int" jni-return="I" static="false" synchronized="false" synthetic="false" visibility="public">
</method>
<method abstract="false" deprecated="not deprecated" final="false" name="submitList" jni-signature="(Landroidx/paging/PagedList;)V" bridge="false" native="false" return="void" jni-return="V" static="false" synchronized="false" synthetic="false" visibility="public">
<parameter name="pagedList" type="androidx.paging.PagedList<T>" jni-type="Landroidx/paging/PagedList<TT;>;">
</parameter>
</method>
</class>
Attempt to make class non-generic and interface protected
<metadata>
<remove-node
path="/api/package[@name='androidx.paging']/class[@name='AsyncPagedListDiffer']/typeParameters"
/>
<attr
path="/api/package[@name='androidx.paging']/interface[@name='AsyncPagedListDiffer.PagedListListener']"
name="visibility"
>
protected
</attr>
</metadata>
Generated managed C# code:
// Metadata.xml XPath class reference: path="/api/package[@name='androidx.paging']/class[@name='AsyncPagedListDiffer']"
[global::Android.Runtime.Register ("androidx/paging/AsyncPagedListDiffer", DoNotGenerateAcw=true)]
[global::Java.Interop.JavaTypeParameters (new string [] {"T"})]
public partial class AsyncPagedListDiffer : global::Java.Lang.Object {
// Metadata.xml XPath interface reference: path="/api/package[@name='androidx.paging']/interface[@name='AsyncPagedListDiffer.PagedListListener']"
[Register ("androidx/paging/AsyncPagedListDiffer$PagedListListener", "", "AndroidX.Paging.AsyncPagedListDiffer/IPagedListListenerInvoker")]
protected internal partial interface IPagedListListener : IJavaObject, IJavaPeerable {
// removed code
}
[global::Android.Runtime.Register ("androidx/paging/AsyncPagedListDiffer$PagedListListener", DoNotGenerateAcw=true)]
internal partial class IPagedListListenerInvoker : global::Java.Lang.Object, IPagedListListener {
}
So interface is protected internal
and added. Why?
generated ACW java adds interface:
package mono.androidx.paging;
public class AsyncPagedListDiffer_PagedListListenerImplementor
extends java.lang.Object
implements
mono.android.IGCUserPeer,
androidx.paging.AsyncPagedListDiffer.PagedListListener
Note PagedListListener
which is not in api.xml
(no implements for give class AsyncPagedListDiffer
.