Skip to content

Commit 931bbdd

Browse files
committed
MERGE PREP: Renamed "ResourceProvider" to "ResourceSet".
"Cherry-picked" (manually) from branch "redesign" (the first such branch).
1 parent ae4f3d4 commit 931bbdd

29 files changed

+270
-277
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ The Crud API supports data-oriented interactions based on generic _Resources_, w
1212

1313
API Overview
1414
------------
15-
There are two primary abstractions in the API: `Resources` and `ResourceProviders`. The former encapsulate the I/O operations on state, and hence uses a reactive style. There are two interfaces derived from [Resource](https://github.com/rickbw/crud-api/blob/master/src/main/java/rickbw/crud/core/Resource.java):
15+
There are two primary abstractions in the API: `Resources` and `ResourceSets`. The former encapsulate the I/O operations on state, and hence uses a reactive style. There are two interfaces derived from [Resource](https://github.com/rickbw/crud-api/blob/master/src/main/java/rickbw/crud/core/Resource.java):
1616
* [ReadableResource](https://github.com/rickbw/crud-api/blob/master/src/main/java/rickbw/crud/core/ReadableResource.java)
1717
* [WritableResource](https://github.com/rickbw/crud-api/blob/master/src/main/java/rickbw/crud/core/WritableResource.java)
1818

19-
The latter abstraction, `ResourceProvider`, provides local (i.e. assumed-cheap) navigation among `Resources`. This navigation uses a key-value lookup idiom, where keys are generic and may be simple—e.g. a URL—or arbitrarily complex—e.g. a database query—depending on the underlying data-access technology. There are two derived [ResourceProvider](https://github.com/rickbw/crud-api/blob/master/src/main/java/rickbw/crud/core/ResourceProvider.java) interfaces:
20-
* [ReadableResourceProvider](https://github.com/rickbw/crud-api/blob/master/src/main/java/rickbw/crud/core/ReadableResourceProvider.java)
21-
* [WritableResourceProvider](https://github.com/rickbw/crud-api/blob/master/src/main/java/rickbw/crud/core/WritableResourceProvider.java)
19+
The latter abstraction, `ResourceSet`, provides local (i.e. assumed-cheap) navigation among `Resources`. This navigation uses a key-value lookup idiom, where keys are generic and may be simple—e.g. a URL—or arbitrarily complex—e.g. a database query—depending on the underlying data-access technology. There are two derived [ResourceSet](https://github.com/rickbw/crud-api/blob/master/src/main/java/rickbw/crud/core/ResourceSet.java) interfaces:
20+
* [ReadableResourceSet](https://github.com/rickbw/crud-api/blob/master/src/main/java/rickbw/crud/core/ReadableResourceSet.java)
21+
* [WritableResourceSet](https://github.com/rickbw/crud-api/blob/master/src/main/java/rickbw/crud/core/WritableResourceSet.java)
2222

2323

2424
See Also

src/main/java/crud/core/ReadableResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
* @param <RSRC> The type of the resource's value(s).
2828
*
2929
* @see WritableResource
30-
* @see ReadableResourceProvider
30+
* @see ReadableResourceSet
3131
*/
3232
public interface ReadableResource<RSRC> extends Resource {
3333

src/main/java/crud/core/ReadableResourceProvider.java renamed to src/main/java/crud/core/ReadableResourceSet.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
/**
1919
* Look up a {@link ReadableResource} based on a given key.
2020
*
21-
* @see WritableResourceProvider
21+
* @see WritableResourceSet
2222
* @see ReadableResource
2323
*/
24-
public interface ReadableResourceProvider<KEY, RSRC> extends ResourceProvider<KEY> {
24+
public interface ReadableResourceSet<KEY, RSRC> extends ResourceSet<KEY> {
2525

2626
@Override
2727
public abstract ReadableResource<RSRC> get(KEY key);

src/main/java/crud/core/ResourceProvider.java renamed to src/main/java/crud/core/ResourceSet.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Copyright 2013–2014 Rick Warren
1+
/* Copyright 2013–2015 Rick Warren
22
*
33
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
44
* use this file except in compliance with the License. You may obtain a copy of
@@ -21,10 +21,10 @@
2121
* return resources that implement multiple interfaces (e.g. that are both a
2222
* {@link ReadableResource} and a {@link WritableResource}) can extend
2323
* multiple sub-interfaces of this interface (e.g. both
24-
* {@link ReadableResourceProvider} and {@link WritableResourceProvider}) by
24+
* {@link ReadableResourceSet} and {@link WritableResourceSet}) by
2525
* overriding the return type of {@link #get(Object)}.
2626
*/
27-
public interface ResourceProvider<KEY> {
27+
public interface ResourceSet<KEY> {
2828

2929
/**
3030
* Get the {@link Resource} associated with the given key. Resources
@@ -36,7 +36,7 @@ public interface ResourceProvider<KEY> {
3636
* Specifically, when dealing with remote and/or persistent Resources,
3737
* implementers should locate expensive operations -- such as transferring
3838
* data across a network -- within the Resource implementations
39-
* themselves, and leave the ResourceProviders to simply prepare the
39+
* themselves, and leave the ResourceSets to simply prepare the
4040
* necessary objects.
4141
*
4242
* @throws NullPointerException if the given key is null.

src/main/java/crud/core/WritableResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
* a result of the change in the value.
2626
*
2727
* @see ReadableResource
28-
* @see WritableResourceProvider
28+
* @see WritableResourceSet
2929
*/
3030
public interface WritableResource<RSRC, RESPONSE> extends Resource {
3131

src/main/java/crud/core/WritableResourceProvider.java renamed to src/main/java/crud/core/WritableResourceSet.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
/**
1919
* Look up a {@link WritableResource} based on a given key.
2020
*
21-
* @see ReadableResourceProvider
21+
* @see ReadableResourceSet
2222
* @see WritableResource
2323
*/
24-
public interface WritableResourceProvider<KEY, RSRC, RESPONSE> extends ResourceProvider<KEY> {
24+
public interface WritableResourceSet<KEY, RSRC, RESPONSE> extends ResourceSet<KEY> {
2525

2626
@Override
2727
public abstract WritableResource<RSRC, RESPONSE> get(KEY key);

src/main/java/crud/core/package-info.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,23 @@
2626
*
2727
* There are two primary abstractions in the API:
2828
* {@link crud.core.Resource}s and
29-
* {@link crud.core.ResourceProvider}s. The former encapsulates the
29+
* {@link crud.core.ResourceSet}s. The former encapsulates the
3030
* I/O operations on state, and hence uses a reactive style. There are two
3131
* derived interfaces:
3232
* <ul>
3333
* <li>{@link crud.core.ReadableResource}</li>
3434
* <li>{@link crud.core.WritableResource}</li>
3535
* </ul>
3636
*
37-
* The latter abstraction, the resource providers, provide local (i.e.
37+
* The latter abstraction, the resource sets, provide local (i.e.
3838
* assumed-cheap) navigation among Resources. This navigation uses a key-value
3939
* lookup idiom, where keys are generic and may be simple -- e.g. a URL -- or
4040
* arbitrarily complex -- e.g. a database query -- depending on the underlying
4141
* data-access technology. There are two derived
42-
* {@link crud.core.ResourceProvider} interfaces:
42+
* {@link crud.core.ResourceSet} interfaces:
4343
* <ul>
44-
* <li>{@link crud.core.ReadableResourceProvider}</li>
45-
* <li>{@link crud.core.WritableResourceProvider}</li>
44+
* <li>{@link crud.core.ReadableResourceSet}</li>
45+
* <li>{@link crud.core.WritableResourceSet}</li>
4646
* </ul>
4747
*
4848
* In addition to these core abstractions, this library provides a number of

src/main/java/crud/file/TextLineFileResource.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
import com.google.common.annotations.VisibleForTesting;
2626

2727
import crud.core.ReadableResource;
28-
import crud.core.ReadableResourceProvider;
28+
import crud.core.ReadableResourceSet;
2929
import crud.core.WritableResource;
30-
import crud.core.WritableResourceProvider;
30+
import crud.core.WritableResourceSet;
3131
import crud.util.BooleanSubscription;
3232
import rx.Observable;
3333
import rx.Observable.OnSubscribe;
@@ -43,8 +43,8 @@ public class TextLineFileResource
4343
private final File file;
4444

4545

46-
public static Provider provider() {
47-
return new Provider();
46+
public static Set set() {
47+
return new Set();
4848
}
4949

5050
@Override
@@ -95,14 +95,14 @@ public int hashCode() {
9595
}
9696

9797

98-
public static class Provider
99-
implements ReadableResourceProvider<File, String>, WritableResourceProvider<File, String, Void> {
98+
public static class Set
99+
implements ReadableResourceSet<File, String>, WritableResourceSet<File, String, Void> {
100100
@Override
101101
public TextLineFileResource get(final File file) {
102102
return new TextLineFileResource(file);
103103
}
104104

105-
private Provider() {
105+
private Set() {
106106
// instantiation via factory method only
107107
}
108108
}

src/main/java/crud/fluent/DelegateObjectMethods.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Copyright 2014 Rick Warren
1+
/* Copyright 2014–2015 Rick Warren
22
*
33
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
44
* use this file except in compliance with the License. You may obtain a copy of
@@ -17,15 +17,14 @@
1717
import java.util.Objects;
1818

1919
import crud.core.Resource;
20-
import crud.core.ResourceProvider;
21-
20+
import crud.core.ResourceSet;
2221
import rx.functions.Func0;
2322
import rx.functions.Func1;
2423

2524

2625
/**
2726
* A base class for {@link rx.functions.Function} facades around
28-
* {@link Resource}s and {@link ResourceProvider}s. It delegates the common
27+
* {@link Resource}s and {@link ResourceSet}s. It delegates the common
2928
* {@link Object} methods {@link #toString()}, {@link #equals(Object)}, and
3029
* {@link #hashCode()} to its delegate. Its concrete subclasses
3130
* {@link Function} and {@link Callable} pull in {@code call} methods.

src/main/java/crud/fluent/FluentReadableResourceProvider.java renamed to src/main/java/crud/fluent/FluentReadableResourceSet.java

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Copyright 2013–2014 Rick Warren
1+
/* Copyright 2013–2015 Rick Warren
22
*
33
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
44
* use this file except in compliance with the License. You may obtain a copy of
@@ -17,74 +17,73 @@
1717
import java.util.Objects;
1818

1919
import crud.core.ReadableResource;
20-
import crud.core.ReadableResourceProvider;
21-
20+
import crud.core.ReadableResourceSet;
2221
import rx.Observable;
2322
import rx.Observer;
2423
import rx.functions.Func1;
2524

2625

27-
public abstract class FluentReadableResourceProvider<KEY, RSRC>
28-
implements ReadableResourceProvider<KEY, RSRC> {
26+
public abstract class FluentReadableResourceSet<KEY, RSRC>
27+
implements ReadableResourceSet<KEY, RSRC> {
2928

30-
public static <KEY, RSRC> FluentReadableResourceProvider<KEY, RSRC> from(
31-
final ReadableResourceProvider<KEY, RSRC> provider) {
32-
if (provider instanceof FluentReadableResourceProvider<?, ?>) {
33-
return (FluentReadableResourceProvider<KEY, RSRC>) provider;
29+
public static <KEY, RSRC> FluentReadableResourceSet<KEY, RSRC> from(
30+
final ReadableResourceSet<KEY, RSRC> rsrcSet) {
31+
if (rsrcSet instanceof FluentReadableResourceSet<?, ?>) {
32+
return (FluentReadableResourceSet<KEY, RSRC>) rsrcSet;
3433
} else {
35-
return new FluentReadableResourceProvider<KEY, RSRC>() {
34+
return new FluentReadableResourceSet<KEY, RSRC>() {
3635
@Override
3736
public FluentReadableResource<RSRC> get(final KEY key) {
38-
return FluentReadableResource.from(provider.get(key));
37+
return FluentReadableResource.from(rsrcSet.get(key));
3938
}
4039
};
4140
}
4241
}
4342

44-
public <R> FluentReadableResourceProvider<KEY, R> mapValue(
43+
public <R> FluentReadableResourceSet<KEY, R> mapValue(
4544
final Func1<? super RSRC, ? extends R> mapper) {
4645
Objects.requireNonNull(mapper, "null function");
47-
final FluentReadableResourceProvider<KEY, R> result = new FluentReadableResourceProvider<KEY, R>() {
46+
final FluentReadableResourceSet<KEY, R> result = new FluentReadableResourceSet<KEY, R>() {
4847
@Override
4948
public FluentReadableResource<R> get(final KEY key) {
50-
return outerProvider()
49+
return outerResourceSet()
5150
.get(key)
5251
.mapValue(mapper);
5352
}
5453
};
5554
return result;
5655
}
5756

58-
public <R> FluentReadableResourceProvider<KEY, R> flatMapValue(
57+
public <R> FluentReadableResourceSet<KEY, R> flatMapValue(
5958
final Func1<? super RSRC, ? extends Observable<? extends R>> mapper) {
6059
Objects.requireNonNull(mapper, "null function");
61-
final FluentReadableResourceProvider<KEY, R> result = new FluentReadableResourceProvider<KEY, R>() {
60+
final FluentReadableResourceSet<KEY, R> result = new FluentReadableResourceSet<KEY, R>() {
6261
@Override
6362
public FluentReadableResource<R> get(final KEY key) {
64-
return outerProvider()
63+
return outerResourceSet()
6564
.get(key)
6665
.flatMapValue(mapper);
6766
}
6867
};
6968
return result;
7069
}
7170

72-
public <K> FluentReadableResourceProvider<K, RSRC> adaptKey(
71+
public <K> FluentReadableResourceSet<K, RSRC> adaptKey(
7372
final Func1<? super K, ? extends KEY> adapter) {
7473
Objects.requireNonNull(adapter, "null function");
75-
final FluentReadableResourceProvider<K, RSRC> result = new FluentReadableResourceProvider<K, RSRC>() {
74+
final FluentReadableResourceSet<K, RSRC> result = new FluentReadableResourceSet<K, RSRC>() {
7675
@Override
7776
public FluentReadableResource<RSRC> get(final K key) {
7877
Objects.requireNonNull(key, "null key");
7978
final KEY transformedKey = adapter.call(key);
80-
return outerProvider().get(transformedKey);
79+
return outerResourceSet().get(transformedKey);
8180
}
8281
};
8382
return result;
8483
}
8584

8685
/**
87-
* Return a resource provider, the resource from which will transparently
86+
* Return a resource set, the resource from which will transparently
8887
* retry calls to {@link ReadableResource#read()} that throw, as with
8988
* {@link Observable#retry(long)}. Specifically, any {@link Observable}
9089
* returned by {@link ReadableResource#read()} will re-subscribe up to
@@ -100,29 +99,29 @@ public FluentReadableResource<RSRC> get(final K key) {
10099
*
101100
* @param maxRetries number of retry attempts before failing
102101
*/
103-
public FluentReadableResourceProvider<KEY, RSRC> retry(final int maxRetries) {
102+
public FluentReadableResourceSet<KEY, RSRC> retry(final int maxRetries) {
104103
if (maxRetries == 0) {
105104
return this; // no-op
106105
} else if (maxRetries < 0) {
107106
throw new IllegalArgumentException("maxRetries " + maxRetries + " < 0");
108107
} else {
109-
return new FluentReadableResourceProvider<KEY, RSRC>() {
108+
return new FluentReadableResourceSet<KEY, RSRC>() {
110109
@Override
111110
public FluentReadableResource<RSRC> get(final KEY key) {
112-
return outerProvider()
111+
return outerResourceSet()
113112
.get(key)
114113
.retry(maxRetries);
115114
}
116115
};
117116
}
118117
}
119118

120-
public <TO> FluentReadableResourceProvider<KEY, TO> lift(final Observable.Operator<TO, RSRC> bind) {
119+
public <TO> FluentReadableResourceSet<KEY, TO> lift(final Observable.Operator<TO, RSRC> bind) {
121120
Objects.requireNonNull(bind, "null operator");
122-
return new FluentReadableResourceProvider<KEY, TO>() {
121+
return new FluentReadableResourceSet<KEY, TO>() {
123122
@Override
124123
public FluentReadableResource<TO> get(final KEY key) {
125-
return outerProvider()
124+
return outerResourceSet()
126125
.get(key)
127126
.lift(bind);
128127
}
@@ -141,7 +140,7 @@ public FluentReadableResource<RSRC> call(final KEY key) {
141140
@Override
142141
public abstract FluentReadableResource<RSRC> get(KEY key);
143142

144-
private FluentReadableResourceProvider<KEY, RSRC> outerProvider() {
143+
private FluentReadableResourceSet<KEY, RSRC> outerResourceSet() {
145144
return this;
146145
}
147146

0 commit comments

Comments
 (0)