|
1 | 1 | <metadata> |
| 2 | + |
| 3 | + <!-- |
| 4 | + Reference: https://docs.microsoft.com/xamarin/android/platform/binding-java-library/customizing-bindings/java-bindings-metadata |
| 5 | +
|
| 6 | + Source API (before transformation): |
| 7 | + src/Sentry/obj/Debug/net6.0-android/api.xml |
| 8 | + Output API (after transformation): |
| 9 | + src/Sentry/obj/Debug/net6.0-android/api.xml.fixed |
| 10 | + --> |
| 11 | + |
2 | 12 | <!-- Make all public types, internal --> |
3 | 13 | <attr path="/api/package/class[@visibility='public']" name="visibility">internal</attr> |
4 | 14 | <attr path="/api/package/interface[@visibility='public']" name="visibility">internal</attr> |
5 | 15 |
|
| 16 | + <!-- Assign .NET namespaces for all Java packages imported --> |
6 | 17 | <attr path="/api/package[@name='io.sentry']" name="managedName">Sentry.Java</attr> |
| 18 | + <attr path="/api/package[@name='io.sentry.android.core']" name="managedName">Sentry.Android</attr> |
| 19 | + <attr path="/api/package[@name='io.sentry.android.core.internal.gestures']" name="managedName">Sentry.Android.Internal.Gestures</attr> |
| 20 | + <attr path="/api/package[@name='io.sentry.android.core.internal.util']" name="managedName">Sentry.Android.Internal.Util</attr> |
| 21 | + <attr path="/api/package[@name='io.sentry.android.ndk']" name="managedName">Sentry.Android.Ndk</attr> |
7 | 22 | <attr path="/api/package[@name='io.sentry.cache']" name="managedName">Sentry.Java.Cache</attr> |
8 | | - <attr path="/api/package[@name='io.sentry.transport']" name="managedName">Sentry.Java.Transport</attr> |
| 23 | + <attr path="/api/package[@name='io.sentry.clientreport']" name="managedName">Sentry.Java.ClientReport</attr> |
9 | 24 | <attr path="/api/package[@name='io.sentry.config']" name="managedName">Sentry.Java.Configuration</attr> |
| 25 | + <attr path="/api/package[@name='io.sentry.exception']" name="managedName">Sentry.Java.Exception</attr> |
10 | 26 | <attr path="/api/package[@name='io.sentry.hints']" name="managedName">Sentry.Java.Hints</attr> |
11 | | - <attr path="/api/package[@name='io.sentry.util']" name="managedName">Sentry.Java.Util</attr> |
| 27 | + <attr path="/api/package[@name='io.sentry.instrumentation.file']" name="managedName">Sentry.Java.Instrumentation.File</attr> |
| 28 | + <attr path="/api/package[@name='io.sentry.transport']" name="managedName">Sentry.Java.Transport</attr> |
12 | 29 | <attr path="/api/package[@name='io.sentry.protocol']" name="managedName">Sentry.Java.Protocol</attr> |
| 30 | + <attr path="/api/package[@name='io.sentry.util']" name="managedName">Sentry.Java.Util</attr> |
13 | 31 | <attr path="/api/package[@name='io.sentry.vendor']" name="managedName">Sentry.Java.Vendor</attr> |
14 | | - <attr path="/api/package[@name='io.sentry.exception']" name="managedName">Sentry.Java.Exception</attr> |
15 | | - <attr path="/api/package[@name='io.sentry.android.core']" name="managedName">Sentry.Android</attr> |
16 | | - <attr path="/api/package[@name='io.sentry.android.ndk']" name="managedName">Sentry.Android.Ndk</attr> |
| 32 | + <attr path="/api/package[@name='io.sentry.vendor.gson.stream']" name="managedName">Sentry.Java.Vendor.Gson.Stream</attr> |
| 33 | + <attr path="/api/package[@name='io.sentry.vendor.gson.internal.bind.util']" name="managedName">Sentry.Java.Vendor.Gson.Internal.Bind.Util</attr> |
17 | 34 |
|
18 | | - <remove-node path="/api/package[@name='io.sentry.adapters']/class[@name='CollectionAdapter']" /> |
19 | | - <remove-node path="/api/package[@name='io.sentry']/class[@name='SessionAdapter']" /> |
20 | | - <remove-node path="/api/package[@name='io.sentry']/class[@name='SentryEnvelopeItemHeaderAdapter']" /> |
21 | | - <remove-node path="/api/package[@name='io.sentry']/class[@name='Session']/method[@name='clone' and count(parameter)=0]" /> |
22 | | - <remove-node path="/api/package[@name='io.sentry']/class[@name='HubAdapter']/method[@name='clone' and count(parameter)=0]" /> |
23 | | - <remove-node path="/api/package[@name='io.sentry']/interface[@name='IHub']/method[@name='clone' and count(parameter)=0]" /> |
24 | | - <remove-node path="/api/package[@name='io.sentry']/class[@name='NoOpHub']" /> |
25 | | - <remove-node path="/api/package[@name='io.sentry']/class[@name='OutboxSender']" /> |
26 | | - <remove-node path="/api/package[@name='io.sentry']/class[@name='TraceStateHeader']/field[@name='TRACE_STATE_HEADER']" /> |
27 | | - <remove-node path="/api/package[@name='io.sentry']/class[@name='SentryOptions']/method[@name='setEnvelopeDiskCache']" /> |
28 | | - <remove-node path="/api/package[@name='io.sentry']/class[@name='SentryOptions']/method[@name='getEnvelopeDiskCache']" /> |
29 | | - <remove-node path="/api/package[@name='io.sentry']/class[@name='SentryTraceHeader']/field[@name='SENTRY_TRACE_HEADER']" /> |
30 | | - <remove-node path="/api/package[@name='io.sentry']/class[@name='SentryEnvelopeHeaderAdapter']" /> |
31 | | - <remove-node path="/api/package[@name='io.sentry.transport']/class[@name='NoOpEnvelopeCache']" /> |
32 | | - <remove-node path="/api/package[@name='io.sentry']/class[@name='EnvelopeSender']" /> |
33 | | - <remove-node path="/api/package[@name='io.sentry']/class[@name='Hub']/method[@name='clone' and count(parameter)=0]" /> |
| 35 | + <!-- |
| 36 | + These properties have conflicts that create BG8401 warnings ("Skipping '...' due to a duplicate field or property name.") |
| 37 | + This happens where there is a both a method such as "public getFoo" and related field "protected foo" on the same class. |
| 38 | + We assign a different name to the field to remove the conflict. |
| 39 | + --> |
| 40 | + <attr path="/api/package[@name='io.sentry']/class[@name='SentryBaseEvent']/field[@name='throwable']" name="managedName">ThrowableValue</attr> |
| 41 | + <attr path="/api/package[@name='io.sentry']/class[@name='SpanContext']/field[@name='description']" name="managedName">DescriptionValue</attr> |
| 42 | + <attr path="/api/package[@name='io.sentry']/class[@name='SpanContext']/field[@name='status']" name="managedName">StatusValue</attr> |
| 43 | + <attr path="/api/package[@name='io.sentry']/class[@name='SpanContext']/field[@name='tags']" name="managedName">TagsValue</attr> |
| 44 | + |
| 45 | + <!-- These constants need a different name than their class to avoid CS0542 compilation errors. --> |
| 46 | + <attr path="/api/package[@name='io.sentry']/class[@name='SentryTraceHeader']/field[@name='SENTRY_TRACE_HEADER']" name="managedName">SentryTraceHeaderName</attr> |
| 47 | + <attr path="/api/package[@name='io.sentry']/class[@name='TraceStateHeader']/field[@name='TRACE_STATE_HEADER']" name="managedName">TraceStateHeaderName</attr> |
34 | 48 |
|
| 49 | + <!-- |
| 50 | + The remaining APIS are removed to prevent various errors/warnings. |
| 51 | + TODO: Find other workarounds for each one, rather than removing the APIs. |
| 52 | + --> |
35 | 53 |
|
36 | | - <remove-node path="/api/package[@name='io.sentry.android.core']/class[@name='AppLifecycleIntegration']" /> |
| 54 | + <remove-node path="/api/package[@name='io.sentry']/class[@name='EnvelopeSender']" /> |
| 55 | + <remove-node path="/api/package[@name='io.sentry']/class[@name='OutboxSender']" /> |
| 56 | + <remove-node path="/api/package[@name='io.sentry.cache']/class[@name='EnvelopeCache']" /> |
37 | 57 | <remove-node path="/api/package[@name='io.sentry.android.core']/class[@name='TempSensorBreadcrumbsIntegration']" /> |
38 | 58 | <remove-node path="/api/package[@name='io.sentry.android.core.internal.gestures']" /> |
39 | | - <remove-node path="/api/package[@name='io.sentry.cache']" /> |
40 | 59 |
|
41 | | - <remove-node path="/api/package[@name='io.sentry.adapters']" /> |
42 | | - <remove-node path="/api/package[@name='io.sentry.exception']/class[@name='SentryEnvelopeException']" /> |
| 60 | + <remove-node path="/api/package[starts-with(@name,'io.sentry')]/*/method[@name='clone' and count(parameter)=0]" /> |
| 61 | + <remove-node path="/api/package[starts-with(@name,'io.sentry')]/class/implements[@name='io.sentry.JsonDeserializer']" /> |
| 62 | + <remove-node path="/api/package[@name='io.sentry.vendor.gson.stream']/class[@name='JsonToken']/field[@name='NAME']" />> |
| 63 | + |
43 | 64 | <remove-node path="/api/package[@name='io.sentry.exception']/class[@name='ExceptionMechanismException']" /> |
44 | 65 | <remove-node path="/api/package[@name='io.sentry.exception']/class[@name='InvalidSentryTraceHeaderException']" /> |
45 | | - |
46 | | - <attr path="/api/package[@name='io.sentry']/class[@name='SpanContext']/field[@name='tags']" name="managedName">GetTags</attr> |
47 | | - <attr path="/api/package[@name='io.sentry']/class[@name='SpanContext']/field[@name='status']" name="managedName">GetStatus</attr> |
48 | | - <attr path="/api/package[@name='io.sentry']/class[@name='SpanContext']/field[@name='description']" name="managedName">GetDescription</attr> |
49 | | - <attr path="/api/package[@name='io.sentry']/class[@name='SentryBaseEvent']/field[@name='throwable']" name="managedName">GetThrowable</attr> |
| 66 | + <remove-node path="/api/package[@name='io.sentry.exception']/class[@name='SentryEnvelopeException']" /> |
| 67 | + <remove-node path="/api/package[@name='io.sentry.vendor.gson.stream']/class[@name='MalformedJsonException']" /> |
50 | 68 | </metadata> |
0 commit comments