use generic Class in the rest of the main codebase

Signed-off-by: Lukas Jungmann <lukas.jungmann@oracle.com>
diff --git a/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/corba/sun/CORBAConnection.java b/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/corba/sun/CORBAConnection.java
index c2d6674..f27aa54 100644
--- a/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/corba/sun/CORBAConnection.java
+++ b/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/corba/sun/CORBAConnection.java
@@ -223,7 +223,7 @@
      * Return the table descriptor specified for the class.
      */
     @Override
-    public ClassDescriptor getDescriptor(Class domainClass) {
+    public ClassDescriptor getDescriptor(Class<?> domainClass) {
         Transporter transporter = getRemoteSessionController().getDescriptor(new Transporter(domainClass));
         if (!transporter.wasOperationSuccessful()) {
             throw transporter.getException();
@@ -250,7 +250,7 @@
      * INTERNAL:
      * Return the table descriptor specified for the alias.
      */
-    public ClassDescriptor getDescriptorForAlias(Class domainClass) {
+    public ClassDescriptor getDescriptorForAlias(Class<?> domainClass) {
         Transporter transporter = getRemoteSessionController().getDescriptorForAlias(new Transporter(domainClass));
         if (!transporter.wasOperationSuccessful()) {
             throw transporter.getException();
@@ -357,7 +357,7 @@
      * Execute query remotely.
      */
     @Override
-    public Transporter remoteExecuteNamedQuery(String name, Class javaClass, Vector arguments) {
+    public Transporter remoteExecuteNamedQuery(String name, Class<?> javaClass, Vector arguments) {
         Transporter transporter = getRemoteSessionController().executeNamedQuery(new Transporter(name), new Transporter(javaClass), new Transporter(arguments));
         if (!transporter.wasOperationSuccessful()) {
             throw transporter.getException();
diff --git a/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/rmi/iiop/RMIConnection.java b/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/rmi/iiop/RMIConnection.java
index 4249ad4..5b2081a 100644
--- a/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/rmi/iiop/RMIConnection.java
+++ b/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/rmi/iiop/RMIConnection.java
@@ -298,7 +298,7 @@
      * Return the table descriptor specified for the class.
      */
     @Override
-    public ClassDescriptor getDescriptor(Class domainClass) {
+    public ClassDescriptor getDescriptor(Class<?> domainClass) {
         try {
             Transporter transporter = getRemoteSessionController().getDescriptor(new Transporter(domainClass));
             if (!transporter.wasOperationSuccessful()) {
@@ -434,7 +434,7 @@
      * Execute query remotely.
      */
     @Override
-    public Transporter remoteExecuteNamedQuery(String name, Class javaClass, Vector arguments) {
+    public Transporter remoteExecuteNamedQuery(String name, Class<?> javaClass, Vector arguments) {
         try {
             Transporter transporter = getRemoteSessionController().executeNamedQuery(new Transporter(name), new Transporter(javaClass), new Transporter(arguments));
             transporter.expand(this.session);
diff --git a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/Oracle8Platform.java b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/Oracle8Platform.java
index 02809ed..941dcdf 100644
--- a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/Oracle8Platform.java
+++ b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/Oracle8Platform.java
@@ -135,7 +135,7 @@
      */
     @Override
     public Object getCustomModifyValueForCall(Call call, Object value, DatabaseField field, boolean shouldBind) {
-        Class type = field.getType();
+        Class<?> type = field.getType();
         if (ClassConstants.BLOB.equals(type) || ClassConstants.CLOB.equals(type)) {
             if(value == null) {
                 return null;
@@ -176,7 +176,7 @@
     @Override
     public boolean shouldUseCustomModifyForCall(DatabaseField field) {
         if (shouldUseLocatorForLOBWrite()) {
-            Class type = field.getType();
+            Class<?> type = field.getType();
             if (ClassConstants.BLOB.equals(type) || ClassConstants.CLOB.equals(type)) {
                 return true;
             }
@@ -211,7 +211,7 @@
      * INTERNAL:
      * Used in writeLOB method only to identify a BLOB
      */
-    protected boolean isBlob(Class type) {
+    protected boolean isBlob(Class<?> type) {
         return ClassConstants.BLOB.equals(type);
     }
 
@@ -219,7 +219,7 @@
      * INTERNAL:
      * Used in writeLOB method only to identify a CLOB
      */
-    protected boolean isClob(Class type) {
+    protected boolean isClob(Class<?> type) {
         return ClassConstants.CLOB.equals(type);
     }
 
diff --git a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/Oracle9Platform.java b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/Oracle9Platform.java
index b120cb5..b65edef 100644
--- a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/Oracle9Platform.java
+++ b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/Oracle9Platform.java
@@ -286,7 +286,7 @@
      */
     @Override
     public boolean shouldUseCustomModifyForCall(DatabaseField field) {
-        Class type = field.getType();
+        Class<?> type = field.getType();
         if ((type != null) && isOracle9Specific(type)) {
             return true;
         }
@@ -676,7 +676,7 @@
      * Return if the type is a special oracle type.
      * bug 3325122 - just checking against the 4 classes is faster than isAssignableFrom MWN.
      */
-    protected boolean isOracle9Specific(Class type) {
+    protected boolean isOracle9Specific(Class<?> type) {
         return (type == NCHAR) || (type == NSTRING) || (type == NCLOB) || (type == XMLTYPE);
     }
 
@@ -685,7 +685,7 @@
      * Used in write LOB method only to identify a CLOB.
      */
     @Override
-    protected boolean isClob(Class type) {
+    protected boolean isClob(Class<?> type) {
         return NCLOB.equals(type) || super.isClob(type);
     }
 
@@ -698,7 +698,7 @@
      */
     @Override
     public Object getCustomModifyValueForCall(Call call, Object value, DatabaseField field, boolean shouldBind) {
-        Class type = field.getType();
+        Class<?> type = field.getType();
         if ((type != null) && isOracle9Specific(type)) {
             if(value == null) {
                 return null;
@@ -721,7 +721,7 @@
         return super.getCustomModifyValueForCall(call, value, field, shouldBind);
     }
 
-    protected List buildFromStringCharVec(Class javaClass) {
+    protected List buildFromStringCharVec(Class<?> javaClass) {
         List<Class<?>> vec = getConversionManager().getDataTypesConvertedFrom(javaClass);
         vec.add(NCHAR);
         vec.add(NSTRING);
@@ -809,7 +809,7 @@
      * The Oracle driver does not like the OPAQUE type so VARCHAR must be used.
      */
     @Override
-    public int getJDBCType(Class javaType) {
+    public int getJDBCType(Class<?> javaType) {
         if (javaType == XMLTYPE) {
             //return OracleTypes.OPAQUE;
             // VARCHAR seems to work...
@@ -886,11 +886,11 @@
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     Class<XMLTypeFactory> xmlTypeFactoryClass = AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, this.getClass().getClassLoader()));
-                    Constructor<XMLTypeFactory> xmlTypeFactoryConstructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<>(xmlTypeFactoryClass, new Class[0], true));
+                    Constructor<XMLTypeFactory> xmlTypeFactoryConstructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<>(xmlTypeFactoryClass, new Class<?>[0], true));
                     xmlTypeFactory = AccessController.doPrivileged(new PrivilegedInvokeConstructor<>(xmlTypeFactoryConstructor, new Object[0]));
                 }else{
                     Class<XMLTypeFactory> xmlTypeFactoryClass = PrivilegedAccessHelper.getClassForName(className, true, this.getClass().getClassLoader());
-                    Constructor<XMLTypeFactory> xmlTypeFactoryConstructor = PrivilegedAccessHelper.getConstructorFor(xmlTypeFactoryClass, new Class[0], true);
+                    Constructor<XMLTypeFactory> xmlTypeFactoryConstructor = PrivilegedAccessHelper.getConstructorFor(xmlTypeFactoryClass, new Class<?>[0], true);
                     xmlTypeFactory = PrivilegedAccessHelper.invokeConstructor(xmlTypeFactoryConstructor, new Object[0]);
                 }
             } catch (Exception e) {
diff --git a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/converters/JGeometryConverter.java b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/converters/JGeometryConverter.java
index e127b11..1ec834a 100644
--- a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/converters/JGeometryConverter.java
+++ b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/converters/JGeometryConverter.java
@@ -58,7 +58,7 @@
     }
 
     @Override
-    public Class getJavaType() {
+    public Class<?> getJavaType() {
         return JGEOMETRY_CLASS;
     }
 
diff --git a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/xml/xdk/XDKPlatform.java b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/xml/xdk/XDKPlatform.java
index c688ec9..5571fe6 100644
--- a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/xml/xdk/XDKPlatform.java
+++ b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/xml/xdk/XDKPlatform.java
@@ -67,7 +67,7 @@
     public XDKPlatform() {
         super();
         try {
-            Class[] argTypes = { URL.class };
+            Class<?>[] argTypes = { URL.class };
             buildSchemaMethod = Helper.getDeclaredMethod(XSDBuilder.class, "build", argTypes);
         } catch (NoSuchMethodException e) {
         }
diff --git a/jpa/eclipselink.jpa.test.jse/src/it/java/org/eclipse/persistence/jpa/test/oraclefeatures/TestOracleLOBLocatorFeature.java b/jpa/eclipselink.jpa.test.jse/src/it/java/org/eclipse/persistence/jpa/test/oraclefeatures/TestOracleLOBLocatorFeature.java
index c8a1e3c..c00af03 100644
--- a/jpa/eclipselink.jpa.test.jse/src/it/java/org/eclipse/persistence/jpa/test/oraclefeatures/TestOracleLOBLocatorFeature.java
+++ b/jpa/eclipselink.jpa.test.jse/src/it/java/org/eclipse/persistence/jpa/test/oraclefeatures/TestOracleLOBLocatorFeature.java
@@ -219,7 +219,7 @@
     }
     
     @SuppressWarnings("rawtypes")
-    protected Matcher getExceptionChainMatcher(final Class t) {
+    protected Matcher getExceptionChainMatcher(final Class<?> t) {
         return new BaseMatcher() {
             final protected Class<?> expected = t;
 
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/AttributeNodeImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/AttributeNodeImpl.java
index b54ccf8..0058c34 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/AttributeNodeImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/AttributeNodeImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -26,6 +26,7 @@
  * Concrete JPA AttributeNode class. For this implementation the AttributeNode includes information from live
  * AttributeItems.
  */
+@SuppressWarnings({"rawtypes"})
 public class AttributeNodeImpl<X> implements AttributeNode<X>{
 
 
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/CMP3Policy.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/CMP3Policy.java
index b00b5e1..8c718b7 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/CMP3Policy.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/CMP3Policy.java
@@ -79,7 +79,7 @@
     protected String pkClassName;
 
     // Stores the class version of the PKClass
-    protected Class pkClass = null;
+    protected Class<?> pkClass = null;
 
     public CMP3Policy() {
         super();
@@ -134,7 +134,7 @@
     public void convertClassNamesToClasses(ClassLoader classLoader){
         if(getPKClassName() != null){
             try{
-                Class aPKClass = null;
+                Class<?> aPKClass = null;
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
                         aPKClass = AccessController.doPrivileged(new PrivilegedClassForName<>(getPKClassName(), true, classLoader));
@@ -173,14 +173,14 @@
      * Return the java Class representing the primary key class name
      */
     @Override
-    public Class getPKClass() {
+    public Class<?> getPKClass() {
         return this.pkClass;
     }
 
     /**
      * ADVANCED:
      */
-    public void setPKClass(Class pkClass) {
+    public void setPKClass(Class<?> pkClass) {
         this.pkClass = pkClass;
     }
 
@@ -274,7 +274,7 @@
      * INTERNAL:
      * @return the field from the class with name equal to fieldName.
      */
-    protected Field getField(Class cls, String fieldName) throws NoSuchFieldException {
+    protected Field getField(Class<?> cls, String fieldName) throws NoSuchFieldException {
         Field keyField = null;
         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
             try {
@@ -346,7 +346,7 @@
      * these fields may have been loaded with the wrong loader (thank you Kirk).
      * If the key is compound, we also have to look up the fields for the key.
      */
-    protected KeyElementAccessor[] initializePrimaryKeyFields(Class keyClass, AbstractSession session) {
+    protected KeyElementAccessor[] initializePrimaryKeyFields(Class<?> keyClass, AbstractSession session) {
         KeyElementAccessor[] pkAttributes = null;
         ClassDescriptor aDescriptor = this.getDescriptor();
 
@@ -371,7 +371,7 @@
             Exception noSuchElementException = null;
 
             // Set the current key class ...
-            Class currentKeyClass = keyClass;
+            Class<?> currentKeyClass = keyClass;
 
             // We always start by looking at the writable mappings first. Our preference is to use the
             // writable mappings unless a derived id mapping is specified in which case we'll want to use
@@ -482,22 +482,22 @@
                                     Method getMethod = null;
                                     if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                                         try {
-                                            getMethod = AccessController.doPrivileged(new PrivilegedGetMethod(currentKeyClass, getMethodName, new Class[] {}, true));
+                                            getMethod = AccessController.doPrivileged(new PrivilegedGetMethod(currentKeyClass, getMethodName, new Class<?>[] {}, true));
                                         } catch (PrivilegedActionException exception) {
                                             throw (NoSuchMethodException)exception.getException();
                                         }
                                     } else {
-                                        getMethod = PrivilegedAccessHelper.getMethod(currentKeyClass, getMethodName, new Class[] {}, true);
+                                        getMethod = PrivilegedAccessHelper.getMethod(currentKeyClass, getMethodName, new Class<?>[] {}, true);
                                     }
                                     Method setMethod = null;
                                     if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                                         try {
-                                            setMethod = AccessController.doPrivileged(new PrivilegedGetMethod(currentKeyClass, setMethodName, new Class[] {getMethod.getReturnType()}, true));
+                                            setMethod = AccessController.doPrivileged(new PrivilegedGetMethod(currentKeyClass, setMethodName, new Class<?>[] {getMethod.getReturnType()}, true));
                                         } catch (PrivilegedActionException exception) {
                                             throw (NoSuchMethodException)exception.getException();
                                         }
                                     } else {
-                                        setMethod = PrivilegedAccessHelper.getMethod(currentKeyClass, setMethodName, new Class[] {getMethod.getReturnType()}, true);
+                                        setMethod = PrivilegedAccessHelper.getMethod(currentKeyClass, setMethodName, new Class<?>[] {getMethod.getReturnType()}, true);
                                     }
                                     pkAttributes[i] = new PropertyAccessor(this, getMethod, setMethod, fieldName, field, mapping, currentKeyClass != keyClass);
                                     this.fieldToAccessorMap.put(field, pkAttributes[i]);
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/CacheImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/CacheImpl.java
index cfe96d7..6953048 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/CacheImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/CacheImpl.java
@@ -56,6 +56,7 @@
      * @see Cache#contains(Class, Object)
      */
     @Override
+    @SuppressWarnings({"rawtypes"})
     public boolean contains(Class cls, Object id) {
         getEntityManagerFactory().verifyOpen();
         Object pk =  createPrimaryKeyFromId(cls, id);
@@ -87,7 +88,7 @@
      * If the class is not an Entity or MappedSuperclass (such as an Embeddable or plain java class)
      *  - nothing will be evicted
      */
-    private void evictAssignableEntitySuperclass(Class possibleSuperclass, Object id) {
+    private void evictAssignableEntitySuperclass(Class<?> possibleSuperclass, Object id) {
         // just remove the parent entity
         for(ClassDescriptor candidateAssignableDescriptor : getSession().getDescriptors().values()) {
             // In EclipseLink we need only remove the root descriptor that is assignable from this possibleSubclass because the recurse flag defaults to true in invalidateClass()
@@ -127,6 +128,7 @@
      *    A null id means invalidate the class - possibly the entire tree or subtree
      */
     @Override
+    @SuppressWarnings({"rawtypes"})
     public void evict(Class classToEvict, Object id) {
         evict(classToEvict, id, false);
     }
@@ -148,7 +150,7 @@
      * @param invalidateInCluster - Invalidate the object id in the cluster, this only applies to a non-null id.
      */
     @Override
-    public void evict(Class classToEvict, Object id, boolean invalidateInCluster) {
+    public void evict(Class<?> classToEvict, Object id, boolean invalidateInCluster) {
         getEntityManagerFactory().verifyOpen();
         /**
          * The following descriptor lookup will return the Entity representing the classToEvict parameter,
@@ -189,6 +191,7 @@
      * @param entityOrMappedSuperclassToEvict - Entity or MappedSuperclass Class
      */
     @Override
+    @SuppressWarnings({"rawtypes"})
     public void evict(Class entityOrMappedSuperclassToEvict) {
         // A null id means invalidate the class - possibly the entire tree or subtree
         evict(entityOrMappedSuperclassToEvict, null);
@@ -207,7 +210,7 @@
     /**
      * Return the EclipseLink cache key object from the JPA Id object.
      */
-    private Object createPrimaryKeyFromId(Class cls, Object id) {
+    private Object createPrimaryKeyFromId(Class<?> cls, Object id) {
         Object cacheKey = null;
         ClassDescriptor aDescriptor = getSession().getDescriptor(cls);
         // Check that we have a descriptor associated with the class (Entity or MappedSuperclass)
@@ -250,7 +253,7 @@
      * are not referenced from other Objects of other classes or from the application.
      */
     @Override
-    public void clear(Class cls) {
+    public void clear(Class<?> cls) {
         getEntityManagerFactory().verifyOpen();
         getAccessor().initializeIdentityMap(cls);
     }
@@ -277,7 +280,7 @@
      * Clear all named query results cache associated with entity class.
      */
     @Override
-    public void clearQueryCache(Class entityClass) {
+    public void clearQueryCache(Class<?> entityClass) {
         getEntityManagerFactory().verifyOpen();
         getAccessor().invalidateQueryCache(entityClass);
     }
@@ -307,7 +310,7 @@
      * Returns true if the Object with the id and Class type is valid in the cache.
      */
     @Override
-    public boolean isValid(Class cls, Object id) {
+    public boolean isValid(Class<?> cls, Object id) {
         getEntityManagerFactory().verifyOpen();
         Object cacheKey = createPrimaryKeyFromId(cls, id);
         if(null != cacheKey) {
@@ -332,7 +335,7 @@
      * The output of this method will be logged to this persistence unit's SessionLog at SEVERE level.
      */
     @Override
-    public void print(Class cls) {
+    public void print(Class<?> cls) {
         getEntityManagerFactory().verifyOpen();
         getAccessor().printIdentityMap(cls);
     }
@@ -364,7 +367,7 @@
      * and Class type.
      */
     @Override
-    public Object getObject(Class cls, Object id) {
+    public Object getObject(Class<?> cls, Object id) {
         getEntityManagerFactory().verifyOpen();
         Object cacheKey = createPrimaryKeyFromId(cls, id);
         return getAccessor().getFromIdentityMap(cacheKey, cls);
@@ -402,7 +405,7 @@
      * The application should only call this if its known that no references to the Object exist.
      */
     @Override
-    public Object removeObject(Class cls, Object id) {
+    public Object removeObject(Class<?> cls, Object id) {
         getEntityManagerFactory().verifyOpen();
         Object cacheKey = createPrimaryKeyFromId(cls, id);
         return getAccessor().removeFromIdentityMap(cacheKey, cls);
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EJBQueryImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EJBQueryImpl.java
index 51bf293..23e8268 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EJBQueryImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EJBQueryImpl.java
@@ -201,7 +201,7 @@
     /**
      * Build a ReadAllQuery from a class and sql string.
      */
-    public static DatabaseQuery buildSQLDatabaseQuery(Class resultClass, String sqlString, ClassLoader classLoader, AbstractSession session) {
+    public static DatabaseQuery buildSQLDatabaseQuery(Class<?> resultClass, String sqlString, ClassLoader classLoader, AbstractSession session) {
         return buildSQLDatabaseQuery(resultClass, sqlString, null, classLoader, session);
     }
 
@@ -211,7 +211,7 @@
      * @param hints
      *            a list of hints to be applied to the query.
      */
-    public static DatabaseQuery buildSQLDatabaseQuery(Class resultClass, String sqlString, Map<String, Object> hints, ClassLoader classLoader, AbstractSession session) {
+    public static DatabaseQuery buildSQLDatabaseQuery(Class<?> resultClass, String sqlString, Map<String, Object> hints, ClassLoader classLoader, AbstractSession session) {
         ReadAllQuery query = new ReadAllQuery(resultClass);
         query.setCall(((DatasourcePlatform)session.getPlatform(resultClass)).buildNativeCall(sqlString));
         query.setIsUserDefined(true);
@@ -314,7 +314,7 @@
         DatabaseQuery query = getDatabaseQueryInternal();
         try {
             if (query.isReadAllQuery()) {
-                Class containerClass = ((ReadAllQuery) getDatabaseQueryInternal()).getContainerPolicy().getContainerClass();
+                Class<?> containerClass = ((ReadAllQuery) getDatabaseQueryInternal()).getContainerPolicy().getContainerClass();
                 if (!Helper.classImplementsInterface(containerClass, ClassConstants.Collection_Class)) {
                     throw QueryException.invalidContainerClass(containerClass, ClassConstants.Collection_Class);
                 }
@@ -360,7 +360,7 @@
             // not the right type
             if (getDatabaseQueryInternal() instanceof ReadAllQuery) {
                 if (!((ReadAllQuery) getDatabaseQueryInternal()).getContainerPolicy().isCursorPolicy()) {
-                    Class containerClass = ((ReadAllQuery) getDatabaseQueryInternal()).getContainerPolicy().getContainerClass();
+                    Class<?> containerClass = ((ReadAllQuery) getDatabaseQueryInternal()).getContainerPolicy().getContainerClass();
                     throw QueryException.invalidContainerClass(containerClass, Cursor.class);
                 }
             } else if (getDatabaseQueryInternal() instanceof ReadObjectQuery) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityGraphImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityGraphImpl.java
index 316085b..3c7e6dd 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityGraphImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityGraphImpl.java
@@ -284,7 +284,7 @@
             }
             if (item.getGroups() != null && ! item.getGroups().isEmpty()) {
                 for (AttributeGroup subGroup : item.getGroups().values()) {
-                    Class type = subGroup.getType();
+                    Class<?> type = subGroup.getType();
                     if (type == null) {
                         type = CoreClassConstants.OBJECT;
                     }
@@ -301,7 +301,7 @@
             }
             if (item.getKeyGroups() != null && ! item.getKeyGroups().isEmpty()) {
                 for (AttributeGroup subGroup : item.getKeyGroups().values()) {
-                    Class type = subGroup.getType();
+                    Class<?> type = subGroup.getType();
                     if (type == null) {
                         type = CoreClassConstants.OBJECT;
                     }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerImpl.java
index 8e4347a..e6d07be 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerImpl.java
@@ -1186,12 +1186,12 @@
     }
 
     @Override
-    public jakarta.persistence.Query createDescriptorNamedQuery(String queryName, Class descriptorClass) {
+    public jakarta.persistence.Query createDescriptorNamedQuery(String queryName, Class<?> descriptorClass) {
         return createDescriptorNamedQuery(queryName, descriptorClass, null);
     }
 
     @Override
-    public jakarta.persistence.Query createDescriptorNamedQuery(String queryName, Class descriptorClass, List argumentTypes) {
+    public jakarta.persistence.Query createDescriptorNamedQuery(String queryName, Class<?> descriptorClass, List argumentTypes) {
         try {
             verifyOpen();
             ClassDescriptor descriptor = this.databaseSession.getDescriptor(descriptorClass);
@@ -1290,6 +1290,7 @@
      * expected return type.
      */
     @Override
+    @SuppressWarnings({"rawtypes"})
     public Query createNativeQuery(String sqlString, Class resultType) {
         try {
             verifyOpen();
@@ -1449,7 +1450,7 @@
     /**
      * Build a selection query for the primary key values.
      */
-    protected ReadObjectQuery getReadObjectQuery(Class referenceClass, Object primaryKey, Map properties) {
+    protected ReadObjectQuery getReadObjectQuery(Class<?> referenceClass, Object primaryKey, Map properties) {
         ReadObjectQuery query = getReadObjectQuery(properties);
         query.setReferenceClass(referenceClass);
         query.setSelectionId(primaryKey);
@@ -1580,7 +1581,7 @@
      * Session broker implement composite persistence unit.
      */
     @Override
-    public DatabaseSessionImpl getMemberDatabaseSession(Class cls) {
+    public DatabaseSessionImpl getMemberDatabaseSession(Class<?> cls) {
         if(this.databaseSession.isBroker()) {
             return (DatabaseSessionImpl) this.databaseSession.getSessionForClass(cls);
         } else {
@@ -1594,7 +1595,7 @@
      * Session broker implement composite persistence unit.
      */
     @Override
-    public ServerSession getMemberServerSession(Class cls) {
+    public ServerSession getMemberServerSession(Class<?> cls) {
         if(this.databaseSession.isBroker()) {
             return (ServerSession) this.databaseSession.getSessionForClass(cls);
         } else {
@@ -1608,7 +1609,7 @@
      * Session broker implement composite persistence unit.
      */
     @Override
-    public String getMemberSessionName(Class cls) {
+    public String getMemberSessionName(Class<?> cls) {
         if(this.databaseSession.isBroker()) {
             return this.databaseSession.getSessionForClass(cls).getName();
         } else {
@@ -1621,7 +1622,7 @@
      * the return type.
      */
     @Override
-    public jakarta.persistence.Query createQuery(Expression expression, Class resultType) {
+    public jakarta.persistence.Query createQuery(Expression expression, Class<?> resultType) {
         try {
             verifyOpen();
             DatabaseQuery query = createQueryInternal(expression, resultType);
@@ -1697,7 +1698,7 @@
      * This method is used to create a query using a EclipseLink Call.
      */
     @Override
-    public jakarta.persistence.Query createQuery(Call call, Class entityClass) {
+    public jakarta.persistence.Query createQuery(Call call, Class<?> entityClass) {
         try {
             verifyOpen();
             ReadAllQuery query = new ReadAllQuery(entityClass, call);
@@ -1752,7 +1753,7 @@
      * This method is used to create a query using a EclipseLink Expression and
      * the return type.
      */
-    protected DatabaseQuery createQueryInternal(Expression expression, Class resultType) {
+    protected DatabaseQuery createQueryInternal(Expression expression, Class<?> resultType) {
         ReadAllQuery query = new ReadAllQuery(resultType);
         query.setSelectionCriteria(expression);
         return query;
@@ -1803,6 +1804,7 @@
      * @since EclipseLink 2.5/Java Persistence 2.1
      */
     @Override
+    @SuppressWarnings({"rawtypes"})
     public StoredProcedureQuery createStoredProcedureQuery(String procedureName, Class... resultClasses) {
         try {
             verifyOpen();
@@ -1811,7 +1813,7 @@
             call.setHasMultipleResultSets(resultClasses.length > 1);
 
             List<SQLResultSetMapping> sqlResultSetMappings = new ArrayList<SQLResultSetMapping>();
-            for (Class resultClass : resultClasses) {
+            for (Class<?> resultClass : resultClasses) {
                 sqlResultSetMappings.add(new SQLResultSetMapping(resultClass));
             }
 
@@ -2716,7 +2718,7 @@
                 // If the descriptor is isolated then it is not cacheable so ignore
                 // the properties. A null descriptor case will be handled in the
                 // individual operation methods so no need to worry about it here.
-                Class cls = entity instanceof Class ? (Class) entity : entity.getClass();
+                Class<?> cls = entity instanceof Class<?> ? (Class) entity : entity.getClass();
                 ClassDescriptor descriptor = getActiveSession().getDescriptor(cls);
 
                 if (descriptor != null && ! descriptor.isIsolated()) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerSetupImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerSetupImpl.java
index d7390fd..cedee1b 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerSetupImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerSetupImpl.java
@@ -215,6 +215,7 @@
 import org.eclipse.persistence.internal.helper.Helper;
 import org.eclipse.persistence.internal.helper.JPAClassLoaderHolder;
 import org.eclipse.persistence.internal.helper.JPAConversionManager;
+import org.eclipse.persistence.internal.identitymaps.IdentityMap;
 import org.eclipse.persistence.internal.jpa.deployment.BeanValidationInitializationHelper;
 import org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor;
 import org.eclipse.persistence.internal.jpa.deployment.SEPersistenceUnitInfo;
@@ -880,7 +881,7 @@
         for (ClassDescriptor descriptor: session.getProject().getDescriptors().values()) {
             //process customizers:
             if (descriptor.getDescriptorCustomizerClassName() != null) {
-                Class listenerClass = findClass(descriptor.getDescriptorCustomizerClassName(), realClassLoader);
+                Class<?> listenerClass = findClass(descriptor.getDescriptorCustomizerClassName(), realClassLoader);
                 DescriptorCustomizer customizer = (DescriptorCustomizer) buildObjectForClass(listenerClass, DescriptorCustomizer.class);
                 try {
                     customizer.customize(descriptor);
@@ -1029,7 +1030,7 @@
         // originalServerPlatform is always non-null - Session's constructor sets serverPlatform to NoServerPlatform
         final ServerPlatform originalServerPlatform = session.getServerPlatform();
         final String originalServerPlatformClassName = originalServerPlatform.getClass().getName();
-        final Class originalServerPlatformTransCtrlClass = originalServerPlatform.getExternalTransactionControllerClass();
+        final Class<?> originalServerPlatformTransCtrlClass = originalServerPlatform.getExternalTransactionControllerClass();
         final String originalServerPlatformTransCtrlClassName = originalServerPlatformTransCtrlClass != null
                 ? originalServerPlatform.getExternalTransactionControllerClass().getName() : null;
 
@@ -1043,10 +1044,10 @@
         // the new serverPlatform
         ServerPlatform serverPlatform = null;
         // New platform - create the new instance and set it.
-        Class cls = findClassForProperty(serverPlatformClassName, PersistenceUnitProperties.TARGET_SERVER, loader);
+        Class<?> cls = findClassForProperty(serverPlatformClassName, PersistenceUnitProperties.TARGET_SERVER, loader);
         boolean isTargetServerTransCtrl = false;
         try {
-            Constructor constructor = cls.getConstructor(org.eclipse.persistence.sessions.DatabaseSession.class);
+            Constructor<?> constructor = cls.getConstructor(org.eclipse.persistence.sessions.DatabaseSession.class);
             serverPlatform = (ServerPlatform)constructor.newInstance(new Object[]{session});
         } catch (Exception ex) {
             if(ExternalTransactionController.class.isAssignableFrom(cls)) {
@@ -1059,12 +1060,12 @@
                     if (cls.equals(originalCustomServerPlatform.getExternalTransactionControllerClass())) {
                         // externalTransactionController classes are the same - nothing to do
                     } else {
-                        originalCustomServerPlatform.setExternalTransactionControllerClass(cls);
+                        originalCustomServerPlatform.setExternalTransactionControllerClass((Class<? extends ExternalTransactionController>) cls);
                     }
                 } else {
                     // originalServerPlatform is not custom - need a new one.
                     serverPlatform = new CustomServerPlatform(getDatabaseSession());
-                    serverPlatform.setExternalTransactionControllerClass(cls);
+                    serverPlatform.setExternalTransactionControllerClass((Class<? extends ExternalTransactionController>) cls);
                 }
                 isTargetServerTransCtrl = true;
              } else {
@@ -1101,7 +1102,7 @@
      */
     private static void updateJTAControllerInPlatform(
             final ServerPlatform serverPlatform, final String jtaControllerClassName, final ClassLoader loader) {
-        Class jtaCls = findClassForProperty(jtaControllerClassName, PersistenceUnitProperties.JTA_CONTROLLER, loader);
+        Class<? extends ExternalTransactionController> jtaCls = (Class<? extends ExternalTransactionController>) findClassForProperty(jtaControllerClassName, PersistenceUnitProperties.JTA_CONTROLLER, loader);
         serverPlatform.setExternalTransactionControllerClass(jtaCls);
     }
 
@@ -1121,7 +1122,7 @@
 
         String callbackClassName = getConfigPropertyAsStringLogDebug(PersistenceUnitProperties.PARTITIONING_CALLBACK, m, this.session);
         if (callbackClassName != null) {
-            Class cls = findClassForProperty(callbackClassName, PersistenceUnitProperties.PARTITIONING_CALLBACK, loader);
+            Class<?> cls = findClassForProperty(callbackClassName, PersistenceUnitProperties.PARTITIONING_CALLBACK, loader);
             DataPartitioningCallback callback = null;
             try {
                 Constructor constructor = cls.getConstructor();
@@ -1154,7 +1155,7 @@
                         throw ValidationException.invalidValueForProperty(url, PersistenceUnitProperties.REMOTE_URL, exception);
                     }
                 } else {
-                    Class cls = findClassForProperty(protocol, PersistenceUnitProperties.REMOTE_PROTOCOL, loader);
+                    Class<?> cls = findClassForProperty(protocol, PersistenceUnitProperties.REMOTE_PROTOCOL, loader);
                     try {
                         Constructor constructor = cls.getConstructor();
                         connection = (RemoteConnection)constructor.newInstance();
@@ -1216,7 +1217,7 @@
             if (listenerClassName.equalsIgnoreCase("DCN") || listenerClassName.equalsIgnoreCase("QCN")) {
                 listenerClassName = "org.eclipse.persistence.platform.database.oracle.dcn.OracleChangeNotificationListener";
             }
-            Class cls = findClassForProperty(listenerClassName, PersistenceUnitProperties.DATABASE_EVENT_LISTENER, loader);
+            Class<?> cls = findClassForProperty(listenerClassName, PersistenceUnitProperties.DATABASE_EVENT_LISTENER, loader);
             DatabaseEventListener listener = null;
             try {
                 Constructor constructor = cls.getConstructor();
@@ -1249,7 +1250,7 @@
                 sessionLog = serverPlatform.getServerLog();
             } else if (!currentLog.getClass().getName().equals(loggerClassName)) {
                 // Logger class was specified and it's not what's already there.
-                Class sessionLogClass = findClassForProperty(loggerClassName, PersistenceUnitProperties.LOGGING_LOGGER, loader);
+                Class<?> sessionLogClass = findClassForProperty(loggerClassName, PersistenceUnitProperties.LOGGING_LOGGER, loader);
                 try {
                     singletonLog = (SessionLog)sessionLogClass.getConstructor().newInstance();
                     sessionLog = (SessionLog)sessionLogClass.getConstructor().newInstance();
@@ -1342,7 +1343,7 @@
 
             // New profiler - create the new instance and set it.
             try {
-                Class newProfilerClass = findClassForProperty(newProfilerClassName, PersistenceUnitProperties.PROFILER, loader);
+                Class<?> newProfilerClass = findClassForProperty(newProfilerClassName, PersistenceUnitProperties.PROFILER, loader);
 
                 SessionProfiler sessionProfiler = (SessionProfiler)buildObjectForClass(newProfilerClass, SessionProfiler.class);
 
@@ -1362,7 +1363,7 @@
     }
 
 
-    protected static Class findClass(String className, ClassLoader loader) throws ClassNotFoundException, PrivilegedActionException {
+    protected static Class<?> findClass(String className, ClassLoader loader) throws ClassNotFoundException, PrivilegedActionException {
         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
             return AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, loader));
         } else {
@@ -1370,7 +1371,7 @@
         }
     }
 
-    protected static Class findClassForProperty(String className, String propertyName, ClassLoader loader) {
+    protected static Class<?> findClassForProperty(String className, String propertyName, ClassLoader loader) {
         ClassLoader eclipselinkLoader = EntityManagerSetupImpl.class.getClassLoader();
         boolean multipleLoaders = eclipselinkLoader != loader;
         if (multipleLoaders) {
@@ -1380,7 +1381,7 @@
         }
     }
 
-    private static Class findClassForPropertyInternal(String clsName, String propName, ClassLoader... loaders) {
+    private static Class<?> findClassForPropertyInternal(String clsName, String propName, ClassLoader... loaders) {
         RuntimeException e = null;
         for (ClassLoader loader : loaders) {
             try {
@@ -1404,7 +1405,7 @@
         List<StructConverter> structConverters = new ArrayList<StructConverter>();
         if (session.getProject().getStructConverters() != null) {
             for (String converter: session.getProject().getStructConverters()) {
-                Class clazz = null;
+                Class<?> clazz = null;
                 try {
                     clazz = findClass(converter, realClassLoader);
                 } catch (PrivilegedActionException exception) {
@@ -1477,7 +1478,7 @@
     /**
      * This method will be used to validate the specified class and return it's instance.
      */
-    protected static Object buildObjectForClass(Class clazz, Class mustBeImplementedInterface) throws IllegalAccessException, PrivilegedActionException,InstantiationException {
+    protected static Object buildObjectForClass(Class<?> clazz, Class<?> mustBeImplementedInterface) throws IllegalAccessException, PrivilegedActionException,InstantiationException {
         if(clazz!=null && Helper.classImplementsInterface(clazz,mustBeImplementedInterface)){
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 return AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(clazz));
@@ -1511,7 +1512,7 @@
         String defaultTypeName = (String)typeMap.remove(PersistenceUnitProperties.DEFAULT);
         if (defaultTypeName != null) {
             // Always use the EclipseLink class loader, otherwise can have loader/redeployment issues.
-            Class defaultType = findClassForProperty(defaultTypeName, PersistenceUnitProperties.CACHE_TYPE_DEFAULT, getClass().getClassLoader());
+            Class<? extends IdentityMap> defaultType = (Class<? extends IdentityMap>) findClassForProperty(defaultTypeName, PersistenceUnitProperties.CACHE_TYPE_DEFAULT, getClass().getClassLoader());
             session.getProject().setDefaultIdentityMapClass(defaultType);
         }
 
@@ -1550,7 +1551,8 @@
                     typeName = (String)typeMap.remove(name);
                 }
                 if (typeName != null) {
-                    Class type = findClassForProperty(typeName, PersistenceUnitProperties.CACHE_TYPE_ + name, getClass().getClassLoader());
+                    @SuppressWarnings({"unchecked"})
+                    Class<? extends IdentityMap> type = (Class<? extends IdentityMap>) findClassForProperty(typeName, PersistenceUnitProperties.CACHE_TYPE_ + name, getClass().getClassLoader());
                     descriptor.setIdentityMapClass(type);
                 }
 
@@ -2232,7 +2234,7 @@
                     property = PersistenceUnitProperties.COORDINATION_PROTOCOL;
                     value = "org.eclipse.persistence.sessions.coordination.jgroups.JGroupsTransportManager";
                     // Avoid compile and runtime dependency.
-                    Class transportClass = findClassForProperty(value, PersistenceUnitProperties.COORDINATION_PROTOCOL, loader);
+                    Class<?> transportClass = findClassForProperty(value, PersistenceUnitProperties.COORDINATION_PROTOCOL, loader);
                     TransportManager transport = (TransportManager)transportClass.getConstructor().newInstance();
                     rcm.setTransportManager(transport);
                     String config = getConfigPropertyAsStringLogDebug(PersistenceUnitProperties.COORDINATION_JGROUPS_CONFIG, m, this.session);
@@ -2300,14 +2302,14 @@
                 } else {
                     property = PersistenceUnitProperties.COORDINATION_PROTOCOL;
                     value = protocol;
-                    Class transportClass = findClassForProperty(protocol, PersistenceUnitProperties.COORDINATION_PROTOCOL, loader);
+                    Class<?> transportClass = findClassForProperty(protocol, PersistenceUnitProperties.COORDINATION_PROTOCOL, loader);
                     rcm.setTransportManager((TransportManager)transportClass.getConstructor().newInstance());
                 }
                 String serializer = getConfigPropertyAsStringLogDebug(PersistenceUnitProperties.COORDINATION_SERIALIZER, m, this.session);
                 if (serializer != null) {
                     property = PersistenceUnitProperties.COORDINATION_SERIALIZER;
                     value = serializer;
-                    Class transportClass = findClassForProperty(serializer, PersistenceUnitProperties.COORDINATION_SERIALIZER, loader);
+                    Class<?> transportClass = findClassForProperty(serializer, PersistenceUnitProperties.COORDINATION_SERIALIZER, loader);
                     rcm.setSerializer((Serializer)transportClass.getConstructor().newInstance());
                 }
 
@@ -2365,7 +2367,7 @@
         if (serializer != null) {
             if (serializer.length() > 0) {
                 try {
-                    Class transportClass = findClassForProperty(serializer, PersistenceUnitProperties.SERIALIZER, loader);
+                    Class<?> transportClass = findClassForProperty(serializer, PersistenceUnitProperties.SERIALIZER, loader);
                     this.session.setSerializer((Serializer)transportClass.getConstructor().newInstance());
                 } catch (Exception exception) {
                     this.session.handleException(ValidationException.invalidValueForProperty(serializer, PersistenceUnitProperties.SERIALIZER, exception));
@@ -2405,7 +2407,7 @@
                 session.getProject().setMultitenantPolicy(policy);
             } else {
                 //assume it is a class with default constructor implementing existing interface
-                Class cls = findClassForProperty(tenantStrategy, PersistenceUnitProperties.MULTITENANT_STRATEGY, loader);
+                Class<?> cls = findClassForProperty(tenantStrategy, PersistenceUnitProperties.MULTITENANT_STRATEGY, loader);
                 MultitenantPolicy policy = null;
                 try {
                     Constructor constructor = cls.getConstructor();
@@ -2467,7 +2469,7 @@
         if (connectorValue instanceof Connector) {
             login.setConnector((Connector)connectorValue);
         } else if (connectorValue instanceof String) {
-            Class cls = null;
+            Class<?> cls = null;
             // Try both class loaders.
             try {
                 cls = findClassForProperty((String)connectorValue, connectorProperty, this.persistenceUnitInfo.getClassLoader());
@@ -2958,7 +2960,7 @@
             return;
         }
         if (customizer instanceof String) {
-            Class sessionCustomizerClass = findClassForProperty((String) customizer, PersistenceUnitProperties.SESSION_CUSTOMIZER, loader);
+            Class<?> sessionCustomizerClass = findClassForProperty((String) customizer, PersistenceUnitProperties.SESSION_CUSTOMIZER, loader);
             try {
                 sessionCustomizer = (SessionCustomizer) sessionCustomizerClass.getConstructor().newInstance();
             } catch (Exception ex) {
@@ -3032,14 +3034,14 @@
             ClassDescriptor descriptor = session.getDescriptorForAlias(name);
             if (descriptor == null) {
                 try {
-                    Class javaClass = findClass(name, loader);
+                    Class<?> javaClass = findClass(name, loader);
                     descriptor = session.getDescriptor(javaClass);
                 } catch (Exception ex) {
                     throw EntityManagerSetupException.failedWhileProcessingProperty(PersistenceUnitProperties.DESCRIPTOR_CUSTOMIZER_ + name, customizerClassName, ex);
                 }
             }
             if (descriptor != null) {
-                Class customizerClass = findClassForProperty(customizerClassName, PersistenceUnitProperties.DESCRIPTOR_CUSTOMIZER_ + name, loader);
+                Class<?> customizerClass = findClassForProperty(customizerClassName, PersistenceUnitProperties.DESCRIPTOR_CUSTOMIZER_ + name, loader);
                 try {
                     DescriptorCustomizer customizer = (DescriptorCustomizer)customizerClass.getConstructor().newInstance();
                     customizer.customize(descriptor);
@@ -3177,7 +3179,7 @@
         //Set event listener if it has been specified.
         String sessionEventListenerClassName = EntityManagerFactoryProvider.getConfigPropertyAsStringLogDebug(PersistenceUnitProperties.SESSION_EVENT_LISTENER_CLASS, m, session);
         if(sessionEventListenerClassName!=null){
-            Class sessionEventListenerClass = findClassForProperty(sessionEventListenerClassName,PersistenceUnitProperties.SESSION_EVENT_LISTENER_CLASS, loader);
+            Class<?> sessionEventListenerClass = findClassForProperty(sessionEventListenerClassName,PersistenceUnitProperties.SESSION_EVENT_LISTENER_CLASS, loader);
             try {
                 SessionEventListener sessionEventListener = (SessionEventListener)buildObjectForClass(sessionEventListenerClass, SessionEventListener.class);
                 if(sessionEventListener!=null){
@@ -3203,7 +3205,7 @@
         //Set exception handler if it was specified.
         String exceptionHandlerClassName = EntityManagerFactoryProvider.getConfigPropertyAsStringLogDebug(PersistenceUnitProperties.EXCEPTION_HANDLER_CLASS, m, session);
         if(exceptionHandlerClassName!=null){
-            Class exceptionHandlerClass = findClassForProperty(exceptionHandlerClassName,PersistenceUnitProperties.EXCEPTION_HANDLER_CLASS, loader);
+            Class<?> exceptionHandlerClass = findClassForProperty(exceptionHandlerClassName,PersistenceUnitProperties.EXCEPTION_HANDLER_CLASS, loader);
             try {
                 ExceptionHandler exceptionHandler = (ExceptionHandler)buildObjectForClass(exceptionHandlerClass, ExceptionHandler.class);
                 if (exceptionHandler!=null){
@@ -3244,7 +3246,7 @@
                  if (batchWritingSettingString.equalsIgnoreCase("ExaLogic")) {
                      batchWritingSettingString = "oracle.toplink.exalogic.batch.DynamicParameterizedBatchWritingMechanism";
                  }
-                 Class cls = findClassForProperty(batchWritingSettingString, PersistenceUnitProperties.BATCH_WRITING, loader);
+                 Class<?> cls = findClassForProperty(batchWritingSettingString, PersistenceUnitProperties.BATCH_WRITING, loader);
                  BatchWritingMechanism mechanism = null;
                  try {
                      Constructor constructor = cls.getConstructor();
@@ -3283,7 +3285,7 @@
                 if (repository.equalsIgnoreCase("XML")) {
                     processor.setMetadataSource(new XMLMetadataSource());
                 } else {
-                    Class transportClass = findClassForProperty(repository, PersistenceUnitProperties.METADATA_SOURCE, loader);
+                    Class<?> transportClass = findClassForProperty(repository, PersistenceUnitProperties.METADATA_SOURCE, loader);
                     try {
                         processor.setMetadataSource((MetadataSource)transportClass.getConstructor().newInstance());
                     } catch (Exception invalid) {
@@ -3309,7 +3311,7 @@
                 if (tuning.equalsIgnoreCase("ExaLogic")) {
                     tuning = "oracle.toplink.exalogic.tuning.ExaLogicTuner";
                 }
-                Class tunerClass = findClassForProperty(tuning, PersistenceUnitProperties.TUNING, loader);
+                Class<?> tunerClass = findClassForProperty(tuning, PersistenceUnitProperties.TUNING, loader);
                 try {
                     tuner = (SessionTuner)tunerClass.getConstructor().newInstance();
                 } catch (Exception invalid) {
@@ -3415,7 +3417,7 @@
                 if (accessorType.equalsIgnoreCase("java-serialization")) {
                     projectCacheAccessor = new FileBasedProjectCache();
                 } else {
-                    Class transportClass = findClassForProperty(accessorType, PersistenceUnitProperties.PROJECT_CACHE, loader);
+                    Class<?> transportClass = findClassForProperty(accessorType, PersistenceUnitProperties.PROJECT_CACHE, loader);
                     try {
                         projectCacheAccessor = (ProjectCache)transportClass.getConstructor().newInstance();
                     } catch (Exception invalid) {
@@ -3977,7 +3979,7 @@
             // environment where these classes are not available.
             // To guard against some vms that eagerly resolve, reflectively load class to prevent any static reference to it
             String helperClassName = "org.eclipse.persistence.internal.jpa.deployment.BeanValidationInitializationHelper$BeanValidationInitializationHelperImpl";
-            Class helperClass;
+            Class<?> helperClass;
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                     try {
@@ -4080,7 +4082,7 @@
             boolean classInitialized = false;
             String className = MetadataHelper.getQualifiedCanonicalName(manType.getJavaType().getName(), getSession());
             try {
-                Class clazz = this.getSession().getDatasourcePlatform().convertObject(className, ClassConstants.CLASS);
+                Class<?> clazz = this.getSession().getDatasourcePlatform().convertObject(className, ClassConstants.CLASS);
                 classInitialized=true;
                 this.getSession().log(SessionLog.FINER, SessionLog.METAMODEL, "metamodel_canonical_model_class_found", className);
                 String fieldName = "";
@@ -4263,7 +4265,7 @@
             boolean classInitialized = false;
             String className = MetadataHelper.getQualifiedCanonicalName(((ManagedTypeImpl)manType).getJavaTypeName(), getSession());
             try {
-                Class clazz = this.getSession().getDatasourcePlatform().convertObject(className, ClassConstants.CLASS);
+                Class<?> clazz = this.getSession().getDatasourcePlatform().convertObject(className, ClassConstants.CLASS);
                 classInitialized=true;
                 this.getSession().log(SessionLog.FINER, SessionLog.METAMODEL, "metamodel_canonical_model_class_found", className);
                 Field[] fields = null;
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryHintsHandler.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryHintsHandler.java
index 85bd951..cff7bb6 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryHintsHandler.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryHintsHandler.java
@@ -2088,7 +2088,7 @@
         @Override
         DatabaseQuery applyToDatabaseQuery(Object valueToApply, DatabaseQuery query, ClassLoader loader, AbstractSession activeSession) {
             if (query.isReadAllQuery()) {
-                Class collectionClass = null;
+                Class<?> collectionClass = null;
                 if (valueToApply instanceof String) {
                     collectionClass = loadClass((String)valueToApply, query, loader);
                 } else {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryImpl.java
index 49cfb4a..93bdd30 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryImpl.java
@@ -465,7 +465,7 @@
             // its not the right type
             DatabaseQuery query = getDatabaseQueryInternal();
             if (query.isReadAllQuery()) {
-                Class containerClass = ((ReadAllQuery) query).getContainerPolicy().getContainerClass();
+                Class<?> containerClass = ((ReadAllQuery) query).getContainerPolicy().getContainerClass();
                 if (!Helper.classImplementsInterface(containerClass, ClassConstants.List_Class)) {
                     throw QueryException.invalidContainerClass(containerClass, ClassConstants.List_Class);
                 }
@@ -933,7 +933,7 @@
                     throw new IllegalArgumentException(ExceptionLocalization.buildMessage("ejb30-wrong-argument-name", new Object[] { name, query.getEJBQLString() }));
                 }
             }
-            Class type = query.getArgumentTypes().get(index);
+            Class<?> type = query.getArgumentTypes().get(index);
             if (!isValidActualParameter(value, type)) {
                 throw new IllegalArgumentException(ExceptionLocalization.buildMessage("ejb30-incorrect-parameter-type", new Object[] { name, value.getClass(), query.getArgumentTypes().get(index), query.getEJBQLString() }));
             }
@@ -946,7 +946,7 @@
         this.parameterValues.put(name, value);
     }
 
-    protected boolean isValidActualParameter(Object value, Class parameterType) {
+    protected boolean isValidActualParameter(Object value, Class<?> parameterType) {
         if (value == null) {
             return true;
         } else {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/StoredProcedureQueryImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/StoredProcedureQueryImpl.java
index f238213..1803417 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/StoredProcedureQueryImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/StoredProcedureQueryImpl.java
@@ -210,7 +210,7 @@
     /**
      * Build a ReadAllQuery from a class and stored procedure call.
      */
-    public static DatabaseQuery buildStoredProcedureQuery(Class resultClass, StoredProcedureCall call, Map<String, Object> hints, ClassLoader classLoader, AbstractSession session) {
+    public static DatabaseQuery buildStoredProcedureQuery(Class<?> resultClass, StoredProcedureCall call, Map<String, Object> hints, ClassLoader classLoader, AbstractSession session) {
         DatabaseQuery query = new ReadAllQuery(resultClass);
         query.setCall(call);
         query.setIsUserDefined(true);
@@ -791,6 +791,7 @@
      * @return the same query instance
      */
     @Override
+    @SuppressWarnings({"rawtypes"})
     public StoredProcedureQuery registerStoredProcedureParameter(int position, Class type, ParameterMode mode) {
         entityManager.verifyOpenWithSetRollbackOnly();
         StoredProcedureCall call = (StoredProcedureCall) getDatabaseQuery().getCall();
@@ -823,6 +824,7 @@
      * @return the same query instance
      */
     @Override
+    @SuppressWarnings({"rawtypes"})
     public StoredProcedureQuery registerStoredProcedureParameter(String parameterName, Class type, ParameterMode mode) {
         entityManager.verifyOpenWithSetRollbackOnly();
         StoredProcedureCall call = (StoredProcedureCall) getDatabaseQuery().getCall();
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/BeanValidationInitializationHelper.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/BeanValidationInitializationHelper.java
index 64643ec..502a59f 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/BeanValidationInitializationHelper.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/BeanValidationInitializationHelper.java
@@ -53,11 +53,11 @@
                 // We could obtain a validator factory => Bean Validation API is available at runtime. It is ok to cast now
                 ValidatorFactory beanValidatorFactory = validatorFactory;
 
-                Class[] groupPrePersit = translateValidationGroups(
+                Class<?>[] groupPrePersit = translateValidationGroups(
                         (String) puProperties.get(PersistenceUnitProperties.VALIDATION_GROUP_PRE_PERSIST), appClassLoader) ;
-                Class[] groupPreUpdate = translateValidationGroups(
+                Class<?>[] groupPreUpdate = translateValidationGroups(
                         (String) puProperties.get(PersistenceUnitProperties.VALIDATION_GROUP_PRE_UPDATE), appClassLoader);
-                Class[] groupPreRemove = translateValidationGroups(
+                Class<?>[] groupPreRemove = translateValidationGroups(
                         (String) puProperties.get(PersistenceUnitProperties.VALIDATION_GROUP_PRE_REMOVE), appClassLoader);
 
                 BeanValidationListener validationListener =
@@ -95,11 +95,11 @@
          * @return Array of classes corresponding to classnames in given <code>validationGroups</code>.
          *         <code>null</code> if given <code>validationGroups</code> is null or empty
          */
-        private Class[] translateValidationGroups(String validationGroups, ClassLoader appClassLoader) {
-            Class[] validationGroupsClasses = null;
+        private Class<?>[] translateValidationGroups(String validationGroups, ClassLoader appClassLoader) {
+            Class<?>[] validationGroupsClasses = null;
             if(validationGroups != null && validationGroups.length() != 0 ) {
                 String[] validationGroupClassNames = validationGroups.split(",");
-                validationGroupsClasses = new Class[validationGroupClassNames.length];
+                validationGroupsClasses = new Class<?>[validationGroupClassNames.length];
                 for(int i = 0; i < validationGroupClassNames.length; i++) {
                     String validationGroupClassName = validationGroupClassNames[i];
                     try {
@@ -121,8 +121,8 @@
          * @param classLoader ClassLoader to be used for loading the class
          * @return Loaded Class
          */
-        private Class loadClass(String className, ClassLoader classLoader) throws PrivilegedActionException, ClassNotFoundException {
-            Class loadedClass = null;
+        private Class<?> loadClass(String className, ClassLoader classLoader) throws PrivilegedActionException, ClassNotFoundException {
+            Class<?> loadedClass = null;
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                 loadedClass = AccessController.doPrivileged(
                         new PrivilegedClassForName<>(className, true, classLoader));
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JavaSECMPInitializer.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JavaSECMPInitializer.java
index 51696f5..639d487 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JavaSECMPInitializer.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JavaSECMPInitializer.java
@@ -179,7 +179,7 @@
         ClassLoader tempLoader = null;
         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
             try {
-                Class[] argsClasses = new Class[] { URL[].class, ClassLoader.class, Collection.class, boolean.class };
+                Class<?>[] argsClasses = new Class<?>[] { URL[].class, ClassLoader.class, Collection.class, boolean.class };
                 Object[] args = new Object[] { urlPath, currentLoader, col, shouldOverrideLoadClassForCollectionMembers };
                 Constructor<TempEntityLoader> classLoaderConstructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<>(TempEntityLoader.class, argsClasses, true));
                 tempLoader = (ClassLoader) AccessController.doPrivileged(new PrivilegedInvokeConstructor(classLoaderConstructor, args));
@@ -347,7 +347,7 @@
         }
 
         @Override
-        protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
+        protected synchronized Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
             if (shouldOverrideLoadClass(name)) {
                 // First, check if the class has already been loaded.
                 // Note that the check only for classes loaded by this loader,
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/PersistenceUnitProcessor.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/PersistenceUnitProcessor.java
index ae8cdf8..d21d9c0 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/PersistenceUnitProcessor.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/PersistenceUnitProcessor.java
@@ -593,8 +593,8 @@
     /**
      * Load the given class name with the given class loader.
      */
-    public static Class loadClass(String className, ClassLoader loader, boolean throwExceptionIfNotFound, MetadataProject project) {
-        Class candidateClass = null;
+    public static Class<?> loadClass(String className, ClassLoader loader, boolean throwExceptionIfNotFound, MetadataProject project) {
+        Class<?> candidateClass = null;
 
         try {
             candidateClass = loader.loadClass(className);
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataHelper.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataHelper.java
index 2269b39..c7f35f0 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataHelper.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataHelper.java
@@ -92,7 +92,7 @@
      * INTERNAL:
      * Load a class from a given class name. (XMLEntityMappings calls this one)
      */
-    public static Class getClassForName(String classname, ClassLoader loader) {
+    public static Class<?> getClassForName(String classname, ClassLoader loader) {
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
@@ -106,7 +106,7 @@
         } catch (ClassNotFoundException exception) {
             if (classname.indexOf('$') != -1) {
                 String outer = classname.substring(0, classname.indexOf('$'));
-                Class outerClass = getClassForName(outer, loader);
+                Class<?> outerClass = getClassForName(outer, loader);
                 for (int index = 0; index < outerClass.getClasses().length; index++)
                 {
                     if (outerClass.getClasses()[index].getName().equals(classname))
@@ -123,7 +123,7 @@
      * INTERNAL:
      * Create a new instance of the class given.
      */
-    static Object getClassInstance(Class cls) {
+    static Object getClassInstance(Class<?> cls) {
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/ORMetadata.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/ORMetadata.java
index fdbe3f6..35bc476 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/ORMetadata.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/ORMetadata.java
@@ -118,7 +118,7 @@
     private String m_xmlElement;
 
     // Lookup of classname to Class to resolve primitive classes
-    private static final Map<String, Class> primitiveClasses = Collections.unmodifiableMap(getPrimitiveClassesMap());
+    private static final Map<String, Class<?>> primitiveClasses = Collections.unmodifiableMap(getPrimitiveClassesMap());
 
     // Lookup of boxed types of primitive classes.
     private static final Map<String, String> boxedTypes = Collections.unmodifiableMap(getBoxedTypesMap());
@@ -277,7 +277,7 @@
      * from XML.
      */
     protected String getFullyQualifiedClassName(String className) {
-        Class primitiveClass = getPrimitiveClassForName(className);
+        Class<?> primitiveClass = getPrimitiveClassForName(className);
 
         if (primitiveClass == null) {
             if (loadedFromXML()) {
@@ -313,10 +313,10 @@
      * temp loader, see getJavaClassName instead which will provide a valid
      * string class name that can be initialized at runtime instead.
      */
-    protected Class getJavaClass(MetadataClass metadataClass) {
+    protected Class<?> getJavaClass(MetadataClass metadataClass) {
         String className = metadataClass.getName();
 
-        Class primitiveClass = getPrimitiveClassForName(className);
+        Class<?> primitiveClass = getPrimitiveClassForName(className);
 
         if (primitiveClass == null) {
             String convertedClassName = className;
@@ -346,7 +346,7 @@
     public String getJavaClassName(MetadataClass metadataClass) {
         String className = metadataClass.getName();
 
-        Class primitiveClass = getPrimitiveClassForName(className);
+        Class<?> primitiveClass = getPrimitiveClassForName(className);
 
         if (primitiveClass == null) {
             String convertedClassName = className;
@@ -384,7 +384,7 @@
      * INTERNAL:
      * Return the MetadataClass for the class.
      */
-    public MetadataClass getMetadataClass(Class javaClass) {
+    public MetadataClass getMetadataClass(Class<?> javaClass) {
         if (javaClass == null) {
             return null;
         }
@@ -437,7 +437,7 @@
     /**
      * INTERNAL:
      */
-    protected Class getPrimitiveClassForName(String className){
+    protected Class<?> getPrimitiveClassForName(String className){
         return (className == null) ? void.class : primitiveClasses.get(className);
     }
 
@@ -881,8 +881,8 @@
         }
     }
 
-    private static Map<String, Class> getPrimitiveClassesMap() {
-        Map<String, Class> mappings = new HashMap<>(28);
+    private static Map<String, Class<?>> getPrimitiveClassesMap() {
+        Map<String, Class<?>> mappings = new HashMap<>(28);
         mappings.put("", void.class);
         mappings.put("void", void.class);
         mappings.put("Boolean", Boolean.class);
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/MetadataAccessor.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/MetadataAccessor.java
index f30dd21..00b9a95 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/MetadataAccessor.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/MetadataAccessor.java
@@ -301,7 +301,7 @@
      * JPA annotations should be referenced only by name as to not introduce a
      * compile dependency.
      */
-    public MetadataAnnotation getAnnotation(Class annotation) {
+    public MetadataAnnotation getAnnotation(Class<?> annotation) {
        return getAnnotation(annotation.getName());
     }
 
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/MappingAccessor.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/MappingAccessor.java
index 2891a7b..40dc51a 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/MappingAccessor.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/MappingAccessor.java
@@ -1804,7 +1804,7 @@
             keyMapping = processDirectMapKeyClass(mappedKeyMapAccessor);
         }
 
-        Class containerClass;
+        Class<?> containerClass;
         if (mapping instanceof ForeignReferenceMapping) {
             if (usesIndirection()) {
                 containerClass = ClassConstants.IndirectMap_Class;
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/OneToManyAccessor.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/OneToManyAccessor.java
index e680694..c998b26 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/OneToManyAccessor.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/OneToManyAccessor.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -328,7 +328,7 @@
             if (mappingAccessor != null) {
                 // If the mapping specified a converter then the field
                 // classification may be set so check it first.
-                Class fieldClassification = mappingAccessor.getMapping().getFieldClassification(mappingAccessor.getMapping().getField());
+                Class<?> fieldClassification = mappingAccessor.getMapping().getFieldClassification(mappingAccessor.getMapping().getField());
 
                 String typeName;
                 if (fieldClassification == null) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/VariableOneToOneAccessor.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/VariableOneToOneAccessor.java
index f5aee50..8b8dca3 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/VariableOneToOneAccessor.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/VariableOneToOneAccessor.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -140,7 +140,7 @@
             }
         }
 
-        Class type = mapping.getTypeField().getType();
+        Class<?> type = mapping.getTypeField().getType();
         if (type.equals(String.class)) {
             mapping.addClassNameIndicator(accessor.getJavaClassName(), accessor.getDescriptor().getAlias());
         } else if (type.equals(Character.class)) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataAsmFactory.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataAsmFactory.java
index 0986203..3f79fa9 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataAsmFactory.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataAsmFactory.java
@@ -555,7 +555,7 @@
                 if (reflectClass.getSuperclass() != null) {
                     metadataClass.setSuperclassName(reflectClass.getSuperclass().getName());
                 }
-                for (Class reflectInterface : reflectClass.getInterfaces()) {
+                for (Class<?> reflectInterface : reflectClass.getInterfaces()) {
                     metadataClass.addInterface(reflectInterface.getName());
                 }
             } catch (Exception failed) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/converters/MetadataConverter.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/converters/MetadataConverter.java
index 133c291..586fc41 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/converters/MetadataConverter.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/converters/MetadataConverter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -137,7 +137,7 @@
      * not class. This class name will be initialized at run time with the real
      * class loader.
      */
-    protected void setFieldClassification(DatabaseMapping mapping, Class classification, boolean isForMapKey) {
+    protected void setFieldClassification(DatabaseMapping mapping, Class<?> classification, boolean isForMapKey) {
         setFieldClassification(mapping, classification.getName(), isForMapKey);
     }
 
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/BeanValidationListener.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/BeanValidationListener.java
index 15536ee..633aa30 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/BeanValidationListener.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/BeanValidationListener.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -53,13 +53,13 @@
  */
 public class BeanValidationListener extends DescriptorEventAdapter {
     private final ValidatorFactory validatorFactory;
-    private final Class[] groupPrePersit;
-    private final Class[] groupPreUpdate;
-    private final Class[] groupPreRemove;
-    private static final Class[] groupDefault = new Class[]{Default.class};
+    private final Class<?>[] groupPrePersit;
+    private final Class<?>[] groupPreUpdate;
+    private final Class<?>[] groupPreRemove;
+    private static final Class<?>[] groupDefault = new Class<?>[]{Default.class};
     private final Map<ClassDescriptor, Validator> validatorMap;
 
-    public BeanValidationListener(ValidatorFactory validatorFactory, Class[] groupPrePersit, Class[] groupPreUpdate, Class[] groupPreRemove) {
+    public BeanValidationListener(ValidatorFactory validatorFactory, Class<?>[] groupPrePersit, Class<?>[] groupPreUpdate, Class<?>[] groupPreRemove) {
         this.validatorFactory = validatorFactory;
         //For prePersit and preUpdate, default the group to validation group Default if user has not specified one
         this.groupPrePersit = groupPrePersit != null ? groupPrePersit : groupDefault;
@@ -109,7 +109,7 @@
         }
     }
 
-    private void validateOnCallbackEvent(DescriptorEvent event, String callbackEventName, Class[] validationGroup) {
+    private void validateOnCallbackEvent(DescriptorEvent event, String callbackEventName, Class<?>[] validationGroup) {
         Object source = event.getSource();
         Validator validator = getValidator(event);
         boolean isBeanConstrained = isBeanConstrained(source, validator);
@@ -166,7 +166,7 @@
         }
     }
 
-    private Set<ConstraintViolation<Object>> validate(final Object source, final Class[] validationGroup, final Validator validator) {
+    private Set<ConstraintViolation<Object>> validate(final Object source, final Class<?>[] validationGroup, final Validator validator) {
         // If Java Security is enabled, surround this call with a doPrivileged block.
         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
             return AccessController.doPrivileged(new PrivilegedAction<Set<ConstraintViolation<Object>>>() {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityClassListenerMetadata.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityClassListenerMetadata.java
index 576b290..a172180 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityClassListenerMetadata.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityClassListenerMetadata.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -80,7 +80,7 @@
      */
     public void process(List<MappedSuperclassAccessor> mappedSuperclasses, ClassLoader loader) {
         // Create the listener.
-        Class accessorClass = getClass(m_accessor.getJavaClass(), loader);
+        Class<?> accessorClass = getClass(m_accessor.getJavaClass(), loader);
         m_listener = new EntityClassListener(accessorClass);
 
         // Process the callback methods as defined in XML or annotations on the
@@ -94,7 +94,7 @@
         // on the mapped superclasses if not excluded second.
         if (! m_descriptor.excludeSuperclassListeners()) {
             for (MappedSuperclassAccessor mappedSuperclass : mappedSuperclasses) {
-                Class superClass = getClass(mappedSuperclass.getJavaClass(), loader);
+                Class<?> superClass = getClass(mappedSuperclass.getJavaClass(), loader);
                 // Init callback methods as specified in XML for each mapped
                 // superclass before processing.
                 initCallbackMethods(mappedSuperclass);
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListener.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListener.java
index b63b0c8..8add508 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListener.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListener.java
@@ -64,7 +64,7 @@
 
     private T m_listener;
     private Class<T> m_listenerClass;
-    private Class m_entityClass;
+    private Class<?> m_entityClass;
     private Map<String, List<Method>> m_methods;
     private final Map<String, Map<Integer, Boolean>> m_overriddenEvents;
     private static final Map<Integer, String> m_eventStrings;
@@ -87,7 +87,7 @@
     /**
      * INTERNAL:
      */
-    protected EntityListener(Class entityClass) {
+    protected EntityListener(Class<?> entityClass) {
         m_entityClass = entityClass;
         m_methods = new ConcurrentHashMap<>();
 
@@ -96,7 +96,7 @@
         m_overriddenEvents = new ConcurrentHashMap<>();
     }
 
-    public EntityListener(Class<T> listenerClass, Class entityClass){
+    public EntityListener(Class<T> listenerClass, Class<?> entityClass){
         this(entityClass);
         this.m_listenerClass = listenerClass;
     }
@@ -174,7 +174,7 @@
     /**
      * INTERNAL:
      */
-    public Class getEntityClass() {
+    public Class<?> getEntityClass() {
         return m_entityClass;
     }
 
@@ -234,7 +234,7 @@
     /**
      * INTERNAL:
      */
-    public Class getListenerClass() {
+    public Class<?> getListenerClass() {
         return m_listenerClass;
     }
 
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListenerMetadata.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListenerMetadata.java
index 71e7c0e..01410de 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListenerMetadata.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListenerMetadata.java
@@ -202,7 +202,7 @@
      */
     Method[] getCandidateCallbackMethodsForEntityListener() {
         Set<Method> candidateMethods = new HashSet<>();
-        Class listenerClass = m_listener.getListenerClass();
+        Class<?> listenerClass = m_listener.getListenerClass();
 
         // Add all the declared methods ...
         Method[] declaredMethods = getDeclaredMethods(listenerClass);
@@ -227,7 +227,7 @@
      * INTERNAL:
      * Load a class from a given class name.
      */
-    Class getClass(MetadataClass metadataClass, ClassLoader loader) {
+    Class<?> getClass(MetadataClass metadataClass, ClassLoader loader) {
         String classname = metadataClass.getName();
 
         try {
@@ -259,7 +259,7 @@
      * access. This call returns all methods (private, protected, package and
      * public) on the given class ONLY. It does not traverse the superclasses.
      */
-    Method[] getDeclaredMethods(Class cls) {
+    Method[] getDeclaredMethods(Class<?> cls) {
         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
             return AccessController.doPrivileged(new PrivilegedGetDeclaredMethods(cls));
         } else {
@@ -278,7 +278,7 @@
     /**
      * INTERNAL:
      */
-    protected Object getInstance(Class cls) {
+    protected Object getInstance(Class<?> cls) {
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
@@ -318,7 +318,7 @@
      * This call returns only public methods from the given class and its
      * superclasses.
      */
-    Method[] getMethods(Class cls) {
+    Method[] getMethods(Class<?> cls) {
         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
             return AccessController.doPrivileged(new PrivilegedGetMethods(cls));
         } else {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/MethodSerialImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/MethodSerialImpl.java
index 2b8404d..525d8a1 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/MethodSerialImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/MethodSerialImpl.java
@@ -48,7 +48,7 @@
 
     public Method convertToMethod(ClassLoader loader) throws NoSuchMethodException {
         //Build the class
-        Class declaringClass = null;
+        Class<?> declaringClass = null;
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
@@ -64,7 +64,7 @@
         }
 
         //Build the method argument class types.
-        Class[] argTypes = new Class[paramList.size()];
+        Class<?>[] argTypes = new Class<?>[paramList.size()];
         int i=0;
         for (String paramType: paramList) {
             try {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/CollectionAttributeImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/CollectionAttributeImpl.java
index b6b7db6..acc4b2e 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/CollectionAttributeImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/CollectionAttributeImpl.java
@@ -77,6 +77,7 @@
      *  @return Java type
      */
     @Override
+    @SuppressWarnings({"rawtypes"})
     public Class getJavaType() {
         return Collection.class;
     }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/IdentifiableTypeImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/IdentifiableTypeImpl.java
index 0e779ca..4d26e06 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/IdentifiableTypeImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/IdentifiableTypeImpl.java
@@ -237,7 +237,7 @@
             }
 
             if (pkMappings.size() == 1) {
-                Class aClass = pkMappings.get(0).getAttributeClassification(); // null for OneToOneMapping
+                Class<?> aClass = pkMappings.get(0).getAttributeClassification(); // null for OneToOneMapping
                 // lookup class in our types map
                 return this.getMetamodel().getType(aClass);
             }
@@ -337,7 +337,7 @@
             return false;
         } else {
             // Optional: Verify the mapping on the each field and whether it is an IdClass
-            Class pkClass = null;
+            Class<?> pkClass = null;
             if(this.getDescriptor().hasCMPPolicy()) {
                 pkClass = this.getDescriptor().getCMPPolicy().getPKClass();
                 if(null == pkClass) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/ListAttributeImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/ListAttributeImpl.java
index 686d353..b5130d9 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/ListAttributeImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/ListAttributeImpl.java
@@ -75,6 +75,7 @@
      *  @return Java type
      */
     @Override
+    @SuppressWarnings({"rawtypes"})
     public Class getJavaType() {
         return List.class;
     }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/ManagedTypeImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/ManagedTypeImpl.java
index 2453cfe..6cac0be 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/ManagedTypeImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/ManagedTypeImpl.java
@@ -708,13 +708,13 @@
      * @param aReturnCollectionType - the plural return type
      * @throws IllegalArgumentException if either type is wrong
      */
-    private void verifyAttributeTypeAndReturnType(Attribute anAttribute, Class attributeElementType, CollectionType aReturnCollectionType) {
+    private void verifyAttributeTypeAndReturnType(Attribute anAttribute, Class<?> attributeElementType, CollectionType aReturnCollectionType) {
         // Check for plural or singular attribute
         if(anAttribute.isCollection()) {
             // check for CollectionAttribute
             if(((PluralAttribute)anAttribute).getCollectionType().equals(aReturnCollectionType)) {
                 // check that the java class is correct (use BindableJavaType not elementType.getJavaType()
-                Class aBindableJavaClass = ((PluralAttribute)anAttribute).getBindableJavaType();
+                Class<?> aBindableJavaClass = ((PluralAttribute)anAttribute).getBindableJavaType();
                 if(attributeElementType != aBindableJavaClass) {
                     throw new IllegalArgumentException(ExceptionLocalization.buildMessage(
                         "metamodel_managed_type_attribute_type_incorrect",
@@ -919,7 +919,7 @@
      * @param targetPrimitiveOrWrapperClass (the type we are verifying against)
      * @param actualPrimitiveOrWrapperClass (the type that may be the autoboxed or primitive equal
      */
-    private boolean isAutoboxedType(Class targetPrimitiveOrWrapperClass, Class actualPrimitiveOrWrapperClass) {
+    private boolean isAutoboxedType(Class<?> targetPrimitiveOrWrapperClass, Class<?> actualPrimitiveOrWrapperClass) {
         BasicTypeHelperImpl typeHelper = BasicTypeHelperImpl.getInstance();
         if ((targetPrimitiveOrWrapperClass == null) || (actualPrimitiveOrWrapperClass == null)) {
             return false;
@@ -1178,7 +1178,7 @@
                      * Handle lazy Collections and Lists and the fact that both return an IndirectList policy.
                      * We check the type on the attributeField of the attributeAccessor on the mapping
                      */
-                    Class aType = null;
+                    Class<?> aType = null;
                     // 325699: AttributeAccessor is subclassed by both IntanceVariableAttributeAccessor (JPA) and ValuesAccessor (Dynamic JPA)
                     if(colMapping.getAttributeAccessor() instanceof ValuesAccessor) {
                         member = new ListAttributeImpl(this, colMapping);
@@ -1335,7 +1335,7 @@
      * Get the elementType directly from the class using a reflective method call
      * directly on the containing java class associated with this managedType.
      */
-    protected Class getTypeClassFromAttributeOrMethodLevelAccessor(DatabaseMapping mapping) {
+    protected Class<?> getTypeClassFromAttributeOrMethodLevelAccessor(DatabaseMapping mapping) {
         /**
          * In this block we have the following scenario:
          * 1) The access type is "method" or "field"
@@ -1345,7 +1345,7 @@
          */
         // Type may be null when no getMethod exists for the class for a ManyToMany mapping
         // Here we check the returnType on the declared method on the class directly
-        Class aType = null;
+        Class<?> aType = null;
         Field aField = null;
         String getMethodName = null;
         //boolean isFieldLevelAccess = false;
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/MapAttributeImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/MapAttributeImpl.java
index 3f0af23..81ec669 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/MapAttributeImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/MapAttributeImpl.java
@@ -207,7 +207,7 @@
      * Default to the PK of the owning descriptor when no MapKey or MapKey:name attribute is specified.
      * Prerequisites: policy on the mapping is of type MappedKeyMapPolicy
      */
-    private Class getOwningPKTypeWhenMapKeyAnnotationMissingOrDefaulted(MappedKeyMapContainerPolicy policy) {
+    private Class<?> getOwningPKTypeWhenMapKeyAnnotationMissingOrDefaulted(MappedKeyMapContainerPolicy policy) {
         Class<?> javaClass = null;;
         MapKeyMapping mapKeyMapping = policy.getKeyMapping();
         ClassDescriptor descriptor = ((DatabaseMapping)mapKeyMapping).getDescriptor();
@@ -238,6 +238,7 @@
      *  @return Java type
      */
     @Override
+    @SuppressWarnings({"rawtypes"})
     public Class getJavaType() {
         return Map.class;
     }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/MappedSuperclassTypeImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/MappedSuperclassTypeImpl.java
index 85be821..306cff0 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/MappedSuperclassTypeImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/MappedSuperclassTypeImpl.java
@@ -57,11 +57,11 @@
      * The types in this map are keyed on the Java class of the inheriting type.
      * This map acts as the reverse of all superType fields that point to "this" MappedSuperclass.
      **/
-    private Map<Class, IdentifiableTypeImpl> inheritingIdentifiableTypes;
+    private Map<Class<?>, IdentifiableTypeImpl> inheritingIdentifiableTypes;
 
     protected MappedSuperclassTypeImpl(MetamodelImpl metamodel, ClassDescriptor relationalDescriptor) {
         super(metamodel, relationalDescriptor);
-        inheritingIdentifiableTypes = new HashMap<Class, IdentifiableTypeImpl>();
+        inheritingIdentifiableTypes = new HashMap<Class<?>, IdentifiableTypeImpl>();
         // The supertype field will remain uninstantiated until MetamodelImpl.initialize() is complete
     }
 
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/MetamodelImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/MetamodelImpl.java
index a19199c..fbc9656 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/MetamodelImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/MetamodelImpl.java
@@ -160,7 +160,7 @@
      * with the specification.
      * See http://bugs.eclipse.org/338837
      */
-    private void entityEmbeddableManagedTypeNotFound(Map typeMap, Object aType, Class clazz, String metamodelType, String metamodelTypeName) {
+    private void entityEmbeddableManagedTypeNotFound(Map typeMap, Object aType, Class<?> clazz, String metamodelType, String metamodelTypeName) {
         // 338837: verify that the collection is not empty - this would mean entities did not make it into the search path
         if(typeMap.isEmpty()) {
             AbstractSessionLog.getLog().log(SessionLog.WARNING, SessionLog.METAMODEL, "metamodel_type_collection_empty_during_lookup", clazz, metamodelTypeName);
@@ -444,7 +444,7 @@
                 AbstractSessionLog.getLog().log(SessionLog.FINEST, SessionLog.METAMODEL, "metamodel_itentifiableType_javaclass_null_cannot_set_supertype",
                         potentialIdentifiableType.getDescriptor(), this);
             } else {
-                Class superclass = aClass.getSuperclass();
+                Class<?> superclass = aClass.getSuperclass();
                 // explicitly set the superType to null (just in case it is initialized to a non-null value in a constructor)
                 IdentifiableType<?> identifiableTypeSuperclass = null;
                 if(potentialIdentifiableType.isIdentifiableType() && (superclass != ClassConstants.OBJECT && superclass != null)) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/PluralAttributeImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/PluralAttributeImpl.java
index 7e3248b..b77aaf4 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/PluralAttributeImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/PluralAttributeImpl.java
@@ -74,7 +74,7 @@
             this.elementType = getMetamodel().getType(elementDesc.getJavaClass());
         } else {
             // See CollectionContainerPolicy
-            Class attributeClass = null;
+            Class<?> attributeClass = null;
             // TODO: handle AggregateCollectionMapping and verify isAbstractDirectMapping
             if(mapping.isDirectCollectionMapping() || mapping.isAbstractCompositeDirectCollectionMapping()
                     || mapping.isDirectCollectionMapping()) {
@@ -123,7 +123,7 @@
                 attributeClass = Object.class;
                 AbstractSessionLog.getLog().log(SessionLog.FINEST, SessionLog.METAMODEL, "metamodel_attribute_class_type_is_null", this);
             }
-            this.elementType = getMetamodel().getType(attributeClass);
+            this.elementType = (Type<V>) getMetamodel().getType(attributeClass);
         }
     }
 
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/SetAttributeImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/SetAttributeImpl.java
index 7120f0d..779e4f0 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/SetAttributeImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/SetAttributeImpl.java
@@ -75,6 +75,7 @@
      *  @return Java type
      */
     @Override
+    @SuppressWarnings({"rawtypes"})
     public Class getJavaType() {
         return Set.class;
     }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/SingularAttributeImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/SingularAttributeImpl.java
index be6e9a7..a46fff1 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/SingularAttributeImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/SingularAttributeImpl.java
@@ -74,7 +74,7 @@
     protected SingularAttributeImpl(ManagedTypeImpl<X> managedType, DatabaseMapping mapping, boolean validationEnabled) {
         super(managedType, mapping);
         // Case: Handle primitive or java lang type (non-Entity) targets
-        Class attributeClass = mapping.getAttributeClassification();
+        Class<?> attributeClass = mapping.getAttributeClassification();
         /**
          * Case: Handle Entity targets
          * Process supported mappings by assigning their elementType.
@@ -122,7 +122,7 @@
             attributeClass = MetamodelImpl.DEFAULT_ELEMENT_TYPE_FOR_UNSUPPORTED_MAPPINGS;
             AbstractSessionLog.getLog().log(SessionLog.FINEST, SessionLog.METAMODEL, "metamodel_attribute_class_type_is_null", this);
         }
-        elementType = getMetamodel().getType(attributeClass);
+        elementType = (Type<T>) getMetamodel().getType(attributeClass);
     }
 
     /**
@@ -201,19 +201,20 @@
      *  @return Java type
      */
     @Override
+    @SuppressWarnings({"unchecked"})
     public Class<T> getJavaType() {
         if(null == elementType) {
-            Class aJavaType = getMapping().getAttributeClassification();
+            Class<?> aJavaType = getMapping().getAttributeClassification();
             if(null == aJavaType) {
                 aJavaType = getMapping().getField().getType();
                 if(null == aJavaType) {
                     // lookup the attribute on the containing class
-                    Class containingClass = getMapping().getDescriptor().getJavaClass();
+                    Class<?> containingClass = getMapping().getDescriptor().getJavaClass();
                     Field aField = null;
                     try {
                         aField = containingClass.getDeclaredField(getMapping().getAttributeName());
                         aJavaType = aField.getType();
-                        return aJavaType;
+                        return (Class<T>) aJavaType;
                     } catch (NoSuchFieldException nsfe) {
                         // This exception will be warned about below
                         if(null == aJavaType) {
@@ -223,7 +224,7 @@
                     }
                 }
             }
-            return aJavaType;
+            return (Class<T>) aJavaType;
         } else {
             return this.elementType.getJavaType();
         }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CommonAbstractCriteriaImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CommonAbstractCriteriaImpl.java
index 429d548..9ed8762 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CommonAbstractCriteriaImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CommonAbstractCriteriaImpl.java
@@ -53,7 +53,7 @@
     protected Metamodel metamodel;
     protected Expression<Boolean> where;
     protected CriteriaBuilderImpl queryBuilder;
-    protected Class queryType;
+    protected Class<T> queryType;
 
     protected Set<ParameterExpression<?>> parameters;
 
@@ -114,7 +114,7 @@
      *            the entity class
      * @return query root corresponding to the given entity
      */
-    public Root internalFrom(Class entityClass) {
+    public Root internalFrom(Class<?> entityClass) {
         EntityType entity = this.metamodel.entity(entityClass);
         return this.internalFrom(entity);
     }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CompoundSelectionImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CompoundSelectionImpl.java
index aa8834e..2d2e9de 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CompoundSelectionImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CompoundSelectionImpl.java
@@ -45,11 +45,11 @@
     //bug 366386 - track items using duplicate alias names
     protected ArrayList<String> duplicateAliasNames;
 
-    public CompoundSelectionImpl(Class javaType, Selection[] subSelections) {
+    public CompoundSelectionImpl(Class<?> javaType, Selection[] subSelections) {
         this(javaType, subSelections, false);
     }
 
-    public CompoundSelectionImpl(Class javaType, Selection[] subSelections, boolean validate) {
+    public CompoundSelectionImpl(Class<?> javaType, Selection[] subSelections, boolean validate) {
         super(javaType, null);
         this.subSelections = new ArrayList<>();
         //used to validate that an alias is only used once
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/ConstructorSelectionImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/ConstructorSelectionImpl.java
index 44180a2..b107654 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/ConstructorSelectionImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/ConstructorSelectionImpl.java
@@ -37,9 +37,9 @@
 public class ConstructorSelectionImpl extends CompoundSelectionImpl {
 
     protected transient Constructor constructor;
-    protected Class[] constructorArgTypes;
+    protected Class<?>[] constructorArgTypes;
 
-    public ConstructorSelectionImpl(Class javaType, Selection[] subSelections) {
+    public ConstructorSelectionImpl(Class<?> javaType, Selection[] subSelections) {
         super(javaType, subSelections, true);//need to validate selection items
     }
 
@@ -79,7 +79,7 @@
      * INTERNAL:
      * Set the constructorArgTypes.
      */
-    public void setConstructorArgTypes(Class[] constructorArgTypes){
+    public void setConstructorArgTypes(Class<?>[] constructorArgTypes){
         this.constructorArgTypes = constructorArgTypes;
     }
 }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CriteriaQueryImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CriteriaQueryImpl.java
index 36ee56f..438ae74 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CriteriaQueryImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CriteriaQueryImpl.java
@@ -64,7 +64,7 @@
 
     protected Set<FromImpl> joins;
 
-    public CriteriaQueryImpl(Metamodel metamodel, ResultType queryResult, Class result, CriteriaBuilderImpl queryBuilder) {
+    public CriteriaQueryImpl(Metamodel metamodel, ResultType queryResult, Class<T> result, CriteriaBuilderImpl queryBuilder) {
         super(metamodel, queryResult, queryBuilder, result);
     }
 
@@ -89,20 +89,20 @@
             }
             if (selection.getJavaType().equals(Tuple.class)) {
                 this.queryResult = ResultType.TUPLE;
-                this.queryType = Tuple.class;
+                this.queryType = (Class<T>) Tuple.class;
             } else if (((InternalSelection) selection).isConstructor()) {
                 Selection[] selectArray = selection.getCompoundSelectionItems().toArray(new Selection[selection.getCompoundSelectionItems().size()]);
                 populateAndSetConstructorSelection((ConstructorSelectionImpl)selection, this.selection.getJavaType(), selectArray);
-                this.queryType = selection.getJavaType();
+                this.queryType = (Class<T>) selection.getJavaType();
             } else {
                 this.queryResult = ResultType.OBJECT_ARRAY;
-                this.queryType = ClassConstants.AOBJECT;
+                this.queryType = (Class<T>) ClassConstants.AOBJECT;
             }
         } else {
             // Update query type only when it's not null in selection argument.
-            Class queryType = selection.getJavaType();
+            Class<?> queryType = selection.getJavaType();
             if (queryType != null) {
-                this.queryType = queryType;
+                this.queryType = (Class<T>) queryType;
             }
             TypeImpl type = ((MetamodelImpl)this.metamodel).getType(this.queryType);
             if (type != null && type.getPersistenceType().equals(PersistenceType.ENTITY)) {
@@ -396,7 +396,7 @@
      *
      */
     public void populateAndSetConstructorSelection(ConstructorSelectionImpl constructorSelection, Class<?> class1, Selection<?>... selections) throws IllegalArgumentException{
-        Class[] constructorArgs = new Class[selections.length];
+        Class<?>[] constructorArgs = new Class<?>[selections.length];
         int count = 0;
         for (Selection select : selections) {
             if(select instanceof ConstructorSelectionImpl) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/FromImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/FromImpl.java
index 3286a7c..b48fb30 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/FromImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/FromImpl.java
@@ -348,7 +348,7 @@
                 }
             }
         }else{
-            Class clazz = ((SingularAttribute)attribute).getBindableJavaType();
+            Class<Y> clazz = ((SingularAttribute)attribute).getBindableJavaType();
             if (((SingularAttribute)attribute).getType().getPersistenceType().equals(PersistenceType.BASIC)){
                 return new PathImpl<Y>(this, this.metamodel, clazz, this.currentNode.get(attribute.getName()), (Bindable)attribute);
             }else{
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/SubQueryImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/SubQueryImpl.java
index 2a5a08f..19e8f10 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/SubQueryImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/SubQueryImpl.java
@@ -79,7 +79,7 @@
 
 
 
-    public SubQueryImpl(Metamodel metamodel, Class result, CriteriaBuilderImpl queryBuilder, CommonAbstractCriteria parent){
+    public SubQueryImpl(Metamodel metamodel, Class<T> result, CriteriaBuilderImpl queryBuilder, CommonAbstractCriteria parent){
         super(metamodel, ResultType.OTHER, queryBuilder, result);
         this.subQuery = new ReportQuery();
         TypeImpl queryType = ((MetamodelImpl)metamodel).getType(result);
@@ -111,7 +111,7 @@
         }
 
         this.selection = (SelectionImpl) selection;
-        this.queryType = selection.getJavaType();
+        this.queryType = (Class<T>) selection.getJavaType();
 
         this.subQuery.getItems().clear();
 
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/transaction/TransactionImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/transaction/TransactionImpl.java
index 8dc21b3..a8a1c2c 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/transaction/TransactionImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/transaction/TransactionImpl.java
@@ -105,7 +105,7 @@
         Connection proxyConnection = null;
         try {
             InvocationHandler handler = new ConnectionProxyHandler(connection);
-            proxyConnection = (Connection)proxyClass.getConstructor(new Class[] { InvocationHandler.class }).newInstance(new Object[] { handler });
+            proxyConnection = (Connection)proxyClass.getConstructor(new Class<?>[] { InvocationHandler.class }).newInstance(new Object[] { handler });
         } catch (Exception ex) {
             throw TransactionException.internalProxyException(ex);
         }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/PersistenceWeaver.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/PersistenceWeaver.java
index 76f166b..7d2dadd 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/PersistenceWeaver.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/PersistenceWeaver.java
@@ -90,7 +90,7 @@
      */
     @Override
     public byte[] transform(final ClassLoader loader, final String className,
-            final Class classBeingRedefined, final ProtectionDomain protectionDomain,
+            final Class<?> classBeingRedefined, final ProtectionDomain protectionDomain,
             final byte[] classfileBuffer) throws IllegalClassFormatException {
         final SessionLog log = AbstractSessionLog.getLog();
         // PERF: Is finest logging on weaving turned on?
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/TransformerFactory.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/TransformerFactory.java
index 9943cf5..5c4d163 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/TransformerFactory.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/TransformerFactory.java
@@ -252,10 +252,10 @@
         return canWeaveChangeTracking;
     }
 
-    protected boolean wasChangeTrackingAlreadyWeaved(Class clz){
-        Class[] interfaces = clz.getInterfaces();
+    protected boolean wasChangeTrackingAlreadyWeaved(Class<?> clz){
+        Class<?>[] interfaces = clz.getInterfaces();
         for (int i = 0; i < interfaces.length; i++) {
-            Class c = interfaces[i];
+            Class<?> c = interfaces[i];
             if (c.getName().equals(PersistenceWeavedChangeTracking.class.getName())){
                 return true;
             }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/JpaCache.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/JpaCache.java
index e3fa71f..4dd85dc 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/JpaCache.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/JpaCache.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -41,7 +41,7 @@
      * <p> NOTE: Caution must be used in doing this to ensure that the Objects within the cache
      * are not referenced from other Objects of other classes or from the application.
      */
-    void clear(Class cls);
+    void clear(Class<?> cls);
 
     /**
      * Clear all the query results caches.
@@ -56,7 +56,7 @@
     /**
      * Clear all named query results cache associated with entity class.
      */
-    void clearQueryCache(Class entityClass);
+    void clearQueryCache(Class<?> entityClass);
 
     /**
      * Returns the remaining life of the given Object (in milliseconds).  This method is associated with use of
@@ -74,7 +74,7 @@
     /**
      * Returns true if the Object with the id and Class type is valid in the cache.
      */
-    boolean isValid(Class cls, Object id);
+    boolean isValid(Class<?> cls, Object id);
 
     /**
      * Used to print all the Objects in the cache.
@@ -86,7 +86,7 @@
      * Used to print all the Objects in the cache of the Class type.
      * The output of this method will be logged to this persistence unit's SessionLog at SEVERE level.
      */
-    void print(Class cls);
+    void print(Class<?> cls);
 
     /**
      * Used to print all the currently locked cache keys in the cache.
@@ -106,7 +106,7 @@
      * Returns the Object from the cache map with the id
      * and Class type.
      */
-    Object getObject(Class cls, Object id);
+    Object getObject(Class<?> cls, Object id);
 
     /**
      * ADVANCED:
@@ -131,7 +131,7 @@
      * <p> NOTE: Caution should be used when calling to avoid violating Object identity.
      * The application should only call this if its known that no references to the Object exist.
      */
-    Object removeObject(Class cls, Object id);
+    Object removeObject(Class<?> cls, Object id);
 
     /**
      * Returns true if the cache contains an Object with the same id and Class type of the given object.
@@ -155,7 +155,7 @@
      * If true is passed, the object is also invalidated across cache coordination.
      * Cache coordination must be enabled for this to have an affect.
      */
-    void evict(Class classToEvict, Object id, boolean invalidateInCluster);
+    void evict(Class<?> classToEvict, Object id, boolean invalidateInCluster);
 
     /**
      * Returns the object's Id.
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/JpaEntityManager.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/JpaEntityManager.java
index 3aa39e0..1ab5bc0 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/JpaEntityManager.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/JpaEntityManager.java
@@ -71,21 +71,21 @@
      * Return null if either not a session broker or cls is not mapped.
      * Session broker implement composite persistence unit.
      */
-    AbstractSession getMemberDatabaseSession(Class cls);
+    AbstractSession getMemberDatabaseSession(Class<?> cls);
 
     /**
      * Return the member ServerSession that maps cls in session broker.
      * Return null if either not a session broker or cls is not mapped.
      * Session broker implement composite persistence unit.
      */
-    ServerSession getMemberServerSession(Class cls);
+    ServerSession getMemberServerSession(Class<?> cls);
 
     /**
      * Return the name of member session that maps cls.
      * Return null if either not a session broker or cls is not mapped.
      * Session broker implement composite persistence unit.
      */
-    String getMemberSessionName(Class cls);
+    String getMemberSessionName(Class<?> cls);
 
     /**
      * Indicates whether the underlying session is a session broker.
@@ -107,7 +107,7 @@
     /**
      * This method is used to create a query using a EclipseLink Expression for the entity class.
      */
-    jakarta.persistence.Query createQuery(Expression expression, Class entityClass);
+    jakarta.persistence.Query createQuery(Expression expression, Class<?> entityClass);
 
     /**
      * This method is used to create a query using a EclipseLink DatabaseQuery.
@@ -122,7 +122,7 @@
     /**
      * This method is used to create a query using a EclipseLink Call for the entity class.
      */
-    jakarta.persistence.Query createQuery(Call call, Class entityClass);
+    jakarta.persistence.Query createQuery(Call call, Class<?> entityClass);
 
     /**
      * This method is used to create a query using query by example.
@@ -132,12 +132,12 @@
     /**
      * This method will create a query object that wraps a EclipseLink Named Query.
      */
-    jakarta.persistence.Query createDescriptorNamedQuery(String queryName, Class descriptorClass);
+    jakarta.persistence.Query createDescriptorNamedQuery(String queryName, Class<?> descriptorClass);
 
     /**
      * This method will create a query object that wraps a EclipseLink Named Query.
      */
-    jakarta.persistence.Query createDescriptorNamedQuery(String queryName, Class descriptorClass, List argumentTypes);
+    jakarta.persistence.Query createDescriptorNamedQuery(String queryName, Class<?> descriptorClass, List argumentTypes);
 
     /**
      * This method will load the passed entity or collection of entities using the passed AttributeGroup.
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/dynamic/DynamicIdentityPolicy.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/dynamic/DynamicIdentityPolicy.java
index 0632960..1fa92d6 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/dynamic/DynamicIdentityPolicy.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/dynamic/DynamicIdentityPolicy.java
@@ -50,7 +50,7 @@
     }
 
     @Override
-    protected KeyElementAccessor[] initializePrimaryKeyFields(Class keyClass, AbstractSession session) {
+    protected KeyElementAccessor[] initializePrimaryKeyFields(Class<?> keyClass, AbstractSession session) {
         if (keyClass == null && getDescriptor().getPrimaryKeyFields().size() > 1) {
             KeyElementAccessor[] result = super.initializePrimaryKeyFields(null, session);
             this.pkClass = Object[].class;
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveClassTransformer.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveClassTransformer.java
index 82227aa..5a0cdac 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveClassTransformer.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveClassTransformer.java
@@ -82,7 +82,7 @@
      * The method performs weaving function on the given class.
      * @return the converted(woven) class
      */
-    public byte[] transform(String originalClassName, Class originalClass, byte[] originalClassBytes)throws IllegalClassFormatException{
+    public byte[] transform(String originalClassName, Class<?> originalClass, byte[] originalClassBytes)throws IllegalClassFormatException{
         byte[] newClassBytes = null;
         for(ClassTransformer transformer : classTransformers){
             newClassBytes=transformer.transform(aClassLoader, originalClassName, originalClass, null, originalClassBytes);
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/SDOHelper.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/SDOHelper.java
index 38211bd..dd59406 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/SDOHelper.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/SDOHelper.java
@@ -323,6 +323,7 @@
      * @return
      * @throws IllegalArgumentException
      */
+    @SuppressWarnings({"unchecked"})
     public static <T> T unwrap(Type type, Class<T> clazz) throws IllegalArgumentException {
         if (clazz == SDOType.class) {
             return (T) getType(type);
@@ -374,6 +375,7 @@
      * @return
      * @throws IllegalArgumentException
      */
+    @SuppressWarnings({"unchecked"})
     public static <T> T unwrap(Property property, Class<T> clazz) throws IllegalArgumentException {
         if (clazz == org.eclipse.persistence.sdo.SDOProperty.class) {
             return (T) getProperty(property);
@@ -393,6 +395,7 @@
      * @return
      * @throws IllegalArgumentException
      */
+    @SuppressWarnings({"unchecked"})
     public static <T> T unwrap(DataObject dataObject, Class<T> clazz) throws IllegalArgumentException {
         if (clazz == org.eclipse.persistence.sdo.SDODataObject.class) {
             return (T) getDataObject(dataObject);
@@ -412,6 +415,7 @@
      * @return
      * @throws IllegalArgumentException
      */
+    @SuppressWarnings({"unchecked"})
     public static <T> T unwrap(ChangeSummary changeSummary, Class<T> clazz) throws IllegalArgumentException {
         if (clazz == org.eclipse.persistence.sdo.SDOChangeSummary.class) {
             return (T) getChangeSummary(changeSummary);
@@ -431,6 +435,7 @@
      * @return
      * @throws IllegalArgumentException
      */
+    @SuppressWarnings({"unchecked"})
     public static <T> T unwrap(Sequence sequence, Class<T> clazz) throws IllegalArgumentException {
         if (clazz == org.eclipse.persistence.sdo.SDOSequence.class) {
             return (T) getSequence(sequence);
@@ -450,6 +455,7 @@
      * @return
      * @throws IllegalArgumentException
      */
+    @SuppressWarnings({"unchecked"})
     public static <T> T unwrap(HelperContext helperContext, Class<T> clazz) throws IllegalArgumentException {
         if (clazz == org.eclipse.persistence.sdo.helper.SDOHelperContext.class) {
             return (T) getHelperContext(helperContext);
@@ -469,6 +475,7 @@
      * @return
      * @throws IllegalArgumentException
      */
+    @SuppressWarnings({"unchecked"})
     public static <T> T unwrap(CopyHelper copyHelper, Class<T> clazz) throws IllegalArgumentException {
         if (clazz == org.eclipse.persistence.sdo.helper.SDOCopyHelper.class) {
             return (T) getCopyHelper(copyHelper);
@@ -488,6 +495,7 @@
      * @return
      * @throws IllegalArgumentException
      */
+    @SuppressWarnings({"unchecked"})
     public static <T> T unwrap(DataFactory dataFactory, Class<T> clazz) throws IllegalArgumentException {
         if (clazz == org.eclipse.persistence.sdo.helper.SDODataFactory.class) {
             return (T) getDataFactory(dataFactory);
@@ -507,6 +515,7 @@
      * @return
      * @throws IllegalArgumentException
      */
+    @SuppressWarnings({"unchecked"})
     public static <T> T unwrap(DataHelper dataHelper, Class<T> clazz) throws IllegalArgumentException {
         if (clazz == org.eclipse.persistence.sdo.helper.SDODataHelper.class) {
             return (T) getDataHelper(dataHelper);
@@ -526,6 +535,7 @@
      * @return
      * @throws IllegalArgumentException
      */
+    @SuppressWarnings({"unchecked"})
     public static <T> T unwrap(EqualityHelper equalityHelper, Class<T> clazz) throws IllegalArgumentException {
         if (clazz == org.eclipse.persistence.sdo.helper.SDOEqualityHelper.class) {
             return (T) getEqualityHelper(equalityHelper);
@@ -545,6 +555,7 @@
      * @return
      * @throws IllegalArgumentException
      */
+    @SuppressWarnings({"unchecked"})
     public static <T> T unwrap(TypeHelper typeHelper, Class<T> clazz) throws IllegalArgumentException {
         if (clazz == org.eclipse.persistence.sdo.helper.SDOTypeHelper.class) {
             return (T) getTypeHelper(typeHelper);
@@ -566,6 +577,7 @@
      * @return
      * @throws IllegalArgumentException
      */
+    @SuppressWarnings({"unchecked"})
     public static <T> T unwrap(XMLHelper xmlHelper, Class<T> clazz) throws IllegalArgumentException {
         try {
             org.eclipse.persistence.sdo.helper.SDOXMLHelper xmlHelperImpl = (org.eclipse.persistence.sdo.helper.SDOXMLHelper) xmlHelper;
@@ -594,6 +606,7 @@
      * @return
      * @throws IllegalArgumentException
      */
+    @SuppressWarnings({"unchecked"})
     public static <T> T unwrap(XSDHelper xsdHelper, Class<T> clazz) throws IllegalArgumentException {
         if (clazz == org.eclipse.persistence.sdo.helper.SDOXSDHelper.class) {
             return (T) getXSDHelper(xsdHelper);
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOClassLoader.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOClassLoader.java
index b305c8a..2bae029 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOClassLoader.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOClassLoader.java
@@ -24,7 +24,7 @@
  */
 public class SDOClassLoader extends ClassLoader {
 
-    private Map<String, Class> generatedClasses;
+    private Map<String, Class<?>> generatedClasses;
 
     // hold the context containing all helpers so that we can preserve inter-helper relationships
     private HelperContext aHelperContext;