Skip to content

Commit e6440c0

Browse files
committed
[Mono.Android] Bind java.time and java.time.chrono packages.
1 parent 06224f3 commit e6440c0

File tree

7 files changed

+1545
-4
lines changed

7 files changed

+1545
-4
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#if ANDROID_26
2+
using System;
3+
using Android.Runtime;
4+
using Java.Time.Chrono;
5+
6+
namespace Java.Time.Chrono
7+
{
8+
public abstract partial class AbstractChronology
9+
{
10+
public int CompareTo (Java.Lang.Object obj) => CompareTo (obj.JavaCast<IChronology> ());
11+
}
12+
}
13+
#endif
14+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#if ANDROID_26
2+
using System;
3+
using Android.Runtime;
4+
using Java.Time.Chrono;
5+
6+
namespace Java.Time
7+
{
8+
public sealed partial class LocalDate
9+
{
10+
public int CompareTo (Java.Lang.Object obj) => CompareTo (obj.JavaCast<IChronoLocalDate> ());
11+
}
12+
}
13+
#endif
14+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#if ANDROID_26
2+
using System;
3+
using Android.Runtime;
4+
using Java.Time.Chrono;
5+
6+
namespace Java.Time
7+
{
8+
public sealed partial class LocalDateTime
9+
{
10+
public int CompareTo (Java.Lang.Object obj) => CompareTo (obj.JavaCast<IChronoLocalDateTime> ());
11+
}
12+
}
13+
#endif
14+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#if ANDROID_26
2+
using System;
3+
using Android.Runtime;
4+
using Java.Time.Chrono;
5+
6+
namespace Java.Time
7+
{
8+
public sealed partial class ZonedDateTime
9+
{
10+
public int CompareTo (Java.Lang.Object obj) => (this as IChronoZonedDateTime).CompareTo (obj.JavaCast<IChronoZonedDateTime> ());
11+
}
12+
}
13+
#endif
14+

src/Mono.Android/Mono.Android.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@
9292
<Compile Include="Android.Telecom\InCallService.cs" />
9393
<Compile Include="Android.Views\WindowManagerLayoutParams.cs" />
9494
<Compile Include="Java.Lang.Invoke\MethodType.cs" />
95+
<Compile Include="Java.Time.Chrono\AbstractChronology.cs" />
96+
<Compile Include="Java.Time\ZonedDateTime.cs" />
97+
<Compile Include="Java.Time\LocalDateTime.cs" />
98+
<Compile Include="Java.Time\LocalDate.cs" />
9599
</ItemGroup>
96100

97101
<Import Project="..\Xamarin.Android.NamingCustomAttributes\Xamarin.Android.NamingCustomAttributes.projitems" Label="Shared" Condition="Exists('..\Xamarin.Android.NamingCustomAttributes\Xamarin.Android.NamingCustomAttributes.projitems')" />

src/Mono.Android/PublicAPI/API-34/PublicAPI.Unshipped.txt

Lines changed: 1419 additions & 1 deletion
Large diffs are not rendered by default.

src/Mono.Android/metadata

Lines changed: 66 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1337,9 +1337,72 @@
13371337
(It's all Xamarin's fault to have introduced enumification, after all. -->
13381338
<attr path="/api/package[@name='android.media']/class[@name='AudioFocusRequest']" name="managedName" api-since="26">AudioFocusRequestClass</attr>
13391339

1340-
<!-- FIXME: fix build and enable these packages -->
1341-
<remove-node path="/api/package[@name='java.time']" api-since="26" />
1342-
<remove-node path="/api/package[@name='java.time.chrono']" api-since="26" />
1340+
<!-- Lots of covariant and override fixes needed to get these classes to build -->
1341+
<remove-node path="/api/package[@name='java.time.chrono']/class[@name='HijrahChronology']" api-since="26" />
1342+
<remove-node path="/api/package[@name='java.time.chrono']/class[@name='HijrahDate']" api-since="26" />
1343+
<remove-node path="/api/package[@name='java.time.chrono']/class[@name='JapaneseChronology']" api-since="26" />
1344+
<remove-node path="/api/package[@name='java.time.chrono']/class[@name='JapaneseDate']" api-since="26" />
1345+
<remove-node path="/api/package[@name='java.time.chrono']/class[@name='MinguoChronology']" api-since="26" />
1346+
<remove-node path="/api/package[@name='java.time.chrono']/class[@name='MinguoDate']" api-since="26" />
1347+
<remove-node path="/api/package[@name='java.time.chrono']/class[@name='ThaiBuddhistChronology']" api-since="26" />
1348+
<remove-node path="/api/package[@name='java.time.chrono']/class[@name='ThaiBuddhistDate']" api-since="26" />
1349+
1350+
<!-- java.time types make heavy use of covariant return types that require extensive fixing -->
1351+
<attr path="/api/package[@name='java.time']/class[@name='Instant']/method[@name='plus' and count(parameter)=2 and parameter[1][@type='long'] and parameter[2][@type='java.time.temporal.TemporalUnit']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1352+
<attr path="/api/package[@name='java.time']/class[@name='Instant']/method[@name='with' and count(parameter)=2 and parameter[1][@type='java.time.temporal.TemporalField'] and parameter[2][@type='long']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1353+
<attr path="/api/package[@name='java.time']/class[@name='LocalDate']/method[@name='plus' and count(parameter)=2 and parameter[1][@type='long'] and parameter[2][@type='java.time.temporal.TemporalUnit']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1354+
<attr path="/api/package[@name='java.time']/class[@name='LocalDate']/method[@name='with' and count(parameter)=2 and parameter[1][@type='java.time.temporal.TemporalField'] and parameter[2][@type='long']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1355+
<attr path="/api/package[@name='java.time']/class[@name='LocalDateTime']/method[@name='plus' and count(parameter)=2 and parameter[1][@type='long'] and parameter[2][@type='java.time.temporal.TemporalUnit']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1356+
<attr path="/api/package[@name='java.time']/class[@name='LocalDateTime']/method[@name='with' and count(parameter)=2 and parameter[1][@type='java.time.temporal.TemporalField'] and parameter[2][@type='long']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1357+
<attr path="/api/package[@name='java.time']/class[@name='LocalTime']/method[@name='plus' and count(parameter)=2 and parameter[1][@type='long'] and parameter[2][@type='java.time.temporal.TemporalUnit']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1358+
<attr path="/api/package[@name='java.time']/class[@name='LocalTime']/method[@name='with' and count(parameter)=2 and parameter[1][@type='java.time.temporal.TemporalField'] and parameter[2][@type='long']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1359+
<attr path="/api/package[@name='java.time']/class[@name='OffsetDateTime']/method[@name='plus' and count(parameter)=2 and parameter[1][@type='long'] and parameter[2][@type='java.time.temporal.TemporalUnit']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1360+
<attr path="/api/package[@name='java.time']/class[@name='OffsetDateTime']/method[@name='with' and count(parameter)=2 and parameter[1][@type='java.time.temporal.TemporalField'] and parameter[2][@type='long']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1361+
<attr path="/api/package[@name='java.time']/class[@name='OffsetTime']/method[@name='plus' and count(parameter)=2 and parameter[1][@type='long'] and parameter[2][@type='java.time.temporal.TemporalUnit']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1362+
<attr path="/api/package[@name='java.time']/class[@name='OffsetTime']/method[@name='with' and count(parameter)=2 and parameter[1][@type='java.time.temporal.TemporalField'] and parameter[2][@type='long']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1363+
<attr path="/api/package[@name='java.time']/class[@name='Year']/method[@name='plus' and count(parameter)=2 and parameter[1][@type='long'] and parameter[2][@type='java.time.temporal.TemporalUnit']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1364+
<attr path="/api/package[@name='java.time']/class[@name='Year']/method[@name='with' and count(parameter)=2 and parameter[1][@type='java.time.temporal.TemporalField'] and parameter[2][@type='long']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1365+
<attr path="/api/package[@name='java.time']/class[@name='YearMonth']/method[@name='plus' and count(parameter)=2 and parameter[1][@type='long'] and parameter[2][@type='java.time.temporal.TemporalUnit']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1366+
<attr path="/api/package[@name='java.time']/class[@name='YearMonth']/method[@name='with' and count(parameter)=2 and parameter[1][@type='java.time.temporal.TemporalField'] and parameter[2][@type='long']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1367+
<attr path="/api/package[@name='java.time']/class[@name='ZonedDateTime']/method[@name='plus' and count(parameter)=2 and parameter[1][@type='long'] and parameter[2][@type='java.time.temporal.TemporalUnit']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1368+
<attr path="/api/package[@name='java.time']/class[@name='ZonedDateTime']/method[@name='with' and count(parameter)=2 and parameter[1][@type='java.time.temporal.TemporalField'] and parameter[2][@type='long']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1369+
1370+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoLocalDate']/method[@name='minus' and count(parameter)=1 and parameter[1][@type='java.time.temporal.TemporalAmount']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1371+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoLocalDate']/method[@name='minus' and count(parameter)=2 and parameter[1][@type='long'] and parameter[2][@type='java.time.temporal.TemporalUnit']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1372+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoLocalDate']/method[@name='plus' and count(parameter)=1 and parameter[1][@type='java.time.temporal.TemporalAmount']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1373+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoLocalDate']/method[@name='plus' and count(parameter)=2 and parameter[1][@type='long'] and parameter[2][@type='java.time.temporal.TemporalUnit']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1374+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoLocalDate']/method[@name='with' and count(parameter)=1 and parameter[1][@type='java.time.temporal.TemporalAdjuster']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1375+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoLocalDate']/method[@name='with' and count(parameter)=2 and parameter[1][@type='java.time.temporal.TemporalField'] and parameter[2][@type='long']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1376+
1377+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoLocalDateTime']/method[@name='minus' and count(parameter)=1 and parameter[1][@type='java.time.temporal.TemporalAmount']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1378+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoLocalDateTime']/method[@name='minus' and count(parameter)=2 and parameter[1][@type='long'] and parameter[2][@type='java.time.temporal.TemporalUnit']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1379+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoLocalDateTime']/method[@name='plus' and count(parameter)=1 and parameter[1][@type='java.time.temporal.TemporalAmount']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1380+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoLocalDateTime']/method[@name='plus' and count(parameter)=2 and parameter[1][@type='long'] and parameter[2][@type='java.time.temporal.TemporalUnit']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1381+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoLocalDateTime']/method[@name='with' and count(parameter)=1 and parameter[1][@type='java.time.temporal.TemporalAdjuster']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1382+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoLocalDateTime']/method[@name='with' and count(parameter)=2 and parameter[1][@type='java.time.temporal.TemporalField'] and parameter[2][@type='long']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1383+
1384+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoZonedDateTime']/method[@name='minus' and count(parameter)=1 and parameter[1][@type='java.time.temporal.TemporalAmount']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1385+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoZonedDateTime']/method[@name='minus' and count(parameter)=2 and parameter[1][@type='long'] and parameter[2][@type='java.time.temporal.TemporalUnit']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1386+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoZonedDateTime']/method[@name='plus' and count(parameter)=1 and parameter[1][@type='java.time.temporal.TemporalAmount']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1387+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoZonedDateTime']/method[@name='plus' and count(parameter)=2 and parameter[1][@type='long'] and parameter[2][@type='java.time.temporal.TemporalUnit']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1388+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoZonedDateTime']/method[@name='with' and count(parameter)=1 and parameter[1][@type='java.time.temporal.TemporalAdjuster']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1389+
<attr path="/api/package[@name='java.time.chrono']/interface[@name='ChronoZonedDateTime']/method[@name='with' and count(parameter)=2 and parameter[1][@type='java.time.temporal.TemporalField'] and parameter[2][@type='long']]" name="managedReturn" api-since="26">Java.Time.Temporal.ITemporal</attr>
1390+
1391+
<attr path="/api/package[@name='java.time.chrono']/class[@name='IsoChronology']/method[@name='dateEpochDay' and count(parameter)=1 and parameter[1][@type='long']]" name="managedOverride" api-since="26">override</attr>
1392+
<attr path="/api/package[@name='java.time.chrono']/class[@name='IsoChronology']/method[@name='dateYearDay' and count(parameter)=2 and parameter[1][@type='int'] and parameter[2][@type='int']]" name="managedOverride" api-since="26">override</attr>
1393+
<attr path="/api/package[@name='java.time.chrono']/class[@name='IsoChronology']/method[@name='eraOf' and count(parameter)=1 and parameter[1][@type='int']]" name="managedOverride" api-since="26">override</attr>
1394+
<attr path="/api/package[@name='java.time.chrono']/class[@name='IsoChronology']/method[@name='date' and count(parameter)=3 and parameter[1][@type='int'] and parameter[2][@type='int'] and parameter[3][@type='int']]" name="managedOverride" api-since="26">override</attr>
1395+
<attr path="/api/package[@name='java.time.chrono']/class[@name='IsoChronology']/method[@name='date' and count(parameter)=1 and parameter[1][@type='java.time.temporal.TemporalAccessor']]" name="managedOverride" api-since="26">override</attr>
1396+
<attr path="/api/package[@name='java.time.chrono']/class[@name='IsoChronology']/method[@name='epochSecond' and count(parameter)=7 and parameter[1][@type='int'] and parameter[2][@type='int'] and parameter[3][@type='int'] and parameter[4][@type='int'] and parameter[5][@type='int'] and parameter[6][@type='int'] and parameter[7][@type='java.time.ZoneOffset']]" name="managedOverride" api-since="34">none</attr>
1397+
1398+
<attr path="/api/package[@name='java.time']/class[@name='LocalDate']/method[@name='getChronology' and count(parameter)=0]" name="managedReturn" api-since="26">Java.Time.Chrono.IChronology</attr>
1399+
<attr path="/api/package[@name='java.time']/class[@name='LocalDate']/method[@name='until' and count(parameter)=1 and parameter[1][@type='java.time.chrono.ChronoLocalDate']]" name="managedReturn" api-since="26">Java.Time.Chrono.IChronoPeriod</attr>
1400+
1401+
<attr path="/api/package[@name='java.time']/class[@name='Period']/method[@name='getChronology' and count(parameter)=0]" name="managedReturn" api-since="26">Java.Time.Chrono.IChronology</attr>
1402+
<attr path="/api/package[@name='java.time']/class[@name='Period']/method[@name='minus' and count(parameter)=1 and parameter[1][@type='java.time.temporal.TemporalAmount']]" name="managedReturn" api-since="26">Java.Time.Chrono.IChronoPeriod</attr>
1403+
<attr path="/api/package[@name='java.time']/class[@name='Period']/method[@name='multipliedBy' and count(parameter)=1 and parameter[1][@type='int']]" name="managedReturn" api-since="26">Java.Time.Chrono.IChronoPeriod</attr>
1404+
<attr path="/api/package[@name='java.time']/class[@name='Period']/method[@name='normalized' and count(parameter)=0]" name="managedReturn" api-since="26">Java.Time.Chrono.IChronoPeriod</attr>
1405+
<attr path="/api/package[@name='java.time']/class[@name='Period']/method[@name='plus' and count(parameter)=1 and parameter[1][@type='java.time.temporal.TemporalAmount']]" name="managedReturn" api-since="26">Java.Time.Chrono.IChronoPeriod</attr>
13431406

13441407
<!-- FIXME: fix build and enable this method -->
13451408
<remove-node path="/api/package[@name='android.text']/class[@name='TextUtils']/method[@name='listEllipsize']" api-since="26" />

0 commit comments

Comments
 (0)