r7007 - dumbhippo/trunk/server/src/com/dumbhippo/dm



Author: otaylor
Date: 2007-12-10 17:02:38 -0600 (Mon, 10 Dec 2007)
New Revision: 7007

Modified:
   dumbhippo/trunk/server/src/com/dumbhippo/dm/DMSession.java
Log:
Create the StoreKey with the right classholder, not a base class

Modified: dumbhippo/trunk/server/src/com/dumbhippo/dm/DMSession.java
===================================================================
--- dumbhippo/trunk/server/src/com/dumbhippo/dm/DMSession.java	2007-12-10 22:28:29 UTC (rev 7006)
+++ dumbhippo/trunk/server/src/com/dumbhippo/dm/DMSession.java	2007-12-10 23:02:38 UTC (rev 7007)
@@ -2,6 +2,9 @@
 
 import javax.persistence.EntityManager;
 
+import org.slf4j.Logger;
+
+import com.dumbhippo.GlobalSetup;
 import com.dumbhippo.dm.fetch.BoundFetch;
 import com.dumbhippo.dm.fetch.FetchVisitor;
 import com.dumbhippo.dm.schema.DMClassHolder;
@@ -9,6 +12,9 @@
 import com.dumbhippo.server.NotFoundException;
 
 public abstract class DMSession {
+	@SuppressWarnings("unused")
+	static private final Logger logger = GlobalSetup.getLogger(DMSession.class);
+	
 	protected DataModel model;
 	private EntityManager injectableEntityManager;
 	
@@ -56,13 +62,12 @@
 	}
 	
 	@SuppressWarnings("unchecked")
-	private DMObject find(DMClassHolder classHolder, String keyString) throws NotFoundException {
+	private DMObject<?> find(DMClassHolder classHolder, String keyString) throws NotFoundException {
 		if (classHolder == null)
 			throw new NotFoundException("Unknown type of resource");
 		
 		try {
-			StoreKey storeKey = classHolder.makeStoreKey(keyString);
-			return find(storeKey);
+			return find(classHolder.makeStoreKey(keyString));
 		} catch (BadIdException e) {
 			throw new NotFoundException("Bad ID in resourceId: " + e.getMessage(), e);
 		}
@@ -82,7 +87,7 @@
 		
 		return find(classHolder, resourceId.substring(lastSlash + 1));
 	}
-	
+
 	public <K,T extends DMObject<K>> void visitFetch(T object, BoundFetch<K,? super T> fetch, FetchVisitor visitor) {
 		fetch.visit(this, object, visitor);
 	}
@@ -102,17 +107,13 @@
 		}
 	}
 	
-	// This "casts" two classes K and T to be related, note we need a K and a T in order to construct
-	// StoreKey without a warning about a bare type
+	// This should return a StoreKey<K, ? extends T>, like classHolder.makeStoreKey(), but
+	// that confuses javac (Java 5) in ways I can't figure out. Practically speaking, it 
+	// doesn't end up mattering
 	@SuppressWarnings("unchecked")
-	private static <K, T extends DMObject<K>> StoreKey<K,T> newStoreKeyHack(DMClassHolder<?,? extends DMObject<?>> classHolder,
-			K key) {
-		return new StoreKey<K,T>((DMClassHolder<K,T>) classHolder, key);
-	}
-	
 	protected <K, T extends DMObject<K>> StoreKey<K,T> makeStoreKey(Class<T> clazz, K key) {
-		DMClassHolder<?,? extends DMObject<?>> classHolder = model.getClassHolder(clazz); 
-		return newStoreKeyHack(classHolder, key);
+		DMClassHolder<K,T> classHolder = (DMClassHolder<K,T>)model.getClassHolder(clazz);
+		return (StoreKey<K, T>) classHolder.makeStoreKey(key);
 	}
 	
 	private <K, T extends DMObject<K>> void doInit(T t) throws NotFoundException {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]