Skip to content
This repository was archived by the owner on Jun 20, 2023. It is now read-only.

Commit 7600905

Browse files
committed
WorkManager bindings!
1 parent 2bd202f commit 7600905

File tree

7 files changed

+276
-0
lines changed

7 files changed

+276
-0
lines changed

config.json

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,42 @@
7878
"nugetVersion" : "1.1.1.1",
7979
"nugetId" : "Xamarin.Android.Arch.Lifecycle.ViewModel"
8080
},
81+
{
82+
"groupId" : "android.arch.persistence.room",
83+
"artifactId" : "common",
84+
"version" : "1.1.1",
85+
"nugetVersion" : "1.1.1.1",
86+
"nugetId" : "Xamarin.Android.Arch.Persistence.Room.Common"
87+
},
88+
{
89+
"groupId" : "android.arch.persistence.room",
90+
"artifactId" : "runtime",
91+
"version" : "1.1.1",
92+
"nugetVersion" : "1.1.1.1",
93+
"nugetId" : "Xamarin.Android.Arch.Persistence.Room.Runtime"
94+
},
95+
{
96+
"groupId" : "android.arch.persistence",
97+
"artifactId" : "db",
98+
"version" : "1.1.1",
99+
"nugetVersion" : "1.1.1.1",
100+
"nugetId" : "Xamarin.Android.Arch.Persistence.Db"
101+
},
102+
{
103+
"groupId" : "android.arch.persistence",
104+
"artifactId" : "db-framework",
105+
"version" : "1.1.1",
106+
"nugetVersion" : "1.1.1.1",
107+
"nugetId" : "Xamarin.Android.Arch.Persistence.Db.Framework"
108+
},
109+
{
110+
"groupId" : "android.arch.work",
111+
"artifactId" : "work-runtime",
112+
"version" : "1.0.0",
113+
"nugetVersion" : "1.0.0",
114+
"nugetId" : "Xamarin.Android.Arch.Work.Runtime"
115+
},
116+
81117

82118

83119
{
@@ -464,6 +500,28 @@
464500
"version" : "1.1.0",
465501
"nugetId" : "Xamarin.Android.Support.Constraint.Layout.Solver",
466502
"dependencyOnly" : true
503+
},
504+
{
505+
"groupId" : "com.google.guava",
506+
"artifactId" : "guava",
507+
"version" : "27.1.0",
508+
"nugetId" : "Xamarin.Google.Guava",
509+
"dependencyOnly" : true
510+
},
511+
{
512+
"groupId" : "com.google.guava",
513+
"artifactId" : "failureaccess",
514+
"version" : "1.0.1",
515+
"nugetId" : "Xamarin.Google.Guava.FailureAccess",
516+
"dependencyOnly" : true
517+
},
518+
{
519+
"groupId" : "com.google.guava",
520+
"artifactId" : "listenablefuture",
521+
"version" : "1.0",
522+
"nugetId" : "Xamarin.Google.Guava.ListenableFuture",
523+
"nugetVersion" : "1.0",
524+
"dependencyOnly" : true
467525
}
468526
]
469527
}]
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<metadata>
3+
<attr path="/api/package[@name='android.arch.persistence.room']" name="managedName">Android.Arch.Persistence.Room</attr>
4+
</metadata>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<metadata>
3+
<attr path="/api/package[@name='android.arch.persistence.room']" name="managedName">Android.Arch.Persistence.Room</attr>
4+
<attr path="/api/package[@name='android.arch.persistence.room.migration']" name="managedName">Android.Arch.Persistence.Room.Migration</attr>
5+
<attr path="/api/package[@name='android.arch.persistence.room.paging']" name="managedName">Android.Arch.Persistence.Room.Paging</attr>
6+
<attr path="/api/package[@name='android.arch.persistence.room.util']" name="managedName">Android.Arch.Persistence.Room.Util</attr>
7+
8+
<remove-node path="/api/package[@name='android.arch.persistence.room']/class[@name='EntityDeletionOrUpdateAdapter']/method[@name='createQuery' and count(parameter)=0]" />
9+
10+
<remove-node path="/api/package[@name='android.arch.persistence.room.util']/class[@name='TableInfo.ForeignKeyWithSequence']/implements" />
11+
12+
<attr path="/api/package[@name='android.arch.persistence.room']/class[@name='RoomOpenHelper.Delegate']" name="managedName">HelperDelegate</attr>
13+
</metadata>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<metadata>
3+
<attr path="/api/package[@name='android.arch.persistence.db.framework']" name="managedName">Android.Arch.Persistence.Db.Framework</attr>
4+
</metadata>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<metadata>
3+
<attr path="/api/package[@name='android.arch.persistence.db']" name="managedName">Android.Arch.Persistence.Db</attr>
4+
</metadata>
Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
using Android.Content;
2+
using Android.Runtime;
3+
using Java.Util.Concurrent;
4+
using System;
5+
using System.Collections.Generic;
6+
using System.Linq;
7+
using System.Text;
8+
using System.Threading.Tasks;
9+
10+
namespace AndroidX.Work
11+
{
12+
public partial class OneTimeWorkRequest
13+
{
14+
15+
public static OneTimeWorkRequest From<TWorker>() where TWorker : AndroidX.Work.Worker
16+
=> From(typeof(TWorker));
17+
18+
public static OneTimeWorkRequest From(Type type)
19+
=> From(Java.Lang.Class.FromType(type));
20+
21+
public partial class Builder
22+
{
23+
public Builder(Type type)
24+
: this(Java.Lang.Class.FromType(type))
25+
{
26+
}
27+
28+
public static Builder From<TWorker>() where TWorker : AndroidX.Work.Worker
29+
=> new Builder(Java.Lang.Class.FromType(typeof(TWorker)));
30+
31+
// The base type returns a WorkRequest.Builder and we want it to return OneTimeWorkRequest.Builder instead
32+
#region Base Builder New Implementations
33+
public new OneTimeWorkRequest Build()
34+
=> base.Build().JavaCast<OneTimeWorkRequest>();
35+
36+
public new Builder AddTag(string tag)
37+
=> base.AddTag(tag).JavaCast<Builder>();
38+
39+
public new Builder KeepResultsForAtLeast(long duration, TimeUnit timeUnit)
40+
=> base.KeepResultsForAtLeast(duration, timeUnit).JavaCast<Builder>();
41+
42+
public Builder KeepResultsForAtLeast(TimeSpan duration)
43+
=> base.KeepResultsForAtLeast((long)duration.TotalMilliseconds, TimeUnit.Milliseconds).JavaCast<Builder>();
44+
45+
46+
public new Builder SetBackoffCriteria(BackoffPolicy policy, long backoffDelay, TimeUnit timeUnit)
47+
=> base.SetBackoffCriteria(policy, backoffDelay, timeUnit).JavaCast<Builder>();
48+
49+
public Builder SetBackoffCriteria(BackoffPolicy policy, TimeSpan backoffDelay)
50+
=> base.SetBackoffCriteria(policy, (long)backoffDelay.TotalMilliseconds, TimeUnit.Milliseconds).JavaCast<Builder>();
51+
52+
public new Builder SetConstraints(Constraints constraints)
53+
=> base.SetConstraints(constraints).JavaCast<Builder>();
54+
55+
public new Builder SetInitialRunAttemptCount(int runAttemptCount)
56+
=> base.SetInitialRunAttemptCount(runAttemptCount).JavaCast<Builder>();
57+
58+
public new Builder SetInitialState(WorkInfo.State state)
59+
=> base.SetInitialState(state).JavaCast<Builder>();
60+
61+
public new Builder SetInputData(Data data)
62+
=> base.SetInputData(data).JavaCast<Builder>();
63+
64+
public new Builder SetPeriodStartTime(long periodStartTime, TimeUnit timeUnit)
65+
=> base.SetPeriodStartTime(periodStartTime, timeUnit).JavaCast<Builder>();
66+
67+
public Builder SetPeriodStartTime(TimeSpan periodStartTime)
68+
=> base.SetPeriodStartTime((long)periodStartTime.TotalMilliseconds, TimeUnit.Milliseconds).JavaCast<Builder>();
69+
70+
public new Builder SetScheduleRequestedAt(long scheduleRequestedAt, TimeUnit timeUnit)
71+
=> base.SetPeriodStartTime(scheduleRequestedAt, timeUnit).JavaCast<Builder>();
72+
73+
public Builder SetScheduleRequestedAt(TimeSpan scheduleRequestedAt)
74+
=> base.SetPeriodStartTime((long)scheduleRequestedAt.TotalMilliseconds, TimeUnit.Milliseconds).JavaCast<Builder>();
75+
#endregion
76+
}
77+
}
78+
79+
public partial class PeriodicWorkRequest
80+
{
81+
public partial class Builder
82+
{
83+
public Builder(Type type, long repeatInterval, TimeUnit repeatIntervalTimeUnit)
84+
: this(Java.Lang.Class.FromType(type), repeatInterval, repeatIntervalTimeUnit)
85+
{ }
86+
87+
public Builder(Type type, long repeatInterval, TimeUnit repeatIntervalTimeUnit, long flexInterval, TimeUnit flexIntervalTimeUnit)
88+
: this(Java.Lang.Class.FromType(type), repeatInterval, repeatIntervalTimeUnit, flexInterval, flexIntervalTimeUnit)
89+
{ }
90+
91+
public Builder(Type type, TimeSpan repeatInterval)
92+
: this(Java.Lang.Class.FromType(type), (long)repeatInterval.TotalMilliseconds, TimeUnit.Milliseconds)
93+
{ }
94+
95+
public Builder(Type type, TimeSpan repeatInterval, TimeSpan flexInterval)
96+
: this(Java.Lang.Class.FromType(type), (long)repeatInterval.TotalMilliseconds, TimeUnit.Milliseconds, (long)flexInterval.TotalMilliseconds, TimeUnit.Milliseconds)
97+
{ }
98+
99+
public static Builder From<TWorker>(long repeatInterval, TimeUnit repeatIntervalTimeUnit) where TWorker : AndroidX.Work.Worker
100+
=> new Builder(typeof(TWorker), repeatInterval, repeatIntervalTimeUnit);
101+
102+
public static Builder From<TWorker>(TimeSpan repeatInterval) where TWorker : AndroidX.Work.Worker
103+
=> new Builder(typeof(TWorker), (long)repeatInterval.TotalMilliseconds, TimeUnit.Milliseconds);
104+
105+
public static Builder From<TWorker>(long repeatInterval, TimeUnit repeatIntervalTimeUnit, long flexInterval, TimeUnit flexIntervalTimeUnit) where TWorker : AndroidX.Work.Worker
106+
=> new Builder(typeof(TWorker), repeatInterval, repeatIntervalTimeUnit, flexInterval, flexIntervalTimeUnit);
107+
108+
public static Builder From<TWorker>(TimeSpan repeatInterval, TimeSpan flexInterval) where TWorker : AndroidX.Work.Worker
109+
=> new Builder(typeof(TWorker), (long)repeatInterval.TotalMilliseconds, TimeUnit.Milliseconds, (long)flexInterval.TotalMilliseconds, TimeUnit.Milliseconds);
110+
111+
// The base type returns a WorkRequest.Builder and we want it to return PeriodicWorkRequest.Builder instead
112+
#region Base Builder New Implementations
113+
public new PeriodicWorkRequest Build()
114+
=> base.Build().JavaCast<PeriodicWorkRequest>();
115+
116+
public new Builder AddTag(string tag)
117+
=> base.AddTag(tag).JavaCast<Builder>();
118+
119+
public new Builder KeepResultsForAtLeast(long duration, TimeUnit timeUnit)
120+
=> base.KeepResultsForAtLeast(duration, timeUnit).JavaCast<Builder>();
121+
122+
public Builder KeepResultsForAtLeast(TimeSpan duration)
123+
=> base.KeepResultsForAtLeast((long)duration.TotalMilliseconds, TimeUnit.Milliseconds).JavaCast<Builder>();
124+
125+
126+
public new Builder SetBackoffCriteria(BackoffPolicy policy, long backoffDelay, TimeUnit timeUnit)
127+
=> base.SetBackoffCriteria(policy, backoffDelay, timeUnit).JavaCast<Builder>();
128+
129+
public Builder SetBackoffCriteria(BackoffPolicy policy, TimeSpan backoffDelay)
130+
=> base.SetBackoffCriteria(policy, (long)backoffDelay.TotalMilliseconds, TimeUnit.Milliseconds).JavaCast<Builder>();
131+
132+
public new Builder SetConstraints(Constraints constraints)
133+
=> base.SetConstraints(constraints).JavaCast<Builder>();
134+
135+
public new Builder SetInitialRunAttemptCount(int runAttemptCount)
136+
=> base.SetInitialRunAttemptCount(runAttemptCount).JavaCast<Builder>();
137+
138+
public new Builder SetInitialState(WorkInfo.State state)
139+
=> base.SetInitialState(state).JavaCast<Builder>();
140+
141+
public new Builder SetInputData(Data data)
142+
=> base.SetInputData(data).JavaCast<Builder>();
143+
144+
public new Builder SetPeriodStartTime(long periodStartTime, TimeUnit timeUnit)
145+
=> base.SetPeriodStartTime(periodStartTime, timeUnit).JavaCast<Builder>();
146+
147+
public Builder SetPeriodStartTime(TimeSpan periodStartTime)
148+
=> base.SetPeriodStartTime((long)periodStartTime.TotalMilliseconds, TimeUnit.Milliseconds).JavaCast<Builder>();
149+
150+
public new Builder SetScheduleRequestedAt(long scheduleRequestedAt, TimeUnit timeUnit)
151+
=> base.SetPeriodStartTime(scheduleRequestedAt, timeUnit).JavaCast<Builder>();
152+
153+
public Builder SetScheduleRequestedAt(TimeSpan scheduleRequestedAt)
154+
=> base.SetPeriodStartTime((long)scheduleRequestedAt.TotalMilliseconds, TimeUnit.Milliseconds).JavaCast<Builder>();
155+
#endregion
156+
157+
}
158+
}
159+
160+
public partial class Constraints
161+
{
162+
public partial class Builder
163+
{
164+
public Builder AddContentUriTrigger(System.Uri uri, bool triggerForDescendants)
165+
=> this.AddContentUriTrigger(Android.Net.Uri.Parse(uri.OriginalString), triggerForDescendants).JavaCast<Builder>();
166+
167+
168+
public Builder SetTriggerContentMaxDelay(TimeSpan duration)
169+
=> this.SetTriggerContentMaxDelay((long)duration.TotalMilliseconds, TimeUnit.Milliseconds).JavaCast<Builder>();
170+
171+
public Builder SetTriggerContentUpdateDelay(TimeSpan duration)
172+
=> this.SetTriggerContentUpdateDelay((long)duration.TotalMilliseconds, TimeUnit.Milliseconds).JavaCast<Builder>();
173+
174+
}
175+
}
176+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
<metadata>
3+
<attr path="/api/package[@name='androidx.work']" name="managedName">AndroidX.Work</attr>
4+
5+
<remove-node path="/api/package[contains(@name,'androidx.work.impl')]" />
6+
7+
<attr path="/api/package[@name='androidx.work']/class[@name='WorkRequest.Builder']/method[@name='build']" name="return">androidx.work.WorkRequest</attr>
8+
<attr path="/api/package[@name='androidx.work']/class[@name='WorkRequest.Builder']/method[@name='addTag']" name="return">androidx.work.WorkRequest.Builder</attr>
9+
<attr path="/api/package[@name='androidx.work']/class[@name='WorkRequest.Builder']/method[@name='keepResultsForAtLeast']" name="return">androidx.work.WorkRequest.Builder</attr>
10+
<attr path="/api/package[@name='androidx.work']/class[@name='WorkRequest.Builder']/method[@name='setBackoffCriteria']" name="return">androidx.work.WorkRequest.Builder</attr>
11+
<attr path="/api/package[@name='androidx.work']/class[@name='WorkRequest.Builder']/method[@name='setConstraints']" name="return">androidx.work.WorkRequest.Builder</attr>
12+
<attr path="/api/package[@name='androidx.work']/class[@name='WorkRequest.Builder']/method[@name='setInitialRunAttemptCount']" name="return">androidx.work.WorkRequest.Builder</attr>
13+
<attr path="/api/package[@name='androidx.work']/class[@name='WorkRequest.Builder']/method[@name='setInitialState']" name="return">androidx.work.WorkRequest.Builder</attr>
14+
<attr path="/api/package[@name='androidx.work']/class[@name='WorkRequest.Builder']/method[@name='setInputData']" name="return">androidx.work.WorkRequest.Builder</attr>
15+
<attr path="/api/package[@name='androidx.work']/class[@name='WorkRequest.Builder']/method[@name='setPeriodStartTime']" name="return">androidx.work.WorkRequest.Builder</attr>
16+
<attr path="/api/package[@name='androidx.work']/class[@name='WorkRequest.Builder']/method[@name='setScheduleRequestedAt']" name="return">androidx.work.WorkRequest.Builder</attr>
17+
</metadata>

0 commit comments

Comments
 (0)