From b8c1838dfdd158ca03a0a6cd2be1e6b548721397 Mon Sep 17 00:00:00 2001 From: Gabriel Harris-Rouquette Date: Thu, 15 Sep 2016 22:36:43 -0700 Subject: [PATCH] Finalize factory generated Keys to use lazy loading tostring values. Signed-off-by: Gabriel Harris-Rouquette --- .../api/data/key/KeyFactory.java | 28 +++++++++++++++---- .../common/AbstractImmutableBooleanData.java | 7 ----- .../AbstractImmutableSingleCatalogData.java | 5 ---- .../api/item/inventory/ItemStack.java | 5 +++- 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/spongepowered/api/data/key/KeyFactory.java b/src/main/java/org/spongepowered/api/data/key/KeyFactory.java index f1c27392c57..3f3b276ae12 100644 --- a/src/main/java/org/spongepowered/api/data/key/KeyFactory.java +++ b/src/main/java/org/spongepowered/api/data/key/KeyFactory.java @@ -133,6 +133,7 @@ public String toString() { public static Key> makeListKey(final TypeToken> elementToken, final TypeToken> valueToken, final DataQuery query, final String id, final String name) { return new Key>() { + @Nullable private String string; @Override public String getId() { @@ -169,7 +170,10 @@ public int hashCode() { @Override public String toString() { - return "Key{Value:" + "ListValue<" + elementToken.getSimpleName() + ">, Query: " + query.toString() + "}"; + if (this.string == null) { + this.string = "Key{Value:ListValue<" + elementToken.toString() + ">, Query: " + query.toString() + "}"; + } + return this.string; } }; } @@ -187,6 +191,8 @@ public static Key> makeSetKey(final TypeToken> final DataQuery query, final String id, final String name) { return new Key>() { + @Nullable private String string; + @Override public String getId() { return id; @@ -222,7 +228,10 @@ public int hashCode() { @Override public String toString() { - return "Key{Value:" + "SetValue<" + elementToken.getSimpleName() + ">, Query: " + query.toString() + "}"; + if (this.string == null) { + this.string = "Key{Value:" + "SetValue<" + elementToken.toString() + ">, Query: " + query.toString() + "}"; + } + return this.string; } }; } @@ -242,6 +251,8 @@ public String toString() { public static Key> makeMapKey(final TypeToken> elementToken, final TypeToken> valueToken, final DataQuery query, final String id, final String name) { return new Key>() { + @Nullable private String string; + @Override public String getId() { return id; @@ -278,8 +289,11 @@ public int hashCode() { @Override public String toString() { - return "Key{Value:" + "MapValue<" + keyToken.getSimpleName() + "," + valueToken.getSimpleName() + ">, Query: " + query.toString() - + "}"; + if (this.string == null) { + this.string = "Key{Value:" + "MapValue<" + elementToken.toString() + "," + + valueToken.toString() + ">, Query: " + query.toString() + "}"; + } + return this.string; } }; } @@ -299,6 +313,7 @@ public static Key> makeOptionalKey(final TypeToken>() { + @Nullable private String string; @Override public String getId() { @@ -334,7 +349,10 @@ public int hashCode() { @Override public String toString() { - return "Key{Value:" + "OptionalValue<" + elementToken.getSimpleName() + ">, Query: " + query.toString() + "}"; + if (this.string == null) { + this.string = "Key{Value:" + "OptionalValue<" + elementToken.toString() + ">, Query: " + query.toString() + "}"; + } + return this.string; } }; } diff --git a/src/main/java/org/spongepowered/api/data/manipulator/immutable/common/AbstractImmutableBooleanData.java b/src/main/java/org/spongepowered/api/data/manipulator/immutable/common/AbstractImmutableBooleanData.java index f6fbe0d1002..9996cdaefae 100644 --- a/src/main/java/org/spongepowered/api/data/manipulator/immutable/common/AbstractImmutableBooleanData.java +++ b/src/main/java/org/spongepowered/api/data/manipulator/immutable/common/AbstractImmutableBooleanData.java @@ -57,11 +57,4 @@ protected final ImmutableValue getValueGetter() { return this.immutableValue; } - @Override - public int compareTo(I o) { - return ComparisonChain.start() - .compare(o.get(this.usedKey).get(), this.getValue()) - .result(); - } - } diff --git a/src/main/java/org/spongepowered/api/data/manipulator/immutable/common/AbstractImmutableSingleCatalogData.java b/src/main/java/org/spongepowered/api/data/manipulator/immutable/common/AbstractImmutableSingleCatalogData.java index 6e6107c12ed..bfc8b848113 100644 --- a/src/main/java/org/spongepowered/api/data/manipulator/immutable/common/AbstractImmutableSingleCatalogData.java +++ b/src/main/java/org/spongepowered/api/data/manipulator/immutable/common/AbstractImmutableSingleCatalogData.java @@ -60,11 +60,6 @@ protected AbstractImmutableSingleCatalogData(E value, E defaultValue, Key getValueGetter() { return this.immutableValue; diff --git a/src/main/java/org/spongepowered/api/item/inventory/ItemStack.java b/src/main/java/org/spongepowered/api/item/inventory/ItemStack.java index fe5627045e1..3ad05bb2d9a 100644 --- a/src/main/java/org/spongepowered/api/item/inventory/ItemStack.java +++ b/src/main/java/org/spongepowered/api/item/inventory/ItemStack.java @@ -141,7 +141,10 @@ static ItemStack of(ItemType itemType, int quantity) { ItemStack copy(); interface Builder extends DataBuilder { - + + @Override + Builder from(ItemStack value); + /** * Sets the {@link ItemType} of the item stack. *