From 64718e3250252e618b2012db44f9095b87470243 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Wed, 23 Oct 2013 07:39:10 +0200 Subject: [PATCH] Make profile fields immutable. --- .../java/net/pterodactylus/sone/core/Core.java | 2 +- .../net/pterodactylus/sone/core/SoneParser.java | 2 +- .../java/net/pterodactylus/sone/data/Profile.java | 50 ++-------------------- .../pterodactylus/sone/web/EditProfilePage.java | 2 +- 4 files changed, 6 insertions(+), 50 deletions(-) diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index 8edb14f..8fcfe10 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -965,7 +965,7 @@ public class Core extends AbstractService implements SoneProvider { break; } String fieldValue = configuration.getStringValue(fieldPrefix + "/Value").getValue(""); - profile.addField(fieldName).setValue(fieldValue); + profile.setField(profile.addField(fieldName), fieldValue); } /* load posts. */ diff --git a/src/main/java/net/pterodactylus/sone/core/SoneParser.java b/src/main/java/net/pterodactylus/sone/core/SoneParser.java index d251989..b2d82be 100644 --- a/src/main/java/net/pterodactylus/sone/core/SoneParser.java +++ b/src/main/java/net/pterodactylus/sone/core/SoneParser.java @@ -150,7 +150,7 @@ public class SoneParser { return absent(); } try { - profile.addField(fieldName).setValue(fieldValue); + profile.setField(profile.addField(fieldName), fieldValue); } catch (IllegalArgumentException iae1) { logger.log(Level.WARNING, String.format("Duplicate field: %s", fieldName), iae1); return absent(); diff --git a/src/main/java/net/pterodactylus/sone/data/Profile.java b/src/main/java/net/pterodactylus/sone/data/Profile.java index e4f9992..3e446fd 100644 --- a/src/main/java/net/pterodactylus/sone/data/Profile.java +++ b/src/main/java/net/pterodactylus/sone/data/Profile.java @@ -251,7 +251,7 @@ public class Profile implements Fingerprintable { if (indexOfField == -1) { return; } - fields.get(indexOfField).setValue(newValue); + fields.set(indexOfField, new Field(field.getId(), field.getName(), newValue)); } /** @@ -415,14 +415,9 @@ public class Profile implements Fingerprintable { */ public static class Field { - /** The ID of the field. */ private final String id; - - /** The name of the field. */ - private String name; - - /** The value of the field. */ - private String value; + private final String name; + private final String value; public Field(String name) { this(name, null); @@ -438,54 +433,18 @@ public class Profile implements Fingerprintable { this.value = value; } - /** - * Returns the ID of this field. - * - * @return The ID of this field - */ public String getId() { return id; } - /** - * Returns the name of this field. - * - * @return The name of this field - */ public String getName() { return name; } - /** - * Returns the value of this field. - * - * @return The value of this field - */ public String getValue() { return value; } - /** - * Sets the value of this field. While {@code null} is allowed, no - * guarantees are made that {@code null} values are correctly persisted - * across restarts of the plugin! - * - * @param value - * The new value of this field - * @return This field - */ - public Field setValue(String value) { - this.value = value; - return this; - } - - // - // OBJECT METHODS - // - - /** - * {@inheritDoc} - */ @Override public boolean equals(Object object) { if (!(object instanceof Field)) { @@ -495,9 +454,6 @@ public class Profile implements Fingerprintable { return id.equals(field.id); } - /** - * {@inheritDoc} - */ @Override public int hashCode() { return id.hashCode(); diff --git a/src/main/java/net/pterodactylus/sone/web/EditProfilePage.java b/src/main/java/net/pterodactylus/sone/web/EditProfilePage.java index 0d1f7d3..38cc800 100644 --- a/src/main/java/net/pterodactylus/sone/web/EditProfilePage.java +++ b/src/main/java/net/pterodactylus/sone/web/EditProfilePage.java @@ -82,7 +82,7 @@ public class EditProfilePage extends SoneTemplatePage { profile.setAvatar(webInterface.getCore().getImage(avatarId).transform(GET_ID)); for (Field field : fields) { String value = request.getHttpRequest().getPartAsStringFailsafe("field-" + field.getId(), 400); - field.setValue(value); + profile.setField(field, value); } currentSone.setProfile(profile); webInterface.getCore().touchConfiguration(); -- 2.7.4