Skip to content

Commit b3f9259

Browse files
committed
Added type parameter for Resource base interface.
Allows ResourceSet base interface to be type-safe, and captures parallelism between ReadableResource and WritableResource. Also renamed a corresponding ResourceSet.Id property for consistency.
1 parent 89f5cb0 commit b3f9259

22 files changed

+43
-39
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
*
3333
* @author Rick Warren
3434
*/
35-
public interface ReadableResource<RSRC> extends Resource {
35+
public interface ReadableResource<RSRC> extends Resource<RSRC> {
3636

3737
/**
3838
* Request the value(s) of this resource. Zero or more values will be

src/main/java/crud/core/ReadableResourceSet.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public String toString() {
6363
return ReadableResourceSet.class.getSimpleName()
6464
+ '.' + getClass().getSimpleName() + "(\""
6565
+ getName() + "\", "
66-
+ getKeyType().getName() + " -> " + getElementType().getName()
66+
+ getKeyType().getName() + " -> " + getResourceType().getName()
6767
+ ')';
6868
}
6969
}

src/main/java/crud/core/Resource.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@
3535
* or "unknown because of error", may further be expressed with by the
3636
* declaration idiom {@code Observable<Void>}.
3737
*
38+
* @param <RSRC> The type of the resource's value(s).
39+
*
3840
* @author Rick Warren
3941
*/
40-
public interface Resource extends AsyncCloseable {
42+
public interface Resource<RSRC> extends AsyncCloseable {
4143
// empty
4244
}

src/main/java/crud/core/ResourceSet.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public interface ResourceSet<KEY, RSRC> {
5050
* obtained from a {@link DataBus} compatible with this
5151
* {@link WritableResourceSet}.
5252
*/
53-
public abstract @Nonnull Resource get(@Nonnull KEY key, @Nonnull Session session);
53+
public abstract @Nonnull Resource<RSRC> get(@Nonnull KEY key, @Nonnull Session session);
5454

5555

5656
/**
@@ -65,15 +65,15 @@ public interface ResourceSet<KEY, RSRC> {
6565
public static abstract class Id<KEY, RSRC> {
6666
private @Nonnull final String name;
6767
private @Nonnull final Class<KEY> keyType;
68-
private @Nonnull final Class<RSRC> elementType;
68+
private @Nonnull final Class<RSRC> resourceType;
6969

7070
protected Id(
7171
@Nonnull final String name,
7272
@Nonnull final Class<KEY> keyType,
73-
@Nonnull final Class<RSRC> type) {
73+
@Nonnull final Class<RSRC> resourceType) {
7474
this.name = Objects.requireNonNull(name);
7575
this.keyType = Objects.requireNonNull(keyType);
76-
this.elementType = Objects.requireNonNull(type);
76+
this.resourceType = Objects.requireNonNull(resourceType);
7777
}
7878

7979
public final @Nonnull String getName() {
@@ -84,8 +84,8 @@ protected Id(
8484
return this.keyType;
8585
}
8686

87-
public final @Nonnull Class<RSRC> getElementType() {
88-
return this.elementType;
87+
public final @Nonnull Class<RSRC> getResourceType() {
88+
return this.resourceType;
8989
}
9090

9191
@Override
@@ -106,7 +106,7 @@ public boolean equals(final Object obj) {
106106
if (this.keyType != other.keyType) {
107107
return false;
108108
}
109-
if (this.elementType != other.elementType) {
109+
if (this.resourceType != other.resourceType) {
110110
return false;
111111
}
112112
return true;
@@ -118,7 +118,7 @@ public int hashCode() {
118118
int result = 1;
119119
result = prime * result + this.name.hashCode();
120120
result = prime * result + this.keyType.hashCode();
121-
result = prime * result + this.elementType.hashCode();
121+
result = prime * result + this.resourceType.hashCode();
122122
return result;
123123
}
124124
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
*
3232
* @author Rick Warren
3333
*/
34-
public interface WritableResource<RSRC, RESPONSE> extends Resource {
34+
public interface WritableResource<RSRC, RESPONSE> extends Resource<RSRC> {
3535

3636
/**
3737
* Replace or update the value of the resource with the given value. It is

src/main/java/crud/core/WritableResourceSet.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public String toString() {
8080
return WritableResourceSet.class.getSimpleName()
8181
+ '.' + getClass().getSimpleName() + "(\""
8282
+ getName() + "\", "
83-
+ getKeyType().getName() + " -> " + getElementType().getName()
83+
+ getKeyType().getName() + " -> " + getResourceType().getName()
8484
+ " -> " + this.writeResultType.getName()
8585
+ ')';
8686
}

src/main/java/crud/file/FileSystem.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ protected Session doStartOrderedSession() throws Exception {
5151
@Override
5252
protected boolean isResourceSetAvailable(final ReadableResourceSet.Id<?, ?> id) {
5353
return File.class == id.getKeyType()
54-
&& String.class == id.getElementType();
54+
&& String.class == id.getResourceType();
5555
}
5656

5757
@SuppressWarnings({ "rawtypes", "unchecked" }) // checked by isResourceSetAvailable()
@@ -63,7 +63,7 @@ protected ReadableResourceSet resolveResourceSet(final ReadableResourceSet.Id id
6363
@Override
6464
protected boolean isResourceSetAvailable(final WritableResourceSet.Id<?, ?, ?> id) {
6565
return WriteRequest.class == id.getKeyType()
66-
&& String.class == id.getElementType()
66+
&& String.class == id.getResourceType()
6767
&& Void.class == id.getWriteResultType();
6868
}
6969

src/main/java/crud/implementer/AbstractReadableResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424

2525
public abstract class AbstractReadableResource<RSRC>
26-
extends AbstractSessionParticipant
26+
extends AbstractResource<RSRC>
2727
implements ReadableResource<RSRC> {
2828

2929
@Override

src/main/java/crud/implementer/AbstractSessionParticipant.java renamed to src/main/java/crud/implementer/AbstractResource.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818

1919
import javax.annotation.Nonnull;
2020

21-
import crud.core.AsyncCloseable;
22-
import crud.core.WritableResource;
2321
import crud.core.ReadableResource;
22+
import crud.core.Resource;
23+
import crud.core.WritableResource;
2424
import rx.Observable;
2525
import rx.Observer;
2626
import rx.Subscriber;
@@ -31,7 +31,7 @@
3131
*
3232
* @author Rick Warren
3333
*/
34-
public abstract class AbstractSessionParticipant implements AsyncCloseable {
34+
public abstract class AbstractResource<RSRC> implements Resource<RSRC> {
3535

3636
private @Nonnull final SessionWorker worker;
3737

@@ -50,7 +50,7 @@ public void call(final Subscriber<? super Void> sub) throws Exception {
5050
});
5151
}
5252

53-
protected AbstractSessionParticipant(@Nonnull final SessionWorker worker) {
53+
protected AbstractResource(@Nonnull final SessionWorker worker) {
5454
this.worker = Objects.requireNonNull(worker);
5555
}
5656

src/main/java/crud/implementer/AbstractWritableResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424

2525
public abstract class AbstractWritableResource<RSRC, RESPONSE>
26-
extends AbstractSessionParticipant
26+
extends AbstractResource<RSRC>
2727
implements WritableResource<RSRC, RESPONSE> {
2828

2929
/**

0 commit comments

Comments
 (0)