-
-
Notifications
You must be signed in to change notification settings - Fork 230
Expand file tree
/
Copy pathMetadata.xml
More file actions
164 lines (139 loc) · 12 KB
/
Metadata.xml
File metadata and controls
164 lines (139 loc) · 12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<metadata>
<!--
Reference: https://docs.microsoft.com/xamarin/android/platform/binding-java-library/customizing-bindings/java-bindings-metadata
Source API (before transformation):
src/Sentry/obj/Debug/net6.0-android/api.xml
Output API (after transformation):
src/Sentry/obj/Debug/net6.0-android/api.xml.fixed
-->
<!-- Make all public types, internal -->
<attr path="/api/package/class[@visibility='public']" name="visibility">internal</attr>
<attr path="/api/package/interface[@visibility='public']" name="visibility">internal</attr>
<!-- Fix nullability of enum field values -->
<attr path="/api/package/class[@extends='java.lang.Enum']/field" name="not-null">true</attr>
<!-- Assign .NET namespaces for all Java packages imported -->
<attr path="/api/package[@name='io.sentry']" name="managedName">Sentry.JavaSdk</attr>
<attr path="/api/package[@name='io.sentry.android.core']" name="managedName">Sentry.JavaSdk.Android.Core</attr>
<attr path="/api/package[@name='io.sentry.android.core.internal.gestures']" name="managedName">Sentry.JavaSdk.Android.Core.Internal.Gestures</attr>
<attr path="/api/package[@name='io.sentry.android.core.internal.modules']" name="managedName">Sentry.JavaSdk.Android.Core.Internal.Modules</attr>
<attr path="/api/package[@name='io.sentry.android.core.internal.threaddump']" name="managedName">Sentry.JavaSdk.Android.Core.Internal.ThreadDump</attr>
<attr path="/api/package[@name='io.sentry.android.core.internal.util']" name="managedName">Sentry.JavaSdk.Android.Core.Internal.Util</attr>
<attr path="/api/package[@name='io.sentry.android.ndk']" name="managedName">Sentry.JavaSdk.Android.Ndk</attr>
<attr path="/api/package[@name='io.sentry.android.supplemental']" name="managedName">Sentry.JavaSdk.Android.Supplemental</attr>
<attr path="/api/package[@name='io.sentry.cache']" name="managedName">Sentry.JavaSdk.Cache</attr>
<!-- Renaming 'clientreport' to 'clientreports' (plural) as a workaround for typename matching namespace: io.sentry.clientreport.clientreport -->
<attr path="/api/package[@name='io.sentry.clientreport']" name="managedName">Sentry.JavaSdk.ClientReports</attr>
<attr path="/api/package[@name='io.sentry.config']" name="managedName">Sentry.JavaSdk.Config</attr>
<attr path="/api/package[@name='io.sentry.exception']" name="managedName">Sentry.JavaSdk.Exception</attr>
<attr path="/api/package[@name='io.sentry.hints']" name="managedName">Sentry.JavaSdk.Hints</attr>
<attr path="/api/package[@name='io.sentry.instrumentation.file']" name="managedName">Sentry.JavaSdk.Instrumentation.File</attr>
<attr path="/api/package[@name='io.sentry.internal.gestures']" name="managedName">Sentry.JavaSdk.Internal.Gestures</attr>
<attr path="/api/package[@name='io.sentry.internal.modules']" name="managedName">Sentry.JavaSdk.Internal.Modules</attr>
<attr path="/api/package[@name='io.sentry.transport']" name="managedName">Sentry.JavaSdk.Transport</attr>
<attr path="/api/package[@name='io.sentry.profilemeasurements']" name="managedName">Sentry.JavaSdk.ProfileMeasurements</attr>
<attr path="/api/package[@name='io.sentry.protocol']" name="managedName">Sentry.JavaSdk.Protocol</attr>
<attr path="/api/package[@name='io.sentry.util']" name="managedName">Sentry.JavaSdk.Util</attr>
<attr path="/api/package[@name='io.sentry.util.thread']" name="managedName">Sentry.JavaSdk.Util.Thread</attr>
<attr path="/api/package[@name='io.sentry.vendor']" name="managedName">Sentry.JavaSdk.Vendor</attr>
<attr path="/api/package[@name='io.sentry.vendor.gson.internal.bind.util']" name="managedName">Sentry.JavaSdk.Vendor.Gson.Internal.Bind.Util</attr>
<attr path="/api/package[@name='io.sentry.vendor.gson.stream']" name="managedName">Sentry.JavaSdk.Vendor.Gson.Stream</attr>
<!--
These properties have conflicts that create BG8401 warnings ("Skipping '...' due to a duplicate field or property name.")
This happens where there is a both a method such as "public getFoo" and related field "protected foo" on the same class.
We assign a different name to the field to remove the conflict.
-->
<attr path="/api/package[@name='io.sentry']/class[@name='SentryBaseEvent']/field[@name='throwable']" name="managedName">ThrowableValue</attr>
<attr path="/api/package[@name='io.sentry']/class[@name='SpanContext']/field[@name='description']" name="managedName">DescriptionValue</attr>
<attr path="/api/package[@name='io.sentry']/class[@name='SpanContext']/field[@name='origin']" name="managedName">OriginValue</attr>
<attr path="/api/package[@name='io.sentry']/class[@name='SpanContext']/field[@name='status']" name="managedName">StatusValue</attr>
<attr path="/api/package[@name='io.sentry']/class[@name='SpanContext']/field[@name='tags']" name="managedName">TagsValue</attr>
<!-- These constants need a different name than their class to avoid CS0542 compilation errors. -->
<attr path="/api/package[@name='io.sentry']/class[@name='SentryTraceHeader']/field[@name='SENTRY_TRACE_HEADER']" name="managedName">SentryTraceHeaderName</attr>
<attr path="/api/package[@name='io.sentry']/class[@name='BaggageHeader']/field[@name='BAGGAGE_HEADER']" name="managedName">BaggageHeaderName</attr>
<!-- Fix visibility of some specific types as necessary. -->
<attr path="/api/package[@name='io.sentry.android.core']/class[@name='DefaultAndroidEventProcessor']" name="visibility">internal</attr>
<attr path="/api/package[@name='io.sentry.android.core']/class[@name='EmptySecureContentProvider']" name="visibility">internal</attr>
<attr path="/api/package[@name='io.sentry']/interface[@name='ObjectReader']/method[@name='dateOrNull']" name="visibility">internal</attr>
<!-- Fix missing compareTo(Object) methods on classes extending SentryDate. -->
<add-node path="/api/package[@name='io.sentry']/class[@extends='io.sentry.SentryDate']">
<method name="compareTo" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public">
<parameter name="p0" type="java.lang.Object" />
</method>
</add-node>
<!-- Fix missing compareTo(Object) method for EventProcessorAndOrder-->
<add-node path="/api/package[@name='io.sentry.internal.eventprocessor']/class[@name='EventProcessorAndOrder']">
<method name="compareTo" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public">
<parameter name="p0" type="java.lang.Object" />
</method>
</add-node>
<!-- Fix missing compareTo(Object) method for Breadcrumb -->
<add-node path="/api/package[@name='io.sentry']/class[@name='Breadcrumb']">
<method name="compareTo" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public">
<parameter name="p0" type="java.lang.Object" />
</method>
</add-node>
<!-- Remove problematic deprecated methods in the IScopes interface -->
<remove-node path="/api/package[@name='io.sentry']/interface[@name='IScopes']/method[@deprecated]" />
<!--
TODO: If we need this, figure out how to multi-target or late bind.
This API uses FrameMetrics, which requires Android >= 24.0. We currently target Android >= 21.0 which is the minimum supported by MAUI.
AndroidProfiler is dependant on SentryFrameMetricsCollector
-->
<remove-node path="/api/package[@name='io.sentry.android.core.internal.util']/*[starts-with(@name,'SentryFrameMetricsCollector')]" />
<remove-node path="/api/package[@name='io.sentry.android.core']/class[@name='AndroidProfiler']/*" />
<!-- Remove problematic classes for profiling that create a stack overflow during code generation, which appears as:
error MSB6006: "dotnet" exited with code 134
-->
<remove-node path="/api/package[@name='io.sentry']/class[@name='ProfileChunk']" />
<remove-node path="/api/package[@name='io.sentry']/class[@name='ProfilingTraceData']" />
<remove-node path="/api/package[@name='io.sentry.android.core']/class[@name='AndroidProfiler']" />
<!--
The BackfillingEventProcessor interface creates a stack overflow during code generation, which appears as:
error MSB6006: "dotnet" exited with code 134
We currently don't need to use this via C# bindings.
-->
<remove-node path="/api/package[@name='io.sentry']/interface[@name='BackfillingEventProcessor']" />
<!--
SentryEvent.serialize() expects an parameter which implements IObjectWriter.
JsonObjectWriter implements IObjectWriter in Java, but somehow this is not reflected in the generated binding.
Here we force using JsonObjectWriter as otherwise we'd get the following error message:
Argument 1: cannot convert from 'Sentry.JavaSdk.JsonObjectWriter' to 'Sentry.JavaSdk.IObjectWriter'
-->
<attr path="/api/package[@name='io.sentry']/class[@name='SentryEvent']/method[@name='serialize']/parameter[@name='writer']"
name="managedType">Sentry.JavaSdk.JsonObjectWriter</attr>
<!--
SentryEvent.Deserializer.deserialize() expects an parameter which implements IObjectReader.
JsonObjectReader implements IObjectWriter in Java, but somehow this is not reflected in the generated binding.
Here we force using JsonObjectReader as otherwise we'd get the following error message:
Argument 1: cannot convert from 'Sentry.JavaSdk.JsonObjectReader' to 'Sentry.JavaSdk.IObjectReader'
-->
<attr path="/api/package[@name='io.sentry']/class[@name='SentryEvent.Deserializer']/method[@name='deserialize']/parameter[@name='reader']"
name="managedType">Sentry.JavaSdk.JsonObjectReader</attr>
<!--
The remaining APIS are removed to prevent various errors/warnings.
TODO: Find other workarounds for each one, rather than removing the APIs.
-->
<remove-node path="/api/package[@name='io.sentry']/class[@name='EnvelopeSender']" />
<remove-node path="/api/package[@name='io.sentry']/class[@name='OutboxSender']" />
<remove-node path="/api/package[@name='io.sentry.cache']/class[@name='EnvelopeCache']" />
<remove-node path="/api/package[@name='io.sentry.android.core.cache']/class[@name='AndroidEnvelopeCache']" />
<remove-node path="/api/package[@name='io.sentry.android.core.internal.gestures']" />
<remove-node path="/api/package[@name='io.sentry.android.core.performance']" />
<remove-node path="/api/package[@name='io.sentry.android.core']/class[@name='SentryUserFeedbackDialog.Builder']" />
<remove-node path="/api/package[starts-with(@name,'io.sentry')]/*/method[@name='clone' and count(parameter)=0]" />
<remove-node path="/api/package[starts-with(@name,'io.sentry')]/class/implements[@name='io.sentry.JsonDeserializer']" />
<remove-node path="/api/package[@name='io.sentry.vendor.gson.stream']/class[@name='JsonToken']/field[@name='NAME']" />
<remove-node path="/api/package[@name='io.sentry.exception']/class[@name='ExceptionMechanismException']" />
<remove-node path="/api/package[@name='io.sentry.exception']/class[@name='InvalidSentryTraceHeaderException']" />
<remove-node path="/api/package[@name='io.sentry.exception']/class[@name='SentryEnvelopeException']" />
<remove-node path="/api/package[@name='io.sentry.exception']/class[@name='SentryHttpClientException']" />
<remove-node path="/api/package[@name='io.sentry.vendor.gson.stream']/class[@name='MalformedJsonException']" />
<!-- Remove CombinedContextsView.PutAll method due to conflicts when attempting to overwrite a method with the same name. -->
<remove-node path="/api/package[@name='io.sentry']/class[@name='CombinedContextsView']/method[@name='putAll']" />
<!-- Remove ISentryLifecycleToken.Close method due to conflicts with IAutoCloseable.Close due to having the same name. -->
<remove-node path="/api/package[@name='io.sentry']/interface[@name='ISentryLifecycleToken']/method[@name='close']" />
<!-- Remove QueueFile. The `.iterator` method has nullability issues -->
<remove-node path="/api/package[@name='io.sentry.cache.tape']/class[@name='QueueFile']" />
<!-- Remove UpdateStatus to avoid CS0108 for conflicting _members fields in nested subclasses -->
<remove-node path="/api/package[@name='io.sentry']/class[@name='UpdateStatus']" />
</metadata>