From cd5e2259ab672c714a8fe2b632da670e30dee090 Mon Sep 17 00:00:00 2001
From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?=
 <bombe@pterodactylus.net>
Date: Thu, 14 Oct 2010 14:59:59 +0200
Subject: [PATCH] Always create Shells with IDs.

---
 src/main/java/net/pterodactylus/sone/data/PostShell.java    | 4 ++--
 src/main/java/net/pterodactylus/sone/data/ReplyShell.java   | 4 ++--
 src/main/java/net/pterodactylus/sone/data/ShellCache.java   | 2 +-
 src/main/java/net/pterodactylus/sone/data/ShellCreator.java | 4 +++-
 src/main/java/net/pterodactylus/sone/data/SoneShell.java    | 4 ++--
 5 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/main/java/net/pterodactylus/sone/data/PostShell.java b/src/main/java/net/pterodactylus/sone/data/PostShell.java
index b0cb8e6..4a4b797 100644
--- a/src/main/java/net/pterodactylus/sone/data/PostShell.java
+++ b/src/main/java/net/pterodactylus/sone/data/PostShell.java
@@ -34,8 +34,8 @@ public class PostShell extends Post implements Shell<Post> {
 	public static final ShellCreator<Post> creator = new ShellCreator<Post>() {
 
 		@Override
-		public Shell<Post> createShell() {
-			return new PostShell();
+		public Shell<Post> createShell(String id) {
+			return new PostShell().setId(UUID.fromString(id));
 		}
 	};
 
diff --git a/src/main/java/net/pterodactylus/sone/data/ReplyShell.java b/src/main/java/net/pterodactylus/sone/data/ReplyShell.java
index afcf295..6886a9d 100644
--- a/src/main/java/net/pterodactylus/sone/data/ReplyShell.java
+++ b/src/main/java/net/pterodactylus/sone/data/ReplyShell.java
@@ -31,8 +31,8 @@ public class ReplyShell extends Reply implements Shell<Reply> {
 	public static final ShellCreator<Reply> creator = new ShellCreator<Reply>() {
 
 		@Override
-		public Shell<Reply> createShell() {
-			return new ReplyShell();
+		public Shell<Reply> createShell(String id) {
+			return new ReplyShell().setId(UUID.fromString(id));
 		}
 	};
 
diff --git a/src/main/java/net/pterodactylus/sone/data/ShellCache.java b/src/main/java/net/pterodactylus/sone/data/ShellCache.java
index 0b19429..fd3d6bc 100644
--- a/src/main/java/net/pterodactylus/sone/data/ShellCache.java
+++ b/src/main/java/net/pterodactylus/sone/data/ShellCache.java
@@ -84,7 +84,7 @@ public class ShellCache<T> {
 	 */
 	public T get(String id) {
 		if (!objectCache.containsKey(id)) {
-			Shell<T> shell = shellCreator.createShell();
+			Shell<T> shell = shellCreator.createShell(id);
 			shellCache.put(id, shell);
 			return shell.getShelled();
 		}
diff --git a/src/main/java/net/pterodactylus/sone/data/ShellCreator.java b/src/main/java/net/pterodactylus/sone/data/ShellCreator.java
index 3c5a89a..6835b00 100644
--- a/src/main/java/net/pterodactylus/sone/data/ShellCreator.java
+++ b/src/main/java/net/pterodactylus/sone/data/ShellCreator.java
@@ -29,8 +29,10 @@ public interface ShellCreator<T> {
 	/**
 	 * Creates a new shell.
 	 *
+	 * @param id
+	 *            The ID of the shell object
 	 * @return The new shell
 	 */
-	public Shell<T> createShell();
+	public Shell<T> createShell(String id);
 
 }
diff --git a/src/main/java/net/pterodactylus/sone/data/SoneShell.java b/src/main/java/net/pterodactylus/sone/data/SoneShell.java
index 49059c7..cced1e5 100644
--- a/src/main/java/net/pterodactylus/sone/data/SoneShell.java
+++ b/src/main/java/net/pterodactylus/sone/data/SoneShell.java
@@ -37,8 +37,8 @@ public class SoneShell extends Sone implements Shell<Sone> {
 	public static final ShellCreator<Sone> creator = new ShellCreator<Sone>() {
 
 		@Override
-		public Shell<Sone> createShell() {
-			return new SoneShell();
+		public Shell<Sone> createShell(String id) {
+			return new SoneShell().setId(UUID.fromString(id));
 		}
 	};
 
-- 
2.7.4