You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by tf...@apache.org on 2011/05/14 21:56:59 UTC

svn commit: r1103201 - in /db/torque/torque4/trunk: torque-runtime/src/main/java/org/apache/torque/ torque-runtime/src/main/java/org/apache/torque/adapter/ torque-runtime/src/main/java/org/apache/torque/avalon/ torque-runtime/src/main/java/org/apache/t...

Author: tfischer
Date: Sat May 14 19:56:58 2011
New Revision: 1103201

URL: http://svn.apache.org/viewvc?rev=1103201&view=rev
Log:
TORQUE-150: use generics in runtime 

Modified:
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/Torque.java
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/TorqueInstance.java
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/TorqueRuntimeException.java
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/AbstractDBAdapter.java
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DB.java
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBOracle.java
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/avalon/Torque.java
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/avalon/TorqueComponent.java
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/dsfactory/AbstractDataSourceFactory.java
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/manager/AbstractBaseManager.java
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/manager/CacheListener.java
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/manager/MethodResultCache.java
    db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/manager/base/baseManager.vm

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/Torque.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/Torque.java?rev=1103201&r1=1103200&r2=1103201&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/Torque.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/Torque.java Sat May 14 19:56:58 2011
@@ -420,7 +420,7 @@ public class Torque
      * @return a Map containing all Databases known to Torque, never null.
      * @throws TorqueException if Torque is not yet initialized.
      */
-    public static Map getDatabases() throws TorqueException
+    public static Map<String, Database> getDatabases() throws TorqueException
     {
         return getInstance().getDatabases();
     }

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/TorqueInstance.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/TorqueInstance.java?rev=1103201&r1=1103200&r2=1103201&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/TorqueInstance.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/TorqueInstance.java Sat May 14 19:56:58 2011
@@ -73,10 +73,11 @@ public class TorqueInstance
      * and other operations where the databaase map needs to stay
      * in a defined state must be synchronized to this map.
      */
-    private Map databases = Collections.synchronizedMap(new HashMap());
+    private Map<String, Database> databases
+            = Collections.synchronizedMap(new HashMap<String, Database>());
 
     /** A repository of Manager instances. */
-    private Map managers;
+    private Map<String, AbstractBaseManager> managers;
 
     /** Torque-specific configuration. */
     private Configuration conf;
@@ -98,7 +99,7 @@ public class TorqueInstance
      * are serialized then unserialized prior to Torque being reinitialized.
      * This condition exists in a normal catalina restart.
      */
-    private Map mapBuilderCache = null;
+    private Map<String, MapBuilder> mapBuilderCache = null;
 
     /**
      * Creates a new instance with default configuration.
@@ -163,16 +164,15 @@ public class TorqueInstance
         // re-build any MapBuilders that may have gone lost during serialization
         synchronized (mapBuilderCache)
         {
-            for (Iterator i = mapBuilderCache.entrySet().iterator(); i.hasNext();)
+            for (Map.Entry<String, MapBuilder> entry
+                    : mapBuilderCache.entrySet())
             {
-                Map.Entry entry = (Map.Entry)i.next();
-
                 if (null == entry.getValue())
                 {
                     try
                     {
                         // create and build the MapBuilder
-                        MapBuilder builder = (MapBuilder) Class.forName((String) entry.getKey()).newInstance();
+                        MapBuilder builder = (MapBuilder) Class.forName(entry.getKey()).newInstance();
 
                         if (!builder.isBuilt())
                         {
@@ -253,7 +253,7 @@ public class TorqueInstance
 
         try
         {
-            for (Iterator it = c.getKeys(); it.hasNext();)
+            for (Iterator<?> it = c.getKeys(); it.hasNext();)
             {
                 String key = (String) it.next();
                 if (key.endsWith(DB.ADAPTER_KEY)
@@ -312,7 +312,7 @@ public class TorqueInstance
 
         // check that at least the default database has got an adapter.
         Database defaultDatabase
-                = (Database) databases.get(Torque.getDefaultDB());
+                = databases.get(Torque.getDefaultDB());
         if (defaultDatabase == null
             || defaultDatabase.getAdapter() == null)
         {
@@ -363,7 +363,7 @@ public class TorqueInstance
 
         try
         {
-            for (Iterator it = c.getKeys(); it.hasNext();)
+            for (Iterator<?> it = c.getKeys(); it.hasNext();)
             {
                 String key = (String) it.next();
                 if (key.endsWith(DataSourceFactory.FACTORY_KEY))
@@ -372,7 +372,7 @@ public class TorqueInstance
                     String handle = key.substring(0, key.indexOf('.'));
                     log.debug("handle: " + handle
                             + " DataSourceFactory: " + classname);
-                    Class dsfClass = Class.forName(classname);
+                    Class<?> dsfClass = Class.forName(classname);
                     DataSourceFactory dsf =
                             (DataSourceFactory) dsfClass.newInstance();
                     dsf.initialize(c.subset(handle));
@@ -394,7 +394,7 @@ public class TorqueInstance
         }
 
         Database defaultDatabase
-                = (Database) databases.get(defaultDBName);
+                = databases.get(defaultDBName);
         if (defaultDatabase == null
             || defaultDatabase.getDataSourceFactory() == null)
         {
@@ -515,7 +515,7 @@ public class TorqueInstance
         int pref = Torque.MANAGER_PREFIX.length();
         int suff = Torque.MANAGER_SUFFIX.length();
 
-        for (Iterator it = conf.getKeys(); it.hasNext();)
+        for (Iterator<?> it = conf.getKeys(); it.hasNext();)
         {
             String key = (String) it.next();
 
@@ -558,7 +558,7 @@ public class TorqueInstance
     private synchronized void initManager(String name, String className)
             throws TorqueException
     {
-        AbstractBaseManager manager = (AbstractBaseManager) managers.get(name);
+        AbstractBaseManager manager = managers.get(name);
 
         if (manager == null)
         {
@@ -622,7 +622,7 @@ public class TorqueInstance
      */
     public AbstractBaseManager getManager(String name)
     {
-        AbstractBaseManager m = (AbstractBaseManager) managers.get(name);
+        AbstractBaseManager m = managers.get(name);
         if (m == null)
         {
             log.error("No configured manager for key " + name + ".");
@@ -641,7 +641,7 @@ public class TorqueInstance
     public AbstractBaseManager getManager(String name,
             String defaultClassName)
     {
-        AbstractBaseManager m = (AbstractBaseManager) managers.get(name);
+        AbstractBaseManager m = managers.get(name);
         if (m == null)
         {
             log.debug("Added late Manager mapping for Class: "
@@ -657,7 +657,7 @@ public class TorqueInstance
             }
 
             // Try again now that the default manager should be in the map
-            m = (AbstractBaseManager) managers.get(name);
+            m = managers.get(name);
         }
 
         return m;
@@ -679,9 +679,8 @@ public class TorqueInstance
         // stop the idbrokers
         synchronized (databases)
         {
-            for (Iterator it = databases.values().iterator(); it.hasNext();)
+            for (Database database : databases.values())
             {
-                Database database = (Database) it.next();
                 IDBroker idBroker = database.getIDBroker();
                 if (idBroker != null)
                 {
@@ -693,11 +692,13 @@ public class TorqueInstance
         // shut down the cache managers
         synchronized (managers)
         {
-            for (Iterator it = managers.entrySet().iterator(); it.hasNext();)
+            for (Iterator<Map.Entry<String, AbstractBaseManager>> it
+                    = managers.entrySet().iterator(); it.hasNext();)
             {
-                Map.Entry mentry = (Map.Entry)it.next();
+                Map.Entry<String, AbstractBaseManager> mentry
+                        = it.next();
 
-                AbstractBaseManager manager = (AbstractBaseManager)mentry.getValue();
+                AbstractBaseManager manager = mentry.getValue();
                 manager.dispose();
                 it.remove();
             }
@@ -707,16 +708,15 @@ public class TorqueInstance
         TorqueException exception = null;
         synchronized (databases)
         {
-            for (Iterator it = databases.keySet().iterator(); it.hasNext();)
+            for (Map.Entry<String, Database> databaseMapEntry
+                    : databases.entrySet())
             {
-                Object databaseKey = it.next();
-
-                Database database
-                        = (Database) databases.get(databaseKey);
+                Object databaseKey = databaseMapEntry.getKey();
+                Database database = databaseMapEntry.getValue();
                 if (DEFAULT_NAME.equals(databaseKey) && defaultDsfIsReference)
                 {
                     // the DataSourceFactory of the database with the name
-                    // DEFAULT_NAME is just a reference to aynother entry.
+                    // DEFAULT_NAME is just a reference to another entry.
                     // Do not close because this leads to closing
                     // the same DataSourceFactory twice.
                     database.setDataSourceFactory(null);
@@ -758,8 +758,9 @@ public class TorqueInstance
      */
     private void resetConfiguration()
     {
-        mapBuilderCache = Collections.synchronizedMap(new HashMap());
-        managers = new HashMap();
+        mapBuilderCache = Collections.synchronizedMap(
+                new HashMap<String, MapBuilder>());
+        managers = new HashMap<String, AbstractBaseManager>();
         isInit = false;
     }
 
@@ -804,7 +805,7 @@ public class TorqueInstance
      * @return the MapBuilder cache
      *
      */
-    public Map getMapBuilders()
+    public Map<String, MapBuilder> getMapBuilders()
     {
         return mapBuilderCache;
     }
@@ -843,7 +844,7 @@ public class TorqueInstance
     {
         try
         {
-            MapBuilder mb = (MapBuilder)mapBuilderCache.get(className);
+            MapBuilder mb = mapBuilderCache.get(className);
 
             if (mb == null)
             {
@@ -1079,7 +1080,7 @@ public class TorqueInstance
         {
             throw new TorqueException("Torque is not initialized.");
         }
-        return (Database) databases.get(databaseName);
+        return databases.get(databaseName);
     }
 
     /**
@@ -1094,7 +1095,7 @@ public class TorqueInstance
      * @return a Map containing all Databases known to Torque, never null.
      * @throws TorqueException if Torque is not yet initialized.
      */
-    public Map getDatabases() throws TorqueException
+    public Map<String, Database> getDatabases() throws TorqueException
     {
         if (!isInit())
         {
@@ -1116,7 +1117,7 @@ public class TorqueInstance
     {
         synchronized (databases)
         {
-            Database result = (Database) databases.get(databaseName);
+            Database result = databases.get(databaseName);
             if (result == null)
             {
                 result = new Database(databaseName);

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/TorqueRuntimeException.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/TorqueRuntimeException.java?rev=1103201&r1=1103200&r2=1103201&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/TorqueRuntimeException.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/TorqueRuntimeException.java Sat May 14 19:56:58 2011
@@ -217,7 +217,7 @@ public class TorqueRuntimeException
     {
         String linebreak = System.getProperty("line.separator");
         StringTokenizer st = new StringTokenizer(stackTrace, linebreak);
-        LinkedList list = new LinkedList();
+        LinkedList<String> list = new LinkedList<String>();
         while (st.hasMoreTokens())
         {
             list.add(st.nextToken());

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/AbstractDBAdapter.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/AbstractDBAdapter.java?rev=1103201&r1=1103200&r2=1103201&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/AbstractDBAdapter.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/AbstractDBAdapter.java Sat May 14 19:56:58 2011
@@ -30,6 +30,7 @@ import org.apache.torque.TorqueException
 import org.apache.torque.sql.Query;
 import org.apache.torque.util.functions.Aggregate;
 import org.apache.torque.util.functions.FunctionEnum;
+import org.apache.torque.util.functions.SQLFunction;
 
 /**
  * This class is the abstract base for any database adapter
@@ -68,7 +69,9 @@ public abstract class AbstractDBAdapter 
     /**
      * The default look up table for function classes.
      */
-    private Map functionClasses = new Hashtable(10);
+    private Map<FunctionEnum, Class<? extends SQLFunction>> functionClasses
+            = new Hashtable<FunctionEnum, Class<? extends SQLFunction>>();
+
     /*
      * Initialize the functionClasses lookup table with SQL99 standard
      * functions. Uses this method because DB implementations don't
@@ -79,11 +82,11 @@ public abstract class AbstractDBAdapter 
      * constructor.
      */
     {
-        functionClasses.put( FunctionEnum.AVG, Aggregate.Avg.class );
-        functionClasses.put( FunctionEnum.COUNT, Aggregate.Count.class );
-        functionClasses.put( FunctionEnum.MAX, Aggregate.Max.class );
-        functionClasses.put( FunctionEnum.MIN, Aggregate.Min.class );
-        functionClasses.put( FunctionEnum.SUM, Aggregate.Sum.class );
+        functionClasses.put(FunctionEnum.AVG, Aggregate.Avg.class);
+        functionClasses.put(FunctionEnum.COUNT, Aggregate.Count.class);
+        functionClasses.put(FunctionEnum.MAX, Aggregate.Max.class);
+        functionClasses.put(FunctionEnum.MIN, Aggregate.Min.class);
+        functionClasses.put(FunctionEnum.SUM, Aggregate.Sum.class);
     }
 
     /**
@@ -314,9 +317,9 @@ public abstract class AbstractDBAdapter 
      *         will work with this type of DB. Null indicates a class was not
      *         found.
      */
-    public Class getFunctionClass( FunctionEnum function )
+    public Class<? extends SQLFunction> getFunctionClass(FunctionEnum function)
     {
-        return (Class) functionClasses.get( function );
+        return functionClasses.get(function);
     }
 
 }

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DB.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DB.java?rev=1103201&r1=1103200&r2=1103201&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DB.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DB.java Sat May 14 19:56:58 2011
@@ -284,5 +284,5 @@ public interface DB extends Serializable
      * @see AbstractFunction
      * @see Aggregate
      */
-    Class getFunctionClass( FunctionEnum function );
+    Class<?> getFunctionClass(FunctionEnum function);
 }

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBOracle.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBOracle.java?rev=1103201&r1=1103200&r2=1103201&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBOracle.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBOracle.java Sat May 14 19:56:58 2011
@@ -231,17 +231,17 @@ public class DBOracle extends AbstractDB
         // the query must not contain same column names or aliases.
         // Find double column names and aliases and create unique aliases
         // TODO: does not work for functions yet
-        UniqueList selectColumns = query.getSelectClause();
+        UniqueList<String> selectColumns = query.getSelectClause();
         int replacementSuffix = 0;
-        Set columnNames = new HashSet();
+        Set<String> columnNames = new HashSet<String>();
         // first pass: only remember aliased columns
         // No replacements need to take place because double aliases
         // are not allowed anyway
         // So alias names will be retained
-        for (ListIterator columnIt = selectColumns.listIterator();
+        for (ListIterator<String> columnIt = selectColumns.listIterator();
                 columnIt.hasNext();)
         {
-            String selectColumn = (String) columnIt.next();
+            String selectColumn = columnIt.next();
 
             // check for sql function
             if ((selectColumn.indexOf('(') != -1)
@@ -264,10 +264,10 @@ public class DBOracle extends AbstractDB
         }
 
         // second pass. Regard ordinary columns only
-        for (ListIterator columnIt = selectColumns.listIterator();
+        for (ListIterator<String> columnIt = selectColumns.listIterator();
                 columnIt.hasNext();)
         {
-            String selectColumn = (String) columnIt.next();
+            String selectColumn = columnIt.next();
 
             // check for sql function
             if ((selectColumn.indexOf('(') != -1)

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/avalon/Torque.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/avalon/Torque.java?rev=1103201&r1=1103200&r2=1103201&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/avalon/Torque.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/avalon/Torque.java Sat May 14 19:56:58 2011
@@ -231,7 +231,7 @@ public interface Torque
      * @return a Map containing all Databases known to Torque, never null.
      * @throws TorqueException if Torque is not yet initialized.
      */
-    Map getDatabases() throws TorqueException;
+    Map<String, Database> getDatabases() throws TorqueException;
 
     /**
      * Returns the database for the key <code>databaseName</code>.

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/avalon/TorqueComponent.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/avalon/TorqueComponent.java?rev=1103201&r1=1103200&r2=1103201&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/avalon/TorqueComponent.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/avalon/TorqueComponent.java Sat May 14 19:56:58 2011
@@ -20,7 +20,6 @@ package org.apache.torque.avalon;
  */
 
 import java.io.File;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.avalon.framework.activity.Disposable;
@@ -36,6 +35,7 @@ import org.apache.avalon.framework.logge
 import org.apache.avalon.framework.thread.ThreadSafe;
 import org.apache.commons.lang.StringUtils;
 import org.apache.torque.TorqueInstance;
+import org.apache.torque.map.MapBuilder;
 
 /**
  * Avalon component for Torque.
@@ -164,14 +164,13 @@ public class TorqueComponent
 
         TorqueInstance instance = org.apache.torque.Torque.getInstance();
 
-        Map mapBuilders = instance.getMapBuilders();
+        Map<String, MapBuilder> mapBuilders = instance.getMapBuilders();
 
         if (mapBuilders != null)
         {
             // Copy the registered MapBuilders and take care that they will be built again
-            for (Iterator  i = mapBuilders.keySet().iterator(); i.hasNext();)
+            for (String className : mapBuilders.keySet())
             {
-                String className = (String)i.next();
                 registerMapBuilder(className);
             }
         }

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/dsfactory/AbstractDataSourceFactory.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/dsfactory/AbstractDataSourceFactory.java?rev=1103201&r1=1103200&r2=1103201&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/dsfactory/AbstractDataSourceFactory.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/dsfactory/AbstractDataSourceFactory.java Sat May 14 19:56:58 2011
@@ -202,7 +202,7 @@ public abstract class AbstractDataSource
         {
             try
             {
-                for (Iterator i = c.getKeys(); i.hasNext();)
+                for (Iterator<?> i = c.getKeys(); i.hasNext();)
                 {
                     String key = (String) i.next();
                     setProperty(key, c, o);

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/manager/AbstractBaseManager.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/manager/AbstractBaseManager.java?rev=1103201&r1=1103200&r2=1103201&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/manager/AbstractBaseManager.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/manager/AbstractBaseManager.java Sat May 14 19:56:58 2011
@@ -62,24 +62,29 @@ public abstract class AbstractBaseManage
     /** method results cache */
     protected MethodResultCache mrCache;
 
-    /** the class that the service will instantiate */
-    private Class omClass;
+    /** The OM class that the service will instantiate. */
+    private Class<? extends Persistent> omClass;
 
+    /** The name of the OM class that the service will instantiate. */
     private String className;
 
+    /** The cache region used for JCS. */
     private String region;
 
+    /** Whether the cache manager has already registered its cache Listeners. */
     private boolean isNew = true;
 
-    protected Map validFields;
-    protected Map listenersMap = new HashMap();
+    protected Map<String, ?> validFields;
+
+    protected Map<String, FastArrayList> listenersMap 
+        = new HashMap<String, FastArrayList>();
 
     /**
      * Get the Class instance
      *
      * @return the om class
      */
-    protected Class getOMClass()
+    protected Class<? extends Persistent> getOMClass()
     {
         return omClass;
     }
@@ -89,7 +94,7 @@ public abstract class AbstractBaseManage
      *
      * @param omClass the om class
      */
-    protected void setOMClass(Class omClass)
+    protected void setOMClass(Class<? extends Persistent> omClass)
     {
         this.omClass = omClass;
     }
@@ -104,11 +109,12 @@ public abstract class AbstractBaseManage
     protected Persistent getOMInstance()
         throws InstantiationException, IllegalAccessException
     {
-        return (Persistent) omClass.newInstance();
+        return omClass.newInstance();
     }
 
     /**
      * Get the classname to instantiate for getInstance()
+     *
      * @return value of className.
      */
     public String getClassName()
@@ -122,14 +128,25 @@ public abstract class AbstractBaseManage
      * @throws TorqueException Any exceptions caught during processing will be
      *         rethrown wrapped into a TorqueException.
      */
-    public void setClassName(String  v)
+    @SuppressWarnings("unchecked")
+    public void setClassName(String v)
         throws TorqueException
     {
         this.className = v;
 
         try
         {
-            setOMClass(Class.forName(getClassName()));
+            Class<?> clazz = Class.forName(getClassName());
+            if (Persistent.class.isAssignableFrom(clazz))
+            {
+                setOMClass((Class<? extends Persistent>) clazz);
+            }
+            else
+            {
+                throw new TorqueException(
+                        getClassName()
+                        + " does not implement the interface Persistent");
+            }
         }
         catch (ClassNotFoundException cnfe)
         {
@@ -345,7 +362,7 @@ public abstract class AbstractBaseManage
      * @throws TorqueException Any exceptions caught during processing will be
      *         rethrown wrapped into a TorqueException.
      */
-    protected List getOMs(ObjectKey[] ids)
+    protected List<? extends Object> getOMs(ObjectKey[] ids)
         throws TorqueException
     {
         return getOMs(Arrays.asList(ids));
@@ -359,7 +376,7 @@ public abstract class AbstractBaseManage
      * @throws TorqueException Any exceptions caught during processing will be
      *         rethrown wrapped into a TorqueException.
      */
-    protected List getOMs(List ids)
+    protected List<? extends Object> getOMs(List<ObjectKey>  ids)
         throws TorqueException
     {
         return getOMs(ids, true);
@@ -373,18 +390,18 @@ public abstract class AbstractBaseManage
      * @throws TorqueException Any exceptions caught during processing will be
      *         rethrown wrapped into a TorqueException.
      */
-    protected List getOMs(List ids, boolean fromCache)
+    protected List<? extends Object> getOMs(List<ObjectKey> ids, boolean fromCache)
         throws TorqueException
     {
-        List oms = null;
+        List<Object> oms = null;
         if (ids != null && ids.size() > 0)
         {
             // start a new list where we will replace the id's with om's
-            oms = new ArrayList(ids);
-            List newIds = new ArrayList(ids.size());
+            oms = new ArrayList<Object>(ids);
+            List<ObjectKey> newIds = new ArrayList<ObjectKey>(ids.size());
             for (int i = 0; i < ids.size(); i++)
             {
-                ObjectKey key = (ObjectKey) ids.get(i);
+                ObjectKey key = ids.get(i);
                 Persistent om = null;
                 if (fromCache)
                 {
@@ -402,7 +419,7 @@ public abstract class AbstractBaseManage
 
             if (newIds.size() > 0)
             {
-                List newOms = retrieveStoredOMs(newIds);
+                List<? extends Object> newOms = retrieveStoredOMs(newIds);
                 for (int i = 0; i < oms.size(); i++)
                 {
                     if (oms.get(i) instanceof ObjectKey)
@@ -432,20 +449,21 @@ public abstract class AbstractBaseManage
 
     /**
      * Gets a list of om's based on id's.
-     * This method must be implemented in the drived class
+     * This method must be implemented in the derived class
      *
      * @param ids a <code>List</code> of <code>ObjectKey</code>'s
      * @return a <code>List</code> value
      * @throws TorqueException Any exceptions caught during processing will be
      *         rethrown wrapped into a TorqueException.
      */
-    protected abstract List retrieveStoredOMs(List ids)
+    protected abstract List<? extends Object> retrieveStoredOMs(
+            List<ObjectKey> ids)
         throws TorqueException;
 
     /**
-     * Get the value of region.
+     * Get the cache region used for JCS.
      *
-     * @return value of region.
+     * @return the cache region used for JCS.
      */
     public String getRegion()
     {
@@ -453,7 +471,7 @@ public abstract class AbstractBaseManage
     }
 
     /**
-     * Set the value of region.
+     * Set the cache region used for JCS.
      *
      * @param v  Value to assign to region.
      * @throws TorqueException Any exceptions caught during processing will be
@@ -489,18 +507,12 @@ public abstract class AbstractBaseManage
     /**
      * @return The cache instance.
      */
-    public MethodResultCache getMethodResultCache()
+    public synchronized MethodResultCache getMethodResultCache()
     {
         if (isNew)
         {
-            synchronized (this)
-            {
-                if (isNew)
-                {
-                    registerAsListener();
-                    isNew = false;
-                }
-            }
+            registerAsListener();
+            isNew = false;
         }
         return mrCache;
     }
@@ -519,26 +531,24 @@ public abstract class AbstractBaseManage
      */
     public void addCacheListenerImpl(CacheListener listener)
     {
-        List keys = listener.getInterestedFields();
-        Iterator i = keys.iterator();
-        while (i.hasNext())
+        List<String> keys = listener.getInterestedFields();
+        for (String key : keys)
         {
-            String key = (String) i.next();
             // Peer.column names are the fields
             if (validFields != null && validFields.containsKey(key))
             {
-                List listeners = (List) listenersMap.get(key);
+                FastArrayList listeners = listenersMap.get(key);
                 if (listeners == null)
                 {
                     listeners = createSubsetList(key);
                 }
 
                 boolean isNew = true;
-                Iterator j = listeners.iterator();
+                Iterator<?> j = listeners.iterator();
                 while (j.hasNext())
                 {
                     Object listener2 =
-                        ((WeakReference) j.next()).get();
+                        ((WeakReference<?>) j.next()).get();
                     if (listener2 == null)
                     {
                         // do a little cleanup while checking for dupes
@@ -554,7 +564,7 @@ public abstract class AbstractBaseManage
                 }
                 if (isNew)
                 {
-                    listeners.add(new WeakReference(listener));
+                    listeners.add(new WeakReference<CacheListener>(listener));
                 }
             }
         }
@@ -565,7 +575,7 @@ public abstract class AbstractBaseManage
      * @param key
      * @return A subset of the list identified by <code>key</code>.
      */
-    private synchronized List createSubsetList(String key)
+    private synchronized FastArrayList createSubsetList(String key)
     {
         FastArrayList list = null;
         if (listenersMap.containsKey(key))
@@ -587,18 +597,18 @@ public abstract class AbstractBaseManage
      * @param oldOm
      * @param om
      */
-    protected void notifyListeners(List listeners,
+    protected void notifyListeners(List<?> listeners,
                                    Persistent oldOm, Persistent om)
     {
         if (listeners != null)
         {
             synchronized (listeners)
             {
-                Iterator i = listeners.iterator();
+                Iterator<?> i = listeners.iterator();
                 while (i.hasNext())
                 {
                     CacheListener listener = (CacheListener)
-                        ((WeakReference) i.next()).get();
+                        ((WeakReference<?>) i.next()).get();
                     if (listener == null)
                     {
                         // remove reference as its object was cleared

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/manager/CacheListener.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/manager/CacheListener.java?rev=1103201&r1=1103200&r2=1103201&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/manager/CacheListener.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/manager/CacheListener.java Sat May 14 19:56:58 2011
@@ -47,5 +47,5 @@ public interface CacheListener
     /**
      *
      */
-    List getInterestedFields();
+    List<String> getInterestedFields();
 }

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/manager/MethodResultCache.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/manager/MethodResultCache.java?rev=1103201&r1=1103200&r2=1103201&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/manager/MethodResultCache.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/manager/MethodResultCache.java Sat May 14 19:56:58 2011
@@ -45,7 +45,7 @@ public class MethodResultCache
 {
     private ObjectPool pool;
     private GroupCacheAccess jcsCache;
-    private Map groups;
+    private Map<String, Object> groups;
 
     /** Logging */
     private static Log log = LogFactory.getLog(MethodResultCache.class);
@@ -54,7 +54,7 @@ public class MethodResultCache
         throws TorqueException
     {
         this.jcsCache = cache;
-        groups = new HashMap();
+        groups = new HashMap<String, Object>();
         pool = new StackObjectPool(new MethodCacheKey.Factory(), 10000);
     }
 

Modified: db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/manager/base/baseManager.vm
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/manager/base/baseManager.vm?rev=1103201&r1=1103200&r2=1103201&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/manager/base/baseManager.vm (original)
+++ db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/manager/base/baseManager.vm Sat May 14 19:56:58 2011
@@ -293,7 +293,7 @@ $torqueGen.mergepoint("serialVersionUid"
     protected List<${dbObjectClassName}> getInstancesImpl(List<ObjectKey> ids)
         throws TorqueException
     {
-        return getOMs(ids);
+        return (List<${dbObjectClassName}>) getOMs(ids);
     }
 
     /**
@@ -308,7 +308,7 @@ $torqueGen.mergepoint("serialVersionUid"
     protected List<${dbObjectClassName}> getInstancesImpl(List<ObjectKey> ids, boolean fromCache)
         throws TorqueException
     {
-        return getOMs(ids, fromCache);
+        return (List<${dbObjectClassName}>) getOMs(ids, fromCache);
     }
 
     /**
@@ -335,7 +335,7 @@ $torqueGen.mergepoint("serialVersionUid"
      * @return a <code>List</code> value
      * @exception TorqueException if an error occurs
      */
-    protected List<${dbObjectClassName}> retrieveStoredOMs(List ids)
+    protected List<${dbObjectClassName}> retrieveStoredOMs(List<ObjectKey> ids)
         throws TorqueException
     {
         return ${peerClassName}.retrieveByPKs(ids);



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org