You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pp...@apache.org on 2009/04/24 19:59:39 UTC

svn commit: r768386 - /openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java

Author: ppoddar
Date: Fri Apr 24 17:59:38 2009
New Revision: 768386

URL: http://svn.apache.org/viewvc?rev=768386&view=rev
Log:
OPENJPA-1050: Use parametrized types wherever applicable

Modified:
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java?rev=768386&r1=768385&r2=768386&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java Fri Apr 24 17:59:38 2009
@@ -25,7 +25,6 @@
 import java.security.AccessController;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.BitSet;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
@@ -80,13 +79,14 @@
  *
  * @author Abe White
  */
+@SuppressWarnings("serial")
 public class ClassMetaData
     extends Extensions
-    implements Comparable, SourceTracker, MetaDataContext, MetaDataModes,
-    Commentable, ValueListener {
+    implements Comparable<ClassMetaData>, SourceTracker, MetaDataContext, 
+    MetaDataModes, Commentable, ValueListener {
 
     /**
-     * Unkonwn identity type.
+     * Unknown identity type.
      */
     public static final int ID_UNKNOWN = 0;
 
@@ -150,27 +150,29 @@
     private int _srcMode = MODE_META | MODE_MAPPING;
     private int _resMode = MODE_NONE;
 
-    private Class _type = Object.class;
-    private final Map _fieldMap = new TreeMap();
-    private Map _supFieldMap = null;
+    private Class<?> _type = Object.class;
+    private final Map<String,FieldMetaData> _fieldMap = 
+    	new TreeMap<String,FieldMetaData>();
+    private Map<String,FieldMetaData> _supFieldMap = null;
     private boolean _defSupFields = false;
-    private Collection _staticFields = null;
+    private Collection<String> _staticFields = null;
     private int[] _fieldDataTable = null;
-    private Map _fgMap = null;
+    private Map<String,FetchGroup> _fgMap = null;
 
     ////////////////////////////////////////////////////////////////////
     // Note: if you add additional state, make sure to add it to copy()
     ////////////////////////////////////////////////////////////////////
 
-    private Class _objectId = null;
+    private Class<?> _objectId = null;
     private Boolean _objectIdShared = null;
     private Boolean _openjpaId = null;
     private Boolean _extent = null;
     private Boolean _embedded = null;
     private Boolean _interface = null;
-    private Class _impl = null;
-    private List _interfaces = null;
-    private final Map _ifaceMap = new HashMap();
+    private Class<?> _impl = null;
+    private List<Class<?>> _interfaces = null;
+    private final Map<Class<?>,Map<String,String>> _ifaceMap = 
+    	new HashMap<Class<?>,Map<String,String>>();
     private int _identity = ID_UNKNOWN;
     private int _idStrategy = ValueStrategies.NONE;
     private int _accessType = ACCESS_UNKNOWN;
@@ -185,9 +187,9 @@
     private String _alias = null;
     private int _versionIdx = Integer.MIN_VALUE;
 
-    private Class _super = null;
+    private Class<?> _super = null;
     private ClassMetaData _superMeta = null;
-    private Class[] _subs = null;
+    private Class<?>[] _subs = null;
     private ClassMetaData[] _subMetas = null;
     private ClassMetaData[] _mapSubMetas = null;
 
@@ -208,7 +210,7 @@
     /**
      * Constructor. Supply described type and repository.
      */
-    protected ClassMetaData(Class type, MetaDataRepository repos) {
+    protected ClassMetaData(Class<?> type, MetaDataRepository repos) {
         _repos = repos;
         _owner = null;
         setDescribedType(type);
@@ -243,15 +245,15 @@
     /**
      * The persistence capable class described by this metadata.
      */
-    public Class getDescribedType() {
+    public Class<?> getDescribedType() {
         return _type;
     }
 
     /**
-     * Set the class descibed by this metadata. The type may be reset when
+     * Set the class described by this metadata. The type may be reset when
      * an embedded value changes its declared type.
      */
-    protected void setDescribedType(Class type) {
+    protected void setDescribedType(Class<?> type) {
         if (type.getSuperclass() != null && "java.lang.Enum".equals
             (type.getSuperclass().getName()))
             throw new MetaDataException(_loc.get("enum", type));
@@ -281,14 +283,14 @@
     /**
      * The persistence capable superclass of the described type.
      */
-    public Class getPCSuperclass() {
+    public Class<?> getPCSuperclass() {
         return _super;
     }
 
     /**
      * The persistence capable superclass of the described type.
      */
-    public void setPCSuperclass(Class pc) {
+    public void setPCSuperclass(Class<?> pc) {
         clearAllFieldCache();
         _super = pc;
     }
@@ -340,13 +342,13 @@
      * Return the known persistence capable subclasses of the described type,
      * or empty array if none or if this is embedded metadata.
      */
-    public Class[] getPCSubclasses() {
+    public Class<?>[] getPCSubclasses() {
         if (_owner != null)
-            return _repos.EMPTY_CLASSES;
+            return MetaDataRepository.EMPTY_CLASSES;
 
         _repos.processRegisteredClasses(_loader);
         if (_subs == null) {
-            Collection subs = _repos.getPCSubclasses(_type);
+            Collection<Class<?>> subs = _repos.getPCSubclasses(_type);
             _subs = (Class[]) subs.toArray(new Class[subs.size()]);
         }
         return _subs;
@@ -361,7 +363,7 @@
         if (_owner != null)
             return _repos.EMPTY_METAS;
 
-        Class[] subs = getPCSubclasses(); // checks for new
+        Class<?>[] subs = getPCSubclasses(); // checks for new
         if (_subMetas == null) {
             if (subs.length == 0)
                 _subMetas = _repos.EMPTY_METAS;
@@ -388,7 +390,8 @@
             if (subs.length == 0)
                 _mapSubMetas = subs;
             else {
-                List mapped = new ArrayList(subs.length);
+                List<ClassMetaData> mapped = 
+                	new ArrayList<ClassMetaData>(subs.length);
                 for (int i = 0; i < subs.length; i++)
                     if (subs[i].isMapped())
                         mapped.add(subs[i]);
@@ -448,7 +451,7 @@
     /**
      * The metadata-specified class to use for the object ID.
      */
-    public Class getObjectIdType() {
+    public Class<?> getObjectIdType() {
         // if this entity does not use IdClass from the parent entity,
         // just return the _objectId set during annotation parsing time.
         if (!useIdClassFromParent()) {
@@ -458,7 +461,7 @@
         
         // if this entity uses IdClass from the parent entity,
         // the _objectId set during the parsing time should be
-        // ignored, and let Openjpa determine the objectId type
+        // ignored, and let the system determine the objectId type
         // of this entity.
         if (getIdentityType() != ID_APPLICATION)
             return null;
@@ -468,7 +471,7 @@
             return _objectId;
         }
 
-        // figure out openjpa identity type based on primary key field
+        // figure out OpenJPA identity type based on primary key field
         FieldMetaData[] pks = getPrimaryKeyFields();
         if (pks.length != 1)
             return null;
@@ -531,7 +534,7 @@
      * the child entity can be ignored as Openjpa will automatically   
      * wrap parent's IdClass as child's IdClass. 
      */
-    public void setObjectIdType(Class cls, boolean shared) {
+    public void setObjectIdType(Class<?> cls, boolean shared) {
         _objectId = null;
         _openjpaId = null;
         _objectIdShared = null;
@@ -563,7 +566,7 @@
      */
     public boolean isOpenJPAIdentity() {
         if (_openjpaId == null) {
-            Class cls = getObjectIdType();
+            Class<?> cls = getObjectIdType();
             if (cls == null)
                 return false;
             _openjpaId = (OpenJPAId.class.isAssignableFrom(cls)) ? Boolean.TRUE
@@ -797,27 +800,27 @@
             setIntercepting(true);
 
         // managed interfaces always use property access.
-        setAccessType(ACCESS_PROPERTY);
+        setAccessType(AccessCode.PROPERTY);
     }
 
     /**
      * Return the managed interface implementor if any.
      */
-    public Class getInterfaceImpl() {
+    public Class<?> getInterfaceImpl() {
         return _impl;
     }
 
     /**
      * Set the managed interface implementor class.
      */
-    public void setInterfaceImpl(Class impl) {
+    public void setInterfaceImpl(Class<?> impl) {
         _impl = impl;
     }
 
     /**
      * Return all explicitly declared interfaces this class implements.
      */
-    public Class[] getDeclaredInterfaces() {
+    public Class<?>[] getDeclaredInterfaces() {
         if (_interfaces == null)
             return MetaDataRepository.EMPTY_CLASSES;
         return (Class[]) _interfaces.toArray(new Class[_interfaces.size()]);
@@ -827,19 +830,19 @@
      * Explicitly declare the given interface among the ones this
      * class implements.
      */
-    public void addDeclaredInterface(Class iface) {
+    public void addDeclaredInterface(Class<?> iface) {
         if (iface == null || !iface.isInterface())
             throw new MetaDataException(_loc.get("declare-non-interface",
                 this, iface));
         if (_interfaces == null)
-            _interfaces = new ArrayList();
+            _interfaces = new ArrayList<Class<?>>();
         _interfaces.add(iface);
     }
 
     /**
      * Remove the given interface from the declared list.
      */
-    public boolean removeDeclaredInterface(Class iface) {
+    public boolean removeDeclaredInterface(Class<?> iface) {
         if (_interfaces == null)
             return false;
         return _interfaces.remove(iface);
@@ -849,12 +852,12 @@
      * Alias properties from the given interface during  queries to
      * the local field.
      */
-    public void setInterfacePropertyAlias(Class iface, String orig, 
+    public void setInterfacePropertyAlias(Class<?> iface, String orig, 
         String local) {
         synchronized (_ifaceMap) {
-            Map fields = (Map) _ifaceMap.get(iface);
+            Map<String,String> fields = _ifaceMap.get(iface);
             if (fields == null) {
-                fields = new HashMap();
+                fields = new HashMap<String,String>();
                 _ifaceMap.put(iface, fields);
             }
             if (fields.containsKey(orig))
@@ -867,25 +870,24 @@
     /**
      * Get local field alias for the given interface property.
      */
-    public String getInterfacePropertyAlias(Class iface, String orig) {
+    public String getInterfacePropertyAlias(Class<?> iface, String orig) {
         synchronized (_ifaceMap) {
-            Map fields = (Map) _ifaceMap.get(iface);
+            Map<String,String> fields = _ifaceMap.get(iface);
             if (fields == null)
                 return null;
-            return (String) fields.get(orig);
+            return fields.get(orig);
         }
     }
     
     /**
      * Return all aliases property named for the given interface.
      */
-    public String[] getInterfaceAliasedProperties(Class iface) {
+    public String[] getInterfaceAliasedProperties(Class<?> iface) {
         synchronized (_ifaceMap) {
-            Map fields = (Map) _ifaceMap.get(iface);
+            Map<String,String> fields = _ifaceMap.get(iface);
             if (fields == null)
                 return EMPTY_STRING_ARRAY;
-            return (String[]) fields.keySet().toArray(
-                new String[fields.size()]);
+            return fields.keySet().toArray(new String[fields.size()]);
         }
     }
     
@@ -902,7 +904,7 @@
     }
 
     /**
-     * Return the impl / intermediate field data index of the given field
+     * Return the intermediate field data index of the given field
      * in the compacted array, or -1 if the field does not use extra data.
      *
      * @see #getExtraFieldDataLength
@@ -941,7 +943,7 @@
         if (_staticFields == null) {
             Field[] fields = (Field[]) AccessController.doPrivileged(
                 J2DoPrivHelper.getDeclaredFieldsAction(_type)); 
-            Set names = new HashSet((int) (fields.length * 1.33 + 1));
+            Set<String> names = new HashSet<String>();
             for (int i = 0; i < fields.length; i++)
                 if (Modifier.isStatic(fields[i].getModifiers()))
                     names.add(fields[i].getName());
@@ -955,7 +957,7 @@
     }
 
     /**
-     * Return all field metadatas, including superclass fields.
+     * Return all field metadata, including superclass fields.
      */
     public FieldMetaData[] getFields() {
         if (_allFields == null) {
@@ -982,23 +984,6 @@
     }
 
     /**
-     * Return all field meta datas that use a specific field access type
-     * Access type must either be FieldMetaData.ACCESS_FIELD or 
-     * FieldMetaData.ACCESS_PROPERTY
-     * @return
-     */
-    public FieldMetaData[] getFields(int accessType) {
-        ArrayList<FieldMetaData> fmds = new ArrayList<FieldMetaData>();
-        FieldMetaData[] allFields = getFields();
-        for (FieldMetaData fmd : allFields) {
-            if (fmd.getAccessType() == accessType) {
-                fmds.add(fmd);
-            }
-        }
-        return fmds.toArray(new FieldMetaData[fmds.size()]);
-    }
-
-    /**
      * Replace superclass fields that we define with our version.
      */
     private void replaceDefinedSuperclassFields(FieldMetaData[] fields,
@@ -1024,7 +1009,8 @@
     protected FieldMetaData getSuperclassField(FieldMetaData supField) {
         ClassMetaData sm = getPCSuperclassMetaData();
         FieldMetaData fmd = sm == null ? null : sm.getField(supField.getName());
-        if (fmd == null || fmd.getManagement() != fmd.MANAGE_PERSISTENT)
+        if (fmd == null 
+        || fmd.getManagement() != FieldMetaData.MANAGE_PERSISTENT)
             throw new MetaDataException(_loc.get("unmanaged-sup-field",
                 supField, this));
         return fmd;
@@ -1035,18 +1021,18 @@
      */
     public FieldMetaData[] getDeclaredFields() {
         if (_fields == null) {
-            List fields = new ArrayList(_fieldMap.size());
-            FieldMetaData fmd;
-            for (Iterator itr = _fieldMap.values().iterator(); itr.hasNext();) {
-                fmd = (FieldMetaData) itr.next();
+            List<FieldMetaData> fields = 
+            	new ArrayList<FieldMetaData>(_fieldMap.size());
+            ;
+            for (FieldMetaData fmd : _fieldMap.values()) {
                 if (fmd.getManagement() != FieldMetaData.MANAGE_NONE) {
                     fmd.setDeclaredIndex(fields.size());
                     fmd.setIndex(fmd.getDeclaredIndex());
                     fields.add(fmd);
                 }
             }
-            _fields = (FieldMetaData[]) fields.toArray
-                (_repos.newFieldMetaDataArray(fields.size()));
+            _fields = fields.toArray
+            	(_repos.newFieldMetaDataArray(fields.size()));
         }
         return _fields;
     }
@@ -1058,8 +1044,9 @@
      * and ending with the primary key fields of the most-derived subclass.
      */
     public FieldMetaData[] getPrimaryKeyFields() {
-        // check for pk fields even if not set to ID_APPLICATION so that
-        // app id tool sees them even when user doesn't declare app id
+        // check for primary key fields even if not set to ID_APPLICATION so 
+        // that Application Id tool sees them even when user doesn't declare 
+    	// Application identity
         if (_allPKFields == null) {
             FieldMetaData[] fields = getFields();
             int num = 0;
@@ -1183,7 +1170,7 @@
      */
     public FieldMetaData getDeclaredField(String name) {
         FieldMetaData field = (FieldMetaData) _fieldMap.get(name);
-        if (field == null || field.getManagement() == field.MANAGE_NONE)
+        if (field == null || field.getManagement() == FieldMetaData.MANAGE_NONE)
             return null;
         return field;
     }
@@ -1194,14 +1181,13 @@
      */
     public FieldMetaData[] getDeclaredUnmanagedFields() {
         if (_unmgdFields == null) {
-            Collection unmanaged = new ArrayList(3);
-            FieldMetaData field;
-            for (Iterator itr = _fieldMap.values().iterator(); itr.hasNext();) {
-                field = (FieldMetaData) itr.next();
+            List<FieldMetaData> unmanaged = new ArrayList<FieldMetaData>(3);
+            ;
+            for (FieldMetaData field : _fieldMap.values()) {
                 if (field.getManagement() == FieldMetaData.MANAGE_NONE)
                     unmanaged.add(field);
             }
-            _unmgdFields = (FieldMetaData[]) unmanaged.toArray
+            _unmgdFields = unmanaged.toArray
                 (_repos.newFieldMetaDataArray(unmanaged.size()));
         }
         return _unmgdFields;
@@ -1210,7 +1196,7 @@
     /**
      * Add a new field metadata to this class.
      */
-    public FieldMetaData addDeclaredField(String name, Class type) {
+    public FieldMetaData addDeclaredField(String name, Class<?> type) {
         FieldMetaData fmd = _repos.newFieldMetaData(name, type, this);
         clearFieldCache();
         _fieldMap.put(name, fmd);
@@ -1242,14 +1228,14 @@
     /**
      * Add a new defined superclass field metadata to this class.
      */
-    public FieldMetaData addDefinedSuperclassField(String name, Class type,
-        Class sup) {
+    public FieldMetaData addDefinedSuperclassField(String name, Class<?> type,
+        Class<?> sup) {
         FieldMetaData fmd = _repos.newFieldMetaData(name, type, this);
         fmd.setDeclaringType(sup);
         clearAllFieldCache();
         _defSupFields = false;
         if (_supFieldMap == null)
-            _supFieldMap = new HashMap();
+            _supFieldMap = new HashMap<String,FieldMetaData>();
         _supFieldMap.put(name, fmd);
         return fmd;
     }
@@ -1312,13 +1298,11 @@
         if (_supFieldMap == null)
             return;
 
-        FieldMetaData fmd;
         FieldMetaData sup;
-        for (Iterator itr = _supFieldMap.values().iterator(); itr.hasNext();) {
-            fmd = (FieldMetaData) itr.next();
+        for (FieldMetaData fmd : _supFieldMap.values()) {
             sup = getSuperclassField(fmd);
 
-            // jpa metadata doesn't qualify superclass field names, so we
+            // JPA metadata doesn't qualify superclass field names, so we
             // might not know the declaring type until now
             if (fmd.getDeclaringType() == Object.class) {
                 fmd.setDeclaringType(sup.getDeclaringType());
@@ -1338,11 +1322,12 @@
     public FieldMetaData[] getDefinedFields() {
         if (_definedFields == null) {
             FieldMetaData[] fields = getFields();
-            List defined = new ArrayList(fields.length);
-            for (int i = 0; i < fields.length; i++) {
-                if (fields[i].isMapped()
-                    && fields[i].getDefiningMetaData() == this)
-                    defined.add(fields[i]);
+            List<FieldMetaData> defined = 
+            	new ArrayList<FieldMetaData>(fields.length);
+            for (FieldMetaData fmd : fields) {
+                if (fmd.isMapped()
+                    && fmd.getDefiningMetaData() == this)
+                    defined.add(fmd);
             }
             _definedFields = (FieldMetaData[]) defined.toArray
                 (_repos.newFieldMetaDataArray(defined.size()));
@@ -1392,10 +1377,11 @@
     public FieldMetaData[] getDefinedFieldsInListingOrder() {
         if (_listingFields == null) {
             FieldMetaData[] fields = getFields();
-            List defined = new ArrayList(fields.length);
-            for (int i = 0; i < fields.length; i++)
-                if (fields[i].getDefiningMetaData() == this)
-                    defined.add(fields[i]);
+            List<FieldMetaData> defined = 
+            	new ArrayList<FieldMetaData>(fields.length);
+            for (FieldMetaData fmd : fields)
+                if (fmd.getDefiningMetaData() == this)
+                    defined.add(fmd);
             FieldMetaData[] unmgd = getDeclaredUnmanagedFields();
             FieldMetaData[] listing = _repos.newFieldMetaDataArray
                 (defined.size() + unmgd.length);
@@ -1634,7 +1620,7 @@
         return _type == ((ClassMetaData) other).getDescribedType();
     }
 
-    public int compareTo(Object other) {
+    public int compareTo(ClassMetaData other) {
         if (other == this)
             return 0;
         return _type.getName().compareTo(((ClassMetaData) other).
@@ -1685,7 +1671,7 @@
         _resMode |= mode;
 
         int val = _repos.getValidate();
-        boolean runtime = (val & _repos.VALIDATE_RUNTIME) != 0;
+        boolean runtime = (val & MetaDataRepository.VALIDATE_RUNTIME) != 0;
         boolean validate =
             !ImplHelper.isManagedType(getRepository().getConfiguration(), _type)
             || (val & MetaDataRepository.VALIDATE_UNENHANCED) == 0;
@@ -1693,12 +1679,12 @@
         // we only do any actions for metadata mode
         if ((mode & MODE_META) != 0 && (cur & MODE_META) == 0) {
             resolveMeta(runtime);
-            if (validate && (val & _repos.VALIDATE_META) != 0)
+            if (validate && (val & MetaDataRepository.VALIDATE_META) != 0)
                 validateMeta(runtime);
         }
         if ((mode & MODE_MAPPING) != 0 && (cur & MODE_MAPPING) == 0) {
             resolveMapping(runtime);
-            if (validate && (val & _repos.VALIDATE_MAPPING) != 0)
+            if (validate && (val & MetaDataRepository.VALIDATE_MAPPING) != 0)
                 validateMapping(runtime);
         }
         if ((mode & MODE_MAPPING_INIT) != 0 && (cur & MODE_MAPPING_INIT) == 0)
@@ -1752,10 +1738,11 @@
 
         // resolve fields and remove invalids
         FieldMetaData fmd;
-        for (Iterator itr = _fieldMap.values().iterator(); itr.hasNext();) {
+        for (Iterator<FieldMetaData> itr = _fieldMap.values().iterator(); 
+        	itr.hasNext();) {
             // only pass on metadata resolve mode so that metadata is always
             // resolved before any other resolve modes our subclasses pass along
-            fmd = (FieldMetaData) itr.next();
+            fmd = itr.next();
             fmd.resolve(MODE_META);
 
             if (!fmd.isExplicit()
@@ -1766,7 +1753,7 @@
                 == JavaTypes.OBJECT))) {
                 _repos.getLog().warn(_loc.get("rm-field", fmd));
                 if (fmd.getListingIndex() != -1)
-                    fmd.setManagement(fmd.MANAGE_NONE);
+                    fmd.setManagement(FieldMetaData.MANAGE_NONE);
                 else
                     itr.remove();
                 clearFieldCache();
@@ -1787,14 +1774,14 @@
 
         // record implements in the repository
         if (_interfaces != null) {
-            for (Iterator it = _interfaces.iterator(); it.hasNext();)
-                _repos.addDeclaredInterfaceImpl(this, (Class) it.next());
+            for (Class<?> iface : _interfaces)
+                _repos.addDeclaredInterfaceImpl(this, iface);
         }
 
         // resolve fetch groups
         if (_fgMap != null)
-            for (Iterator itr = _fgMap.values().iterator(); itr.hasNext();)
-                ((FetchGroup) itr.next()).resolve();
+            for (FetchGroup fg : _fgMap.values())
+                fg.resolve();
 
         if (!embed && _type.isInterface()) {
             if (_interface != Boolean.TRUE)
@@ -1899,7 +1886,7 @@
             throw new MetaDataException(_loc.get("id-types", _type));
 
         // check for things the data store doesn't support
-        Collection opts = _repos.getConfiguration().supportedOptions();
+        Collection<String> opts = _repos.getConfiguration().supportedOptions();
         if (id == ID_APPLICATION
             && !opts.contains(OpenJPAConfiguration.OPTION_ID_APPLICATION)) {
             throw new UnsupportedException(_loc.get("appid-not-supported",
@@ -1955,9 +1942,9 @@
         }
 
         if (_super != null) {
-            // concrete superclass oids must match or be parent of ours
+            // concrete superclass oid must match or be parent of ours
             ClassMetaData sup = getPCSuperclassMetaData();
-            Class objectIdType = sup.getObjectIdType();
+            Class<?> objectIdType = sup.getObjectIdType();
             if (objectIdType != null && 
                 !objectIdType.isAssignableFrom(_objectId))
                 throw new MetaDataException(_loc.get("id-classes",
@@ -1977,7 +1964,7 @@
             if (!Modifier.isAbstract(_objectId.getModifiers()))
                 validateAppIdClassMethods(_objectId);
 
-            // make sure the app id class has all pk fields
+            // make sure the application id class has all primary key fields
             validateAppIdClassPKs(this, pks, _objectId);
         }
     }
@@ -2000,7 +1987,7 @@
                     if (pkMeta == null)
                         _useIdClassFromParent = false;
                     else {
-                        Class pkType = pkMeta.getObjectIdType();
+                        Class<?> pkType = pkMeta.getObjectIdType();
                         if (pkType == ObjectId.class) //parent id is EmbeddedId
                             pkType = pkMeta.getPrimaryKeyFields()[0].getType();
                         if (pkType == _objectId)
@@ -2036,7 +2023,7 @@
      * Ensure that the user has overridden the equals and hashCode methods,
      * and has the proper constructors.
      */
-    private void validateAppIdClassMethods(Class oid) {
+    private void validateAppIdClassMethods(Class<?> oid) {
         try {
             oid.getConstructor((Class[]) null);
         } catch (Exception e) {
@@ -2045,7 +2032,7 @@
         }
 
         // check for equals and hashcode overrides; don't enforce it
-        // for abstract app id classes, since they may not necessarily
+        // for abstract application id classes, since they may not necessarily
         // declare primary key fields
         Method method;
         try {
@@ -2071,7 +2058,7 @@
      * Validate that the primary key class has all pk fields.
      */
     private void validateAppIdClassPKs(ClassMetaData meta,
-        FieldMetaData[] fmds, Class oid) {
+        FieldMetaData[] fmds, Class<?> oid) {
         if (fmds.length == 0 && !Modifier.isAbstract(meta.getDescribedType().
             getModifiers()))
             throw new MetaDataException(_loc.get("no-pk", _type));
@@ -2079,7 +2066,7 @@
         // check that the oid type contains all pk fields
         Field f;
         Method m;
-        Class c;
+        Class<?> c;
         for (int i = 0; i < fmds.length; i++) {
             switch (fmds[i].getDeclaredTypeCode()) {
                 case JavaTypes.ARRAY:
@@ -2105,7 +2092,7 @@
                 if (f == null || !f.getType().isAssignableFrom(c))
                     throw new MetaDataException(_loc.get("invalid-id",
                         _type, fmds[i].getName()));
-            } else if (fmds[i].getAccessType() == ACCESS_PROPERTY) {
+            } else if (AccessCode.isProperty(fmds[i].getAccessType())) {
                 m = Reflection.findGetter(oid, fmds[i].getName(), false);
                 if (m == null || !m.getReturnType().isAssignableFrom(c))
                     throw new MetaDataException(_loc.get("invalid-id",
@@ -2196,8 +2183,8 @@
      */
     public FetchGroup[] getCustomFetchGroups() {
         if (_customFGs == null) {
-            // map fgs to names, allowing our fgs to override supers
-            Map fgs = new HashMap();
+            // map fetch groups to names, allowing our groups to override super
+            Map<String,FetchGroup> fgs = new HashMap<String,FetchGroup>();
             ClassMetaData sup = getPCSuperclassMetaData();
             if (sup != null)
             {
@@ -2209,7 +2196,7 @@
             for (int i = 0; i < decs.length; i++)
                 fgs.put(decs[i].getName(), decs[i]);
             
-            // remove std groups
+            // remove standard groups
             fgs.remove(FetchGroup.NAME_DEFAULT);
             fgs.remove(FetchGroup.NAME_ALL);
 
@@ -2220,11 +2207,11 @@
     }
 
     /**
-     * Gets a named fecth group. If not available in this receiver then looks
-     * up the inheritence hierarchy. 
+     * Gets a named fetch group. If not available in this receiver then looks
+     * up the inheritance hierarchy. 
      *
      * @param name name of a fetch group.
-     * @return an existing fecth group of the given name if known to this 
+     * @return an existing fetch group of the given name if known to this 
      * receiver or any of its superclasses. Otherwise null.
      */
     public FetchGroup getFetchGroup(String name) {
@@ -2252,7 +2239,7 @@
     	if (StringUtils.isEmpty(name))
     		throw new MetaDataException(_loc.get("empty-fg-name", this));
         if (_fgMap == null)
-            _fgMap = new HashMap();
+            _fgMap = new HashMap<String,FetchGroup>();
         FetchGroup fg = (FetchGroup) _fgMap.get(name);
         if (fg == null) {
         	fg = new FetchGroup(this, name);
@@ -2438,7 +2425,7 @@
             fg.copy(fgs[i]); 
         }
 
-        // copy iface re-mapping
+        // copy interface re-mapping
         _ifaceMap.clear();
         _ifaceMap.putAll(meta._ifaceMap);
     }
@@ -2460,10 +2447,10 @@
     }
 
     /**
-     * Comparator used to put field metadatas into listing order.
+     * Comparator used to put field metadata into listing order.
      */
     private static class ListingOrderComparator
-        implements Comparator {
+        implements Comparator<FieldMetaData> {
 
         private static final ListingOrderComparator _instance
             = new ListingOrderComparator();
@@ -2475,16 +2462,14 @@
             return _instance;
         }
 
-        public int compare(Object o1, Object o2) {
-            if (o1 == o2)
+        public int compare(FieldMetaData f1, FieldMetaData f2) {
+            if (f1 == f2)
                 return 0;
-            if (o1 == null)
+            if (f1 == null)
                 return 1;
-            if (o2 == null)
+            if (f2 == null)
                 return -1;
 
-            FieldMetaData f1 = (FieldMetaData) o1;
-            FieldMetaData f2 = (FieldMetaData) o2;
             if (f1.getListingIndex() == f2.getListingIndex()) {
                 if (f1.getIndex() == f2.getIndex())
                     return f1.getFullName(false).compareTo
@@ -2568,5 +2553,4 @@
     public void setAbstract(boolean flag) {
         _abstract = flag;
     }
-    
 }