Skip to content

Commit

Permalink
Refactor factory for better usage of TypeTokens.
Browse files Browse the repository at this point in the history
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
  • Loading branch information
gabizou committed Sep 16, 2016
1 parent eee1511 commit 5f31153
Showing 1 changed file with 9 additions and 11 deletions.
20 changes: 9 additions & 11 deletions src/main/java/org/spongepowered/api/data/key/KeyFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,8 @@ public String toString() {
* @param query The query to access the data
* @return The generated key
*/
public static <E> Key<ListValue<E>> makeListKey(final TypeToken<E> elementToken, final DataQuery query, final String id, final String name) {
public static <E> Key<ListValue<E>> makeListKey(final TypeToken<? extends List<E>> elementToken, final TypeToken<ListValue<E>> valueToken,
final DataQuery query, final String id, final String name) {
return new Key<ListValue<E>>() {

@Override
Expand All @@ -148,12 +149,12 @@ public String getName() {
@SuppressWarnings("rawtypes")
@Override
public TypeToken<ListValue<E>> getValueToken() {
return (Class<ListValue<E>>) (Class) ListValue.class;
return valueToken;
}

@Override
public TypeToken<?> getElementToken() {
return List.class;
return elementToken;
}

@Override
Expand Down Expand Up @@ -186,9 +187,6 @@ public static <E> Key<SetValue<E>> makeSetKey(final TypeToken<? extends Set<E>>
final DataQuery query, final String id, final String name) {
return new Key<SetValue<E>>() {

private final TypeToken<Set<E>> SET_TOKEN = new TypeToken<Set<E>>() {};
private final TypeToken<SetValue<E>> SET_VALUE_TOKEN = new TypeToken<SetValue<E>>() {};

@Override
public String getId() {
return id;
Expand Down Expand Up @@ -236,12 +234,12 @@ public String toString() {
*
* @param <K> The type of keys
* @param <V> The type of values
* @param keyToken The key class of the map
* @param elementToken The element token
* @param valueToken The value class of the map
* @param query The query
* @return The generated key
*/
public static <K, V> Key<MapValue<K, V>> makeMapKey(final TypeToken<K> keyToken, final TypeToken<V> valueToken, final DataQuery query, final String id, final String name) {
public static <K, V> Key<MapValue<K, V>> makeMapKey(final TypeToken<Map<K, V>> elementToken, final TypeToken<MapValue<K, V>> valueToken, final DataQuery query, final String id, final String name) {
return new Key<MapValue<K, V>>() {

@Override
Expand All @@ -254,18 +252,18 @@ public String getName() {
return name;
}

private final int hash = Objects.hashCode(keyToken, valueToken, query);
private final int hash = Objects.hashCode(elementToken, valueToken, query);

@SuppressWarnings("rawtypes")
@Override
public TypeToken<MapValue<K, V>> getValueToken() {
return (Class<MapValue<K, V>>) (Class) MapValue.class;
return valueToken;
}

@SuppressWarnings("rawtypes")
@Override
public TypeToken<?> getElementToken() {
return Map.class;
return elementToken;
}

@Override
Expand Down

0 comments on commit 5f31153

Please sign in to comment.