cleanup in codegen/factories

Signed-off-by: Lukas Jungmann <lukas.jungmann@oracle.com>
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassDescriptor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassDescriptor.java
index b7632b7..a04a542 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassDescriptor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassDescriptor.java
@@ -2613,7 +2613,7 @@
      */
     public Map<DatabaseTable, Set<DatabaseTable>> getMultipleTableForeignKeys() {
         if (multipleTableForeignKeys == null) {
-            multipleTableForeignKeys = new HashMap(5);
+            multipleTableForeignKeys = new HashMap<>(5);
         }
         return multipleTableForeignKeys;
     }
@@ -4790,11 +4790,8 @@
      * INTERNAL:
      * This method is used by the  XML Deployment ClassDescriptor to read and write these mappings
      */
-    public void setForeignKeyFieldNamesForMultipleTable(Vector associations) throws DescriptorException {
-        Enumeration foreignKeys = associations.elements();
-
-        while (foreignKeys.hasMoreElements()) {
-            Association association = (Association) foreignKeys.nextElement();
+    public void setForeignKeyFieldNamesForMultipleTable(List<Association> associations) throws DescriptorException {
+        for (Association association: associations) {
             addForeignKeyFieldNameForMultipleTable((String) association.getKey(), (String) association.getValue());
         }
     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/AccessLevel.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/AccessLevel.java
index 9fcd479..79500d7 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/AccessLevel.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/AccessLevel.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
@@ -201,7 +201,6 @@
                 generator.write(" ");
             }
             generator.write("synchronized");
-            needsSpace = true;
         }
     }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/AttributeDefinition.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/AttributeDefinition.java
index f7ee5ee..e33b2f8 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/AttributeDefinition.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/AttributeDefinition.java
@@ -34,16 +34,16 @@
      * (and adding the appropriate import) if the type is
      * unambiguous.
      */
-    private void adjustInitialValue(Map typeNameMap) {
+    private void adjustInitialValue(Map<String, Set<String>> typeNameMap) {
         if (getInitialValue() == null) {
             return;
         }
 
         StringBuilder initialValue = new StringBuilder(getInitialValue());
-        Set typeNames = parseForTypeNames(initialValue.toString());
+        Set<String> typeNames = parseForTypeNames(initialValue.toString());
 
-        for (Iterator i = typeNames.iterator(); i.hasNext();) {
-            String typeName = (String)i.next();
+        for (Iterator<String> i = typeNames.iterator(); i.hasNext();) {
+            String typeName = i.next();
             String adjustedTypeName = adjustTypeName(typeName, typeNameMap);
 
             if (!typeName.equals(adjustedTypeName)) {
@@ -59,7 +59,7 @@
         setInitialValue(initialValue.toString());
     }
 
-    protected void adjustTypeNames(Map typeNameMap) {
+    protected void adjustTypeNames(Map<String, Set<String>> typeNameMap) {
         adjustInitialValue(typeNameMap);
     }
 
@@ -72,11 +72,11 @@
     /**
      * Used for calculating imports.  @see org.eclipse.persistence.internal.codegen.ClassDefinition#calculateImports()
      */
-    protected void putTypeNamesInMap(Map typeNameMap) {
+    protected void putTypeNamesInMap(Map<String, Set<String>> typeNameMap) {
         putTypeNameInMap(getTypeName(), typeNameMap);
 
-        for (Iterator i = parseForTypeNames(getInitialValue()).iterator(); i.hasNext();) {
-            putTypeNameInMap((String)i.next(), typeNameMap);
+        for (Iterator<String> i = parseForTypeNames(getInitialValue()).iterator(); i.hasNext();) {
+            putTypeNameInMap(i.next(), typeNameMap);
         }
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/ClassDefinition.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/ClassDefinition.java
index 2088b6e..7095332 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/ClassDefinition.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/ClassDefinition.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
@@ -35,24 +35,24 @@
  */
 public class ClassDefinition extends CodeDefinition {
     protected String packageName;
-    protected Vector imports;
+    protected Vector<String> imports;
     protected int type;
     public static final int CLASS_TYPE = 1;
     public static final int INTERFACE_TYPE = 2;
     protected String superClass;
-    protected Vector interfaces;
-    protected Vector attributes;
-    protected Vector methods;
-    protected Vector innerClasses;
+    protected Vector<String> interfaces;
+    protected Vector<AttributeDefinition> attributes;
+    protected Vector<MethodDefinition> methods;
+    protected Vector<ClassDefinition> innerClasses;
 
     public ClassDefinition() {
         this.packageName = "";
-        this.imports = new Vector(3);
+        this.imports = new Vector<>(3);
         this.type = CLASS_TYPE;
-        this.interfaces = new Vector(3);
-        this.attributes = new Vector();
-        this.methods = new Vector();
-        this.innerClasses = new Vector(3);
+        this.interfaces = new Vector<>(3);
+        this.attributes = new Vector<>();
+        this.methods = new Vector<>();
+        this.innerClasses = new Vector<>(3);
     }
 
     public void addAttribute(AttributeDefinition attribute) {
@@ -69,8 +69,8 @@
         }
     }
 
-    private void addImports(Map typeNameMap) {
-        for (Map.Entry<String, Set<String>> entry : (Set<Map.Entry<String, Set<String>>>) typeNameMap.entrySet()) {
+    private void addImports(Map<String, Set<String>> typeNameMap) {
+        for (Map.Entry<String, Set<String>> entry : typeNameMap.entrySet()) {
             String shortName = entry.getKey();
             Set<String> packageNames = entry.getValue();
 
@@ -100,36 +100,36 @@
         getMethods().addElement(method);
     }
 
-    private void addTypeNamesToMap(HashMap typeNameMap) {
+    private void addTypeNamesToMap(HashMap<String, Set<String>> typeNameMap) {
         putTypeNameInMap(getSuperClass(), typeNameMap);
 
-        for (Iterator i = getInterfaces().iterator(); i.hasNext();) {
-            putTypeNameInMap((String)i.next(), typeNameMap);
+        for (Iterator<String> i = getInterfaces().iterator(); i.hasNext();) {
+            putTypeNameInMap(i.next(), typeNameMap);
         }
 
-        for (Iterator i = getAttributes().iterator(); i.hasNext();) {
-            ((AttributeDefinition)i.next()).putTypeNamesInMap(typeNameMap);
+        for (Iterator<AttributeDefinition> i = getAttributes().iterator(); i.hasNext();) {
+            (i.next()).putTypeNamesInMap(typeNameMap);
         }
 
-        for (Iterator i = getMethods().iterator(); i.hasNext();) {
-            ((MethodDefinition)i.next()).putTypeNamesInMap(typeNameMap);
+        for (Iterator<MethodDefinition> i = getMethods().iterator(); i.hasNext();) {
+            i.next().putTypeNamesInMap(typeNameMap);
         }
     }
 
-    private void adjustTypeNames(HashMap typeNameMap) {
+    private void adjustTypeNames(HashMap<String, Set<String>> typeNameMap) {
         setSuperClass(adjustTypeName(getSuperClass(), typeNameMap));
 
-        for (Iterator i = new Vector(getInterfaces()).iterator(); i.hasNext();) {
-            String interfaceName = (String)i.next();
+        for (Iterator<String> i = new Vector<>(getInterfaces()).iterator(); i.hasNext();) {
+            String interfaceName = i.next();
             replaceInterface(interfaceName, adjustTypeName(interfaceName, typeNameMap));
         }
 
-        for (Iterator i = getAttributes().iterator(); i.hasNext();) {
-            ((AttributeDefinition)i.next()).adjustTypeNames(typeNameMap);
+        for (Iterator<AttributeDefinition> i = getAttributes().iterator(); i.hasNext();) {
+            (i.next()).adjustTypeNames(typeNameMap);
         }
 
-        for (Iterator i = getMethods().iterator(); i.hasNext();) {
-            ((MethodDefinition)i.next()).adjustTypeNames(typeNameMap);
+        for (Iterator<MethodDefinition> i = getMethods().iterator(); i.hasNext();) {
+            i.next().adjustTypeNames(typeNameMap);
         }
     }
 
@@ -149,7 +149,7 @@
     public void calculateImports() {
         // Calculate type name map for class definition.
         // Key - short type name, Value - Set of package names for that type name
-        HashMap typeNameMap = new HashMap();
+        HashMap<String, Set<String>> typeNameMap = new HashMap<>();
         addTypeNamesToMap(typeNameMap);
 
         // Go back through class def, pulling out imports and removing package names from
@@ -164,23 +164,23 @@
         return getMethods().contains(method);
     }
 
-    protected Vector getAttributes() {
+    protected Vector<AttributeDefinition> getAttributes() {
         return attributes;
     }
 
-    protected Vector getImports() {
+    protected Vector<String> getImports() {
         return imports;
     }
 
-    protected Vector getInnerClasses() {
+    protected Vector<ClassDefinition> getInnerClasses() {
         return innerClasses;
     }
 
-    protected Vector getInterfaces() {
+    protected Vector<String> getInterfaces() {
         return interfaces;
     }
 
-    protected Vector getMethods() {
+    protected Vector<MethodDefinition> getMethods() {
         return methods;
     }
 
@@ -208,11 +208,11 @@
         }
     }
 
-    private void setImports(Vector imports) {
+    private void setImports(Vector<String> imports) {
         this.imports = imports;
     }
 
-    private void setMethods(Vector methods) {
+    private void setMethods(Vector<MethodDefinition> methods) {
         this.methods = methods;
     }
 
@@ -233,29 +233,29 @@
     }
 
     protected void sortImports() {
-        setImports(new Vector(new TreeSet(getImports())));
+        setImports(new Vector<>(new TreeSet<>(getImports())));
     }
 
     protected void sortMethods() {
         //Object methodArray[] = getMethods().toArray();
-        Object[] methodArray = Helper.arrayFromVector(getMethods());
+        MethodDefinition[] methodArray = getMethods().toArray(new MethodDefinition[0]);
 
-        Comparator comparison = new Comparator() {
+        Comparator<MethodDefinition> comparison = new Comparator<MethodDefinition>() {
             @Override
-            public int compare(Object first, Object second) {
-                if (((MethodDefinition)first).isConstructor()) {
+            public int compare(MethodDefinition first, MethodDefinition second) {
+                if (first.isConstructor()) {
                     return -1;
-                } else if (((MethodDefinition)second).isConstructor()) {
+                } else if (second.isConstructor()) {
                     return 1;
                 } else {
-                    return ((MethodDefinition)first).getName().compareTo(((MethodDefinition)second).getName());
+                    return first.getName().compareTo(second.getName());
                 }
             }
         };
 
         Arrays.sort(methodArray, comparison);
 
-        Vector sortedMethods = new Vector(getMethods().size());
+        Vector<MethodDefinition> sortedMethods = new Vector<>(getMethods().size());
         for (int index = 0; index < methodArray.length; index++) {
             sortedMethods.addElement(methodArray[index]);
         }
@@ -275,8 +275,8 @@
             generator.cr();
         }
 
-        for (Enumeration importsEnum = getImports().elements(); importsEnum.hasMoreElements();) {
-            String importLine = (String)importsEnum.nextElement();
+        for (Enumeration<String> importsEnum = getImports().elements(); importsEnum.hasMoreElements();) {
+            String importLine = importsEnum.nextElement();
             generator.write("import ");
             generator.write(importLine);
             generator.writeln(";");
@@ -308,9 +308,9 @@
         }
 
         boolean isFirst = true;
-        for (Enumeration interfacesEnum = getInterfaces().elements();
-                 interfacesEnum.hasMoreElements();) {
-            String interfaceName = (String)interfacesEnum.nextElement();
+        for (Enumeration<String> interfacesEnum = getInterfaces().elements();
+             interfacesEnum.hasMoreElements();) {
+            String interfaceName = interfacesEnum.nextElement();
 
             if (isFirst) {
                 if (isInterface()) {
@@ -331,10 +331,10 @@
         generator.writeln(" {");
         generator.cr();
 
-        for (Enumeration attributesEnum = getAttributes().elements();
-                 attributesEnum.hasMoreElements();) {
+        for (Enumeration<AttributeDefinition> attributesEnum = getAttributes().elements();
+             attributesEnum.hasMoreElements();) {
             generator.tab();
-            ((AttributeDefinition)attributesEnum.nextElement()).write(generator);
+            (attributesEnum.nextElement()).write(generator);
             generator.cr();
         }
 
@@ -342,16 +342,16 @@
             generator.cr();
         }
 
-        for (Enumeration methodsEnum = getMethods().elements(); methodsEnum.hasMoreElements();) {
-            ((MethodDefinition)methodsEnum.nextElement()).write(generator);
+        for (Enumeration<MethodDefinition> methodsEnum = getMethods().elements(); methodsEnum.hasMoreElements();) {
+            methodsEnum.nextElement().write(generator);
             generator.cr();
             generator.cr();
         }
 
         //used for Oc4j code gen
-        for (Enumeration innerClassesEnum = getInnerClasses().elements();
-                 innerClassesEnum.hasMoreElements();) {
-            ((ClassDefinition)innerClassesEnum.nextElement()).write(generator);
+        for (Enumeration<ClassDefinition> innerClassesEnum = getInnerClasses().elements();
+             innerClassesEnum.hasMoreElements();) {
+            (innerClassesEnum.nextElement()).write(generator);
             generator.cr();
             generator.cr();
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/CodeDefinition.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/CodeDefinition.java
index d430157..f4ae7c2 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/CodeDefinition.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/CodeDefinition.java
@@ -39,7 +39,7 @@
         this.comment = "";
     }
 
-    private static boolean adjustmentNeededForType(String typeName, Map typeNameMap) {
+    private static boolean adjustmentNeededForType(String typeName, Map<String, Set<String>> typeNameMap) {
         if ((typeName == null) || typeName.equals("")) {
             return false;
         }
@@ -48,7 +48,7 @@
             return false;
         }
 
-        Set packages = (Set)typeNameMap.get(shortName(typeName));
+        Set<String> packages = typeNameMap.get(shortName(typeName));
         return (packages == null) || (packages.size() <= 1);
     }
 
@@ -63,7 +63,7 @@
      *
      * (e.g. int -&gt; int, java.util.Vector -&gt; Vector, java.lang.Boolean[] -&gt; Boolean[], etc.)
      */
-    protected static String adjustTypeName(String typeName, Map typeNameMap) {
+    protected static String adjustTypeName(String typeName, Map<String, Set<String>> typeNameMap) {
         if (adjustmentNeededForType(typeName, typeNameMap)) {
             putTypeNameInMap(typeName, typeNameMap);
             return typeName.substring(packageName(typeName).length() + 1);
@@ -78,8 +78,8 @@
      * indirect collection types.
      * All other searches too intractable at this point.
      */
-    protected static Set parseForTypeNames(String longString) {
-        Set typeNames = new HashSet();
+    protected static Set<String> parseForTypeNames(String longString) {
+        Set<String> typeNames = new HashSet<>();
 
         if (longString != null) {
             typeNames.addAll(parseForTypeNamesInPackage(longString, JAVA_LANG_PACKAGE_NAME));
@@ -90,8 +90,8 @@
         return typeNames;
     }
 
-    private static Set parseForTypeNamesInPackage(String longString, String packageName) {
-        Set typeNames = new HashSet();
+    private static Set<String> parseForTypeNamesInPackage(String longString, String packageName) {
+        Set<String> typeNames = new HashSet<>();
         int packageStartIndex = longString.indexOf(packageName);
 
         while (packageStartIndex != -1) {
@@ -116,7 +116,7 @@
     /**
      * Used for calculating imports.  @see org.eclipse.persistence.internal.codegen.ClassDefinition#calculateImports()
      */
-    protected static void putTypeNameInMap(String typeName, Map typeNameMap) {
+    protected static void putTypeNameInMap(String typeName, Map<String, Set<String>> typeNameMap) {
         if ((typeName == null) || typeName.equals("")) {
             return;
         }
@@ -125,13 +125,13 @@
         String packageName = packageName(typeName);
 
         if (packageName.length() > 0) {
-            Set packageNames;
+            Set<String> packageNames;
 
             if (typeNameMap.get(shortName) == null) {
-                packageNames = new HashSet();
+                packageNames = new HashSet<>();
                 typeNameMap.put(shortName, packageNames);
             } else {
-                packageNames = (Set)typeNameMap.get(shortName);
+                packageNames = typeNameMap.get(shortName);
             }
 
             // There is no package name.  The package is the default package.
@@ -225,7 +225,7 @@
                 nextLineIndex = comment.indexOf(cr, lastLineIndex);
             }
             generator.write(" * ");
-            generator.writeln(comment.substring(lastLineIndex, comment.length()));
+            generator.writeln(comment.substring(lastLineIndex));
             generator.writeln(" */");
             generator.cr();
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/CodeGenerator.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/CodeGenerator.java
index de64657..7942f1c 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/CodeGenerator.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/CodeGenerator.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
@@ -132,7 +132,7 @@
             if (index != -1) {
                 String packageName = typeName.substring(index);
                 if (getCurrentClass().getImports().contains(packageName)) {
-                    localTypeName = typeName.substring(index, typeName.length());
+                    localTypeName = typeName.substring(index);
                 }
             }
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/HierarchyNode.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/HierarchyNode.java
index cd20717..5555162 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/HierarchyNode.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/HierarchyNode.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
@@ -23,18 +23,18 @@
     //  the class that this node represents
     public String className;
     public HierarchyNode parent;
-    public ArrayList children;
+    public List<HierarchyNode> children;
 
     /**
      * This member will hold the different definition types that should be implemented by the code generated children
      * Used mostly in CMP code generation
      */
-    public ArrayList definitions;
+    public List<?> definitions;
 
     public HierarchyNode(String className) {
         this.className = className;
-        this.children = new ArrayList();
-        this.definitions = new ArrayList();
+        this.children = new ArrayList<>();
+        this.definitions = new ArrayList<>();
     }
 
     public void setParent(HierarchyNode parent) {
@@ -48,7 +48,7 @@
         }
     }
 
-    public List getChildren() {
+    public List<HierarchyNode> getChildren() {
         return this.children;
     }
 
@@ -62,7 +62,6 @@
 
     @Override
     public String toString() {
-        String result = "HierarchyNode:\n\t" + className + "\n" + children + "\n end HierarchyNode\n";
-        return result;
+        return "HierarchyNode:\n\t" + className + "\n" + children + "\n end HierarchyNode\n";
     }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/InheritanceHierarchyBuilder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/InheritanceHierarchyBuilder.java
index e1aeef5..574fece 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/InheritanceHierarchyBuilder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/InheritanceHierarchyBuilder.java
@@ -24,6 +24,10 @@
  */
 public class InheritanceHierarchyBuilder {
 
+    private InheritanceHierarchyBuilder() {
+        //no instance please
+    }
+
     /**
      * INTERNAL:
      * Based on a class name either return a pre-existing node from the hierarchyTree or build one and
@@ -38,7 +42,7 @@
         return node;
     }
 
-    public static Hashtable buildInheritanceHierarchyTree(Project project) {
+    public static Hashtable<String, HierarchyNode> buildInheritanceHierarchyTree(Project project) {
         Map<Class<?>, ClassDescriptor> descriptors = project.getDescriptors();
         Hashtable<String, HierarchyNode> hierarchyTree = new Hashtable<>(descriptors.size());
         for (Iterator<ClassDescriptor> descriptorIterator = descriptors.values().iterator();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/MethodDefinition.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/MethodDefinition.java
index 3a75ce4..9c19977 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/MethodDefinition.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/MethodDefinition.java
@@ -27,16 +27,16 @@
     protected boolean isAbstract;
     protected boolean isConstructor;
     protected String returnType;
-    protected Vector argumentNames;
-    protected Vector lines;
-    protected Vector exceptions;
+    protected Vector<String> argumentNames;
+    protected Vector<String> lines;
+    protected Vector<String> exceptions;
     protected StringBuffer storedBuffer;
 
     protected MethodDefinition() {
         this.isConstructor = false;
         this.returnType = "void";
-        this.lines = new Vector();
-        this.exceptions = new Vector();
+        this.lines = new Vector<>();
+        this.exceptions = new Vector<>();
         this.storedBuffer = new StringBuffer();
     }
 
@@ -57,9 +57,9 @@
         this.storedBuffer.append(partOfLine);
     }
 
-    private void adjustExceptions(Map typeNameMap) {
-        for (Iterator i = new Vector(getExceptions()).iterator(); i.hasNext();) {
-            String exceptionName = (String)i.next();
+    private void adjustExceptions(Map<String, Set<String>> typeNameMap) {
+        for (Iterator<String> i = new Vector<>(getExceptions()).iterator(); i.hasNext();) {
+            String exceptionName = i.next();
             String adjustedExceptionName = adjustTypeName(exceptionName, typeNameMap);
 
             if (!exceptionName.equals(adjustedExceptionName)) {
@@ -73,12 +73,12 @@
      * (and adding the appropriate import) if the type is
      * unambiguous.
      */
-    private void adjustLine(String line, Map typeNameMap) {
+    private void adjustLine(String line, Map<String, Set<String>> typeNameMap) {
         StringBuffer lineInProgress = new StringBuffer(line);
-        Set typeNames = parseForTypeNames(lineInProgress.toString());
+        Set<String> typeNames = parseForTypeNames(lineInProgress.toString());
 
-        for (Iterator i = typeNames.iterator(); i.hasNext();) {
-            String typeName = (String)i.next();
+        for (Iterator<String> i = typeNames.iterator(); i.hasNext();) {
+            String typeName = i.next();
             String adjustedTypeName = adjustTypeName(typeName, typeNameMap);
 
             if (!typeName.equals(adjustedTypeName)) {
@@ -94,13 +94,13 @@
         replaceLine(line, lineInProgress.toString());
     }
 
-    private void adjustLines(Map typeNameMap) {
-        for (Iterator i = new Vector(getLines()).iterator(); i.hasNext();) {
-            adjustLine((String)i.next(), typeNameMap);
+    private void adjustLines(Map<String, Set<String>> typeNameMap) {
+        for (Iterator<String> i = new Vector<>(getLines()).iterator(); i.hasNext();) {
+            adjustLine(i.next(), typeNameMap);
         }
     }
 
-    private void adjustReturnType(Map typeNameMap) {
+    private void adjustReturnType(Map<String, Set<String>> typeNameMap) {
         String adjustedReturnType = adjustTypeName(getReturnType(), typeNameMap);
 
         if (!getReturnType().equals(adjustedReturnType)) {
@@ -108,7 +108,7 @@
         }
     }
 
-    protected void adjustTypeNames(Map typeNameMap) {
+    protected void adjustTypeNames(Map<String, Set<String>> typeNameMap) {
         adjustReturnType(typeNameMap);
         adjustExceptions(typeNameMap);
         adjustLines(typeNameMap);
@@ -168,18 +168,18 @@
         return false;
     }
 
-    protected Vector getArgumentNames() {
+    protected Vector<String> getArgumentNames() {
         if (this.argumentNames == null) {
-            this.argumentNames = new Vector(5);
+            this.argumentNames = new Vector<>(5);
         }
         return argumentNames;
     }
 
     public String getArgumentName(int index) {
-        return (String)getArgumentNames().get(index);
+        return getArgumentNames().get(index);
     }
 
-    public Iterator argumentNames() {
+    public Iterator<String> argumentNames() {
         return getArgumentNames().iterator();
     }
 
@@ -187,15 +187,15 @@
         return getArgumentNames().size();
     }
 
-    protected abstract Vector getArgumentTypeNames();
+    protected abstract Vector<String> getArgumentTypeNames();
 
-    protected abstract Vector getArgumentTypes();
+    protected abstract Vector<String> getArgumentTypes();
 
-    public Vector getLines() {
+    public Vector<String> getLines() {
         return lines;
     }
 
-    protected Vector getExceptions() {
+    protected Vector<String> getExceptions() {
         return this.exceptions;
     }
 
@@ -233,15 +233,15 @@
     /**
      * Used for calculating imports.  @see org.eclipse.persistence.internal.codegen.ClassDefinition#calculateImports()
      */
-    protected void putTypeNamesInMap(Map typeNameMap) {
+    protected void putTypeNamesInMap(Map<String, Set<String>> typeNameMap) {
         putTypeNameInMap(getReturnType(), typeNameMap);
 
-        for (Iterator i = getExceptions().iterator(); i.hasNext();) {
-            putTypeNameInMap((String)i.next(), typeNameMap);
+        for (Iterator<String> i = getExceptions().iterator(); i.hasNext();) {
+            putTypeNameInMap(i.next(), typeNameMap);
         }
 
-        for (Iterator i = getArgumentTypeNames().iterator(); i.hasNext();) {
-            putTypeNameInMap((String)i.next(), typeNameMap);
+        for (Iterator<String> i = getArgumentTypeNames().iterator(); i.hasNext();) {
+            putTypeNameInMap(i.next(), typeNameMap);
         }
     }
 
@@ -296,7 +296,7 @@
 
             generator.cr();
 
-            for (Enumeration linesEnum = getLines().elements(); linesEnum.hasMoreElements();) {
+            for (Enumeration<String> linesEnum = getLines().elements(); linesEnum.hasMoreElements();) {
                 generator.tab();
                 generator.writeln(linesEnum.nextElement());
             }
@@ -310,7 +310,7 @@
     protected void writeThrowsClause(CodeGenerator generator) {
         generator.write(" throws ");
 
-        for (Iterator exceptionIterator = this.exceptions.iterator(); exceptionIterator.hasNext();) {
+        for (Iterator<String> exceptionIterator = this.exceptions.iterator(); exceptionIterator.hasNext();) {
             generator.write(exceptionIterator.next());
 
             if (exceptionIterator.hasNext()) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/NonreflectiveAttributeDefinition.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/NonreflectiveAttributeDefinition.java
index 4612549..a3ae03d 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/NonreflectiveAttributeDefinition.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/NonreflectiveAttributeDefinition.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
@@ -15,6 +15,7 @@
 package org.eclipse.persistence.internal.codegen;
 
 import java.util.Map;
+import java.util.Set;
 
 /**
  * INTERNAL:
@@ -31,7 +32,7 @@
         this.type = "";
     }
 
-    private void adjustType(Map typeNameMap) {
+    private void adjustType(Map<String, Set<String>> typeNameMap) {
         String adjustedTypeName = adjustTypeName(getTypeName(), typeNameMap);
 
         if (!getTypeName().equals(adjustedTypeName)) {
@@ -40,7 +41,7 @@
     }
 
     @Override
-    protected void adjustTypeNames(Map typeNameMap) {
+    protected void adjustTypeNames(Map<String, Set<String>> typeNameMap) {
         adjustType(typeNameMap);
         super.adjustTypeNames(typeNameMap);
     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/NonreflectiveMethodDefinition.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/NonreflectiveMethodDefinition.java
index 930ad59..cc49040 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/NonreflectiveMethodDefinition.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/NonreflectiveMethodDefinition.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
@@ -25,11 +25,11 @@
  * @author Paul Fullbright
  */
 public class NonreflectiveMethodDefinition extends MethodDefinition {
-    protected Vector argumentTypeNames;
+    protected Vector<String> argumentTypeNames;
 
     public NonreflectiveMethodDefinition() {
         super();
-        this.argumentTypeNames = new Vector(5);
+        this.argumentTypeNames = new Vector<>(5);
     }
 
     public void addArgument(String argumentType, String argumentName) {
@@ -37,9 +37,9 @@
         getArgumentTypes().addElement(argumentType);
     }
 
-    private void adjustArgumentTypeNames(Map typeNameMap) {
-        for (Iterator i = new Vector(getArgumentTypeNames()).iterator(); i.hasNext();) {
-            String argumentTypeName = (String)i.next();
+    private void adjustArgumentTypeNames(Map<String, Set<String>> typeNameMap) {
+        for (Iterator<String> i = new Vector<>(getArgumentTypeNames()).iterator(); i.hasNext();) {
+            String argumentTypeName = i.next();
             String adjustedArgumentTypeName = adjustTypeName(argumentTypeName, typeNameMap);
 
             if (!argumentTypeName.equals(adjustedArgumentTypeName)) {
@@ -49,7 +49,7 @@
     }
 
     @Override
-    protected void adjustTypeNames(Map typeNameMap) {
+    protected void adjustTypeNames(Map<String, Set<String>> typeNameMap) {
         super.adjustTypeNames(typeNameMap);
         adjustArgumentTypeNames(typeNameMap);
     }
@@ -70,12 +70,12 @@
     }
 
     @Override
-    protected Vector getArgumentTypeNames() {
+    protected Vector<String> getArgumentTypeNames() {
         return getArgumentTypes();
     }
 
     @Override
-    public Vector getArgumentTypes() {
+    public Vector<String> getArgumentTypes() {
         return this.argumentTypeNames;
     }
 
@@ -89,7 +89,7 @@
     protected void writeArguments(CodeGenerator generator) {
         boolean isFirst = true;
         for (int index = 0; index < getArgumentTypes().size(); ++index) {
-            String argument = (String)getArgumentTypes().elementAt(index);
+            String argument = getArgumentTypes().elementAt(index);
             if (isFirst) {
                 isFirst = false;
             } else {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/ReflectiveAttributeDefinition.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/ReflectiveAttributeDefinition.java
index 41d2338..5fe52e6 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/ReflectiveAttributeDefinition.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/ReflectiveAttributeDefinition.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
@@ -24,13 +24,13 @@
  * @author Paul Fullbright
  */
 public class ReflectiveAttributeDefinition extends AttributeDefinition {
-    protected Class type;
+    protected Class<?> type;
 
     public ReflectiveAttributeDefinition() {
         this.type = null;
     }
 
-    public Class getType() {
+    public Class<?> getType() {
         return type;
     }
 
@@ -45,7 +45,7 @@
         }
     }
 
-    public void setType(Class type) {
+    public void setType(Class<?> type) {
         this.type = type;
     }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/ReflectiveMethodDefinition.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/ReflectiveMethodDefinition.java
index c4a6b35..ec9c967 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/ReflectiveMethodDefinition.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/ReflectiveMethodDefinition.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,18 +26,18 @@
  * @author Paul Fullbright
  */
 public class ReflectiveMethodDefinition extends MethodDefinition {
-    protected Vector argumentTypes;
-    protected Class type;
+    protected Vector<Class<?>> argumentTypes;
+    protected Class<?> type;
 
     public ReflectiveMethodDefinition() {
         super();
-        this.argumentTypes = new Vector(5);
+        this.argumentTypes = new Vector<>(5);
         this.type = null;
     }
 
-    public void addArgument(Class argumentType, String argumentName) {
+    public void addArgument(Class<?> argumentType, String argumentName) {
         getArgumentNames().addElement(argumentName);
-        getArgumentTypes().addElement(argumentType);
+        argumentTypes.addElement(argumentType);
     }
 
     @Override
@@ -58,26 +58,26 @@
     }
 
     @Override
-    protected Vector getArgumentTypeNames() {
-        Vector argumentTypeNames = new Vector();
+    protected Vector<String> getArgumentTypeNames() {
+        Vector<String> argumentTypeNames = new Vector<>();
 
-        for (Iterator i = getArgumentTypes().iterator(); i.hasNext();) {
-            argumentTypeNames.add(((Class)i.next()).getName());
+        for (Iterator<Class<?>> i = argumentTypes.iterator(); i.hasNext();) {
+            argumentTypeNames.add(i.next().getName());
         }
 
         return argumentTypeNames;
     }
 
     @Override
-    public Vector getArgumentTypes() {
-        return this.argumentTypes;
+    public Vector<String> getArgumentTypes() {
+        return getArgumentTypeNames();
     }
 
     @Override
     protected void writeArguments(CodeGenerator generator) {
         boolean isFirst = true;
-        for (int index = 0; index < getArgumentTypes().size(); ++index) {
-            Class argument = (Class)getArgumentTypes().elementAt(index);
+        for (int index = 0; index < argumentTypes.size(); ++index) {
+            Class<?> argument = argumentTypes.elementAt(index);
             if (isFirst) {
                 isFirst = false;
             } else {
@@ -106,11 +106,11 @@
         }
     }
 
-    public Class getReturnTypeClass() {
+    public Class<?> getReturnTypeClass() {
         return type;
     }
 
-    public void setReturnTypeClass(Class type) {
+    public void setReturnTypeClass(Class<?> type) {
         this.type = type;
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DescriptorCompare.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DescriptorCompare.java
index ccd6fa8..5c46b3e 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DescriptorCompare.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DescriptorCompare.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
@@ -24,12 +24,12 @@
  * Use to sort vectors of strings.
  * Avoid using this class as sun.misc is not part of many VM's like Netscapes.
  */
-public class DescriptorCompare implements Comparator, Serializable {
+public class DescriptorCompare implements Comparator<ClassDescriptor>, Serializable {
 
     private static final long serialVersionUID = -2792350655245140468L;
 
     @Override
-    public int compare(Object arg1, Object arg2) {
-        return ((ClassDescriptor)arg1).getJavaClassName().compareTo(((ClassDescriptor)arg2).getJavaClassName());
+    public int compare(ClassDescriptor arg1, ClassDescriptor arg2) {
+        return arg1.getJavaClassName().compareTo(arg2.getJavaClassName());
     }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/Helper.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/Helper.java
index 1644ad9..27202af 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/Helper.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/Helper.java
@@ -32,6 +32,7 @@
 import java.io.Serializable;
 import java.io.StringWriter;
 import java.io.Writer;
+import java.lang.reflect.Array;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
@@ -42,6 +43,7 @@
 import java.security.PrivilegedActionException;
 import java.sql.Timestamp;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collection;
 import java.util.Date;
@@ -244,13 +246,13 @@
         }
     }
 
-    public static Vector addAllUniqueToVector(Vector objects, List objectsToAdd) {
+    public static <T> Vector<T> addAllUniqueToVector(Vector<T> objects, List<T> objectsToAdd) {
         if (objectsToAdd == null) {
             return objects;
         }
         int size = objectsToAdd.size();
         for (int index = 0; index < size; index++) {
-            Object element = objectsToAdd.get(index);
+            T element = objectsToAdd.get(index);
             if (!objects.contains(element)) {
                 objects.add(element);
             }
@@ -258,13 +260,13 @@
         return objects;
     }
 
-    public static List addAllUniqueToList(List objects, List objectsToAdd) {
+    public static <T> List<T> addAllUniqueToList(List<T> objects, List<T> objectsToAdd) {
         if (objectsToAdd == null) {
             return objects;
         }
         int size = objectsToAdd.size();
         for (int index = 0; index < size; index++) {
-            Object element = objectsToAdd.get(index);
+            T element = objectsToAdd.get(index);
             if (!objects.contains(element)) {
                 objects.add(element);
             }
@@ -354,9 +356,9 @@
     /**
       * Create a new Vector containing all of the map elements.
       */
-    public static Vector buildVectorFromMapElements(Map map) {
-        Vector vector = new Vector(map.size());
-        Iterator iterator = map.values().iterator();
+    public static <T> Vector<T> buildVectorFromMapElements(Map<?, T> map) {
+        Vector<T> vector = new Vector<>(map.size());
+        Iterator<T> iterator = map.values().iterator();
 
         while (iterator.hasNext()) {
             vector.addElement(iterator.next());
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CommitManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CommitManager.java
index c0910c1..fa636d9 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CommitManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CommitManager.java
@@ -479,16 +479,16 @@
      * stack size, and acts as a deadlock avoidance mechanism.
      */
     public void initializeCommitOrder() {
-        Vector descriptors = Helper.buildVectorFromMapElements(getSession().getDescriptors());
+        Vector<ClassDescriptor> descriptors = Helper.buildVectorFromMapElements(getSession().getDescriptors());
 
         // Must ensure uniqueness, some descriptor my be register twice for interfaces.
-        descriptors = Helper.addAllUniqueToVector(new Vector(descriptors.size()), descriptors);
-        Object[] descriptorsArray = new Object[descriptors.size()];
+        descriptors = Helper.addAllUniqueToVector(new Vector<>(descriptors.size()), descriptors);
+        ClassDescriptor[] descriptorsArray = new ClassDescriptor[descriptors.size()];
         for (int index = 0; index < descriptors.size(); index++) {
             descriptorsArray[index] = descriptors.elementAt(index);
         }
         Arrays.sort(descriptorsArray, new DescriptorCompare());
-        descriptors = new Vector(descriptors.size());
+        descriptors = new Vector<>(descriptors.size());
         for (int index = 0; index < descriptorsArray.length; index++) {
             descriptors.addElement(descriptorsArray[index]);
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/DirectToXMLTypeMappingHelper.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/DirectToXMLTypeMappingHelper.java
index 34a5cb7..63831ad 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/DirectToXMLTypeMappingHelper.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/DirectToXMLTypeMappingHelper.java
@@ -32,21 +32,22 @@
 
     private static DirectToXMLTypeMappingHelper singleton = null;
 
+    protected DirectToXMLTypeMappingHelper() {
+    }
+
     public static DirectToXMLTypeMappingHelper getInstance() {
 
         if (singleton == null) {
-            Class helperClass = null;
+            Class<? extends DirectToXMLTypeMappingHelper> helperClass = null;
 
             try {
-                helperClass = new PrivilegedClassForName<>("org.eclipse.persistence.sessions.factories.OracleDirectToXMLTypeMappingHelper").run();
+                helperClass = new PrivilegedClassForName<DirectToXMLTypeMappingHelper>("org.eclipse.persistence.sessions.factories.OracleDirectToXMLTypeMappingHelper").run();
             } catch (Throwable cnfe) {
                 helperClass = DirectToXMLTypeMappingHelper.class;
             }
             try {
-                singleton = (DirectToXMLTypeMappingHelper) new PrivilegedNewInstanceFromClass(helperClass).run();
-            } catch (IllegalAccessException e) {
-                throw new RuntimeException("Helper create failed: " + helperClass);
-            } catch (InstantiationException e) {
+                singleton = new PrivilegedNewInstanceFromClass<>(helperClass).run();
+            } catch (ReflectiveOperationException e) {
                 throw new RuntimeException("Helper create failed: " + helperClass);
             }
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/MissingDescriptorListener.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/MissingDescriptorListener.java
index a63ac32..d0b4446 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/MissingDescriptorListener.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/MissingDescriptorListener.java
@@ -42,9 +42,15 @@
     protected static final String XML_BINARY_MAPPING_CLASS = "org.eclipse.persistence.oxm.mappings.XMLBinaryDataMapping";
     protected static final String XML_BINARY_COLLECTION_MAPPING_CLASS = "org.eclipse.persistence.oxm.mappings.XMLBinaryDataCollectionMapping";
 
+    /**
+     * Default constructor.
+     */
+    public MissingDescriptorListener() {
+    }
+
     @Override
     public void missingDescriptor(SessionEvent event) {
-        String name = ((Class)event.getResult()).getName();
+        String name = ((Class<?>)event.getResult()).getName();
         DatabaseSession session = (DatabaseSession) ((AbstractSession) event.getSession()).getRootSession(null);
         Project project = session.getProject();
         String namespaceXPath = "";
@@ -64,7 +70,7 @@
 
         if (name.equals(EIS_DESCRIPTOR_CLASS) || name.equals(XML_INTERACTION_CLASS) || name.equals(EIS_LOGIN_CLASS)) {
             try {
-                Class javaClass = null;
+                Class<?> javaClass;
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try{
                         javaClass = AccessController.doPrivileged(new PrivilegedClassForName<>(XML_INTERACTION_CLASS));
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/NamespaceResolverWithPrefixes.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/NamespaceResolverWithPrefixes.java
index d4e0cfc..ccc8877 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/NamespaceResolverWithPrefixes.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/NamespaceResolverWithPrefixes.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 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
@@ -19,6 +19,13 @@
     protected String primaryPrefix = null;
     protected String secondaryPrefix = null;
 
+    /**
+     * Default constructor
+     */
+    public NamespaceResolverWithPrefixes() {
+        super();
+    }
+
     public void putPrimary(String ns1, String primaryNamespace) {
         this.primaryPrefix = ns1;
         put(ns1, primaryNamespace);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject.java
index e6e3f38..4b67faa 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject.java
@@ -452,7 +452,7 @@
                 AggregateCollectionMapping mapping = (AggregateCollectionMapping)object;
                 List<DatabaseField> sourceFields = mapping.getSourceKeyFields();
                 List<DatabaseField> targetFields = mapping.getTargetForeignKeyFields();
-                List associations = new ArrayList(sourceFields.size());
+                List<Association> associations = new ArrayList<>(sourceFields.size());
                 for (int index = 0; index < sourceFields.size(); index++) {
                     associations.add(new Association(targetFields.get(index), sourceFields.get(index)));
                 }
@@ -462,12 +462,13 @@
             @Override
             public void setAttributeValueInObject(Object object, Object value) {
                 AggregateCollectionMapping mapping = (AggregateCollectionMapping)object;
-                List associations = (List)value;
+                @SuppressWarnings({"unchecked"})
+                List<Association> associations = (List<Association>) value;
                 mapping.setSourceKeyFields(NonSynchronizedVector.newInstance(associations.size()));
                 mapping.setTargetForeignKeyFields(NonSynchronizedVector.newInstance(associations.size()));
-                Iterator iterator = associations.iterator();
+                Iterator<Association> iterator = associations.iterator();
                 while (iterator.hasNext()) {
-                    Association association = (Association)iterator.next();
+                    Association association = iterator.next();
                     mapping.getSourceKeyFields().add((DatabaseField)association.getValue());
                     mapping.getTargetForeignKeyFields().add((DatabaseField)association.getKey());
                 }
@@ -579,8 +580,8 @@
                  * changed getAggregateToSourceFieldAssociations to hold String->DatabaseField associations
                  */
                 AggregateObjectMapping mapping = (AggregateObjectMapping)object;
-                Vector<Association> associations = mapping.getAggregateToSourceFieldAssociations();
-                Vector translations = new Vector(associations.size());
+                List<Association> associations = mapping.getAggregateToSourceFieldAssociations();
+                Vector<FieldTranslation> translations = new Vector<>(associations.size());
                 for (int index = 0; index < associations.size(); index++) {
                     Association association = associations.get(index);
                     FieldTranslation translation = new FieldTranslation();
@@ -594,9 +595,10 @@
             @Override
             public void setAttributeValueInObject(Object object, Object value) {
                 AggregateObjectMapping mapping = (AggregateObjectMapping)object;
-                Vector associations = (Vector)value;
+                @SuppressWarnings({"unchecked"})
+                Vector<Association> associations = (Vector<Association>)value;
                 for (int index = 0; index < associations.size(); index++) {
-                    Association association = (Association)associations.get(index);
+                    Association association = associations.get(index);
                     association.setKey(((DatabaseField)association.getKey()).getQualifiedName());
                 }
 
@@ -728,8 +730,7 @@
         platformMapping.setGetMethodName("getDatasourcePlatform");
         platformMapping.setSetMethodName("usePlatform");
         platformMapping.setConverter(new Converter() {
-            protected DatabaseMapping mapping;
-            private Map platformList;
+            private Map<String, String> platformList;
             private String oldPrefix = "oracle.toplink.";
             private String newPrefix = "org.eclipse.persistence.";
             private String oldOxmPrefix = oldPrefix + "ox.";
@@ -756,17 +757,17 @@
                     }
                 }
                 // convert deprecated platforms to new platforms
-                Object result = platformList.get(fieldValue);
+                String result = platformList.get(fieldValue);
                 if (result != null) {
                     fieldValue = result;
                 }
 
                 Object attributeValue;
-                Class attributeClass = session.getDatasourcePlatform().convertObject(fieldValue, ClassConstants.CLASS);
+                Class<?> attributeClass = session.getDatasourcePlatform().convertObject(fieldValue, ClassConstants.CLASS);
                 try {
                     if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                         try {
-                            attributeValue = AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(attributeClass));
+                            attributeValue = AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<>(attributeClass));
                         }
                         catch (PrivilegedActionException exception) {
                             throw ConversionException.couldNotBeConverted(fieldValue, attributeClass, exception.getException());
@@ -790,7 +791,7 @@
 
             @Override
             public void initialize(DatabaseMapping mapping, Session session) {
-                this.platformList = new HashMap();
+                this.platformList = new HashMap<>();
                 this.platformList.put("org.eclipse.persistence.internal.databaseaccess.AccessPlatform", "org.eclipse.persistence.platform.database.AccessPlatform");
                 this.platformList.put("org.eclipse.persistence.internal.databaseaccess.AttunityPlatform", "org.eclipse.persistence.platform.database.AttunityPlatform");
                 this.platformList.put("org.eclipse.persistence.internal.databaseaccess.CloudscapePlatform", "org.eclipse.persistence.platform.database.CloudscapePlatform");
@@ -808,10 +809,9 @@
                 this.platformList.put("org.eclipse.persistence.oraclespecific.Oracle8Platform", "org.eclipse.persistence.platform.database.oracle.Oracle8Platform");
                 this.platformList.put("org.eclipse.persistence.oraclespecific.Oracle9Platform", "org.eclipse.persistence.platform.database.oracle.Oracle9Platform");
                 this.platformList.put("org.eclipse.persistence.platform.database.SQLAnyWherePlatform", "org.eclipse.persistence.platform.database.SQLAnywherePlatform");
-                this.mapping = mapping;
                 // CR#... Mapping must also have the field classification.
-                if (this.mapping.isDirectToFieldMapping()) {
-                    AbstractDirectMapping directMapping = (AbstractDirectMapping)this.mapping;
+                if (mapping.isDirectToFieldMapping()) {
+                    AbstractDirectMapping directMapping = (AbstractDirectMapping) mapping;
 
                     // Allow user to specify field type to override computed value. (i.e. blob, nchar)
                     if (directMapping.getFieldClassification() == null) {
@@ -1261,8 +1261,8 @@
         operatorConverter.addConversionValue("ascending", ExpressionOperator.getOperator(ExpressionOperator.Ascending));
         operatorConverter.addConversionValue("descending", ExpressionOperator.getOperator(ExpressionOperator.Descending));
         // These are platform specific so not on operator.
-        operatorConverter.addConversionValue("upper", new ExpressionOperator(ExpressionOperator.ToUpperCase, NonSynchronizedVector.newInstance(0)));
-        operatorConverter.addConversionValue("lower", new ExpressionOperator(ExpressionOperator.ToLowerCase, NonSynchronizedVector.newInstance(0)));
+        operatorConverter.addConversionValue("upper", new ExpressionOperator(ExpressionOperator.ToUpperCase, new ArrayList<>(0)));
+        operatorConverter.addConversionValue("lower", new ExpressionOperator(ExpressionOperator.ToLowerCase, new ArrayList<>(0)));
         // Aggregate functions
         operatorConverter.addConversionValue("count", ExpressionOperator.getOperator(ExpressionOperator.Count));
         operatorConverter.addConversionValue("sum", ExpressionOperator.getOperator(ExpressionOperator.Sum));
@@ -1270,8 +1270,8 @@
         operatorConverter.addConversionValue("maximum", ExpressionOperator.getOperator(ExpressionOperator.Maximum));
         operatorConverter.addConversionValue("minimum", ExpressionOperator.getOperator(ExpressionOperator.Minimum));
         // standardDeviation is platform specific.
-        operatorConverter.addConversionValue("standardDeviation", new ExpressionOperator(ExpressionOperator.StandardDeviation, NonSynchronizedVector.newInstance(0)));
-        operatorConverter.addConversionValue("variance", new ExpressionOperator(ExpressionOperator.Variance, NonSynchronizedVector.newInstance(0)));
+        operatorConverter.addConversionValue("standardDeviation", new ExpressionOperator(ExpressionOperator.StandardDeviation, new ArrayList<>(0)));
+        operatorConverter.addConversionValue("variance", new ExpressionOperator(ExpressionOperator.Variance, new ArrayList<>(0)));
         operatorConverter.addConversionValue("distinct", ExpressionOperator.getOperator(ExpressionOperator.Distinct));
         operatorMapping.setConverter(operatorConverter);
         operatorMapping.setXPath("@function");
@@ -1350,7 +1350,7 @@
                 List<String> arguments = query.getArguments();
                 List<String> types = query.getArgumentTypeNames();
                 List<Object> values = query.getArgumentValues();
-                Vector queryArguments = new Vector(arguments.size());
+                Vector<QueryArgument> queryArguments = new Vector<>(arguments.size());
                 for (int index = 0; index < arguments.size(); index++) {
                     QueryArgument queryArgument = new QueryArgument();
                     queryArgument.setKey(arguments.get(index));
@@ -1372,12 +1372,13 @@
             @Override
             public void setAttributeValueInObject(Object object, Object value) {
                 DatabaseQuery query = (DatabaseQuery)object;
-                List queryArguments = (List)value;
+                @SuppressWarnings({"unchecked"})
+                List<QueryArgument> queryArguments = (List<QueryArgument>)value;
                 List<String> arguments = new ArrayList<>(queryArguments.size());
                 List<Class> types = new ArrayList<>(queryArguments.size());
                 List<Object> values = new ArrayList<>(queryArguments.size());
                 for (int index = 0; index < queryArguments.size(); index++) {
-                    QueryArgument queryArgument = (QueryArgument)queryArguments.get(index);
+                    QueryArgument queryArgument = queryArguments.get(index);
                     arguments.add((String)queryArgument.getKey());
                     if (queryArgument.getValue() != null) {
                         values.add(queryArgument.getValue());
@@ -2045,9 +2046,9 @@
             @Override
             public Object getAttributeValueFromObject(Object object) {
                 DatabaseMapping mapping = (DatabaseMapping)object;
-                Vector propertyAssociations = new NonSynchronizedVector();
-                for (Iterator i = mapping.getProperties().entrySet().iterator(); i.hasNext();) {
-                    Map.Entry me = (Map.Entry)i.next();
+                List<PropertyAssociation> propertyAssociations = new ArrayList<>();
+                for (Iterator<Map.Entry<?, ?>> i = mapping.getProperties().entrySet().iterator(); i.hasNext();) {
+                    Map.Entry<?, ?> me = i.next();
                     PropertyAssociation propertyAssociation = new PropertyAssociation();
                     propertyAssociation.setKey(me.getKey());
                     propertyAssociation.setValue(me.getValue());
@@ -2059,9 +2060,10 @@
             @Override
             public void setAttributeValueInObject(Object object, Object value) {
                 DatabaseMapping mapping = (DatabaseMapping)object;
-                Vector propertyAssociations = (Vector)value;
+                @SuppressWarnings({"unchecked"})
+                List<PropertyAssociation> propertyAssociations = (List<PropertyAssociation>) value;
                 for (int i = 0; i < propertyAssociations.size(); i++) {
-                    PropertyAssociation propertyAssociation = (PropertyAssociation)propertyAssociations.get(i);
+                    PropertyAssociation propertyAssociation = propertyAssociations.get(i);
                     mapping.getProperties().put(propertyAssociation.getKey(), propertyAssociation.getValue());
                 }
             }
@@ -2423,9 +2425,9 @@
             @Override
             public Object getAttributeValueFromObject(Object object) {
                 ClassDescriptor desc = (ClassDescriptor)object;
-                Vector propertyAssociations = new NonSynchronizedVector();
-                for (Iterator i = desc.getProperties().entrySet().iterator(); i.hasNext();) {
-                    Map.Entry me = (Map.Entry)i.next();
+                List<PropertyAssociation> propertyAssociations = new ArrayList<>();
+                for (Iterator<Map.Entry<?, ?>> i = desc.getProperties().entrySet().iterator(); i.hasNext();) {
+                    Map.Entry<?, ?> me = i.next();
                     PropertyAssociation propertyAssociation = new PropertyAssociation();
                     propertyAssociation.setKey(me.getKey());
                     propertyAssociation.setValue(me.getValue());
@@ -2437,9 +2439,10 @@
             @Override
             public void setAttributeValueInObject(Object object, Object value) {
                 ClassDescriptor desc = (ClassDescriptor)object;
-                Vector propertyAssociations = (Vector)value;
+                @SuppressWarnings({"unchecked"})
+                List<PropertyAssociation> propertyAssociations = (List<PropertyAssociation>) value;
                 for (int i = 0; i < propertyAssociations.size(); i++) {
-                    PropertyAssociation propertyAssociation = (PropertyAssociation)propertyAssociations.get(i);
+                    PropertyAssociation propertyAssociation = propertyAssociations.get(i);
                     desc.getProperties().put(propertyAssociation.getKey(), propertyAssociation.getValue());
                 }
             }
@@ -2469,9 +2472,9 @@
             @Override
             public Object getAttributeValueFromObject(Object object) {
                 ClassDescriptor mapping = (ClassDescriptor)object;
-                Vector associations = mapping.getMultipleTablePrimaryKeyAssociations();
+                List<Association> associations = mapping.getMultipleTablePrimaryKeyAssociations();
                 for (int index = 0; index < associations.size(); index++) {
-                    Association association = (Association)associations.get(index);
+                    Association association = associations.get(index);
                     association.setKey(new DatabaseField((String)association.getKey()));
                     association.setValue(new DatabaseField((String)association.getValue()));
                 }
@@ -2481,9 +2484,10 @@
             @Override
             public void setAttributeValueInObject(Object object, Object value) {
                 ClassDescriptor mapping = (ClassDescriptor)object;
-                Vector associations = (Vector)value;
+                @SuppressWarnings({"unchecked"})
+                List<Association> associations = (List<Association>) value;
                 for (int index = 0; index < associations.size(); index++) {
-                    Association association = (Association)associations.get(index);
+                    Association association = associations.get(index);
                     association.setKey(((DatabaseField)association.getKey()).getQualifiedName());
                     association.setValue(((DatabaseField)association.getValue()).getQualifiedName());
                 }
@@ -2502,9 +2506,9 @@
             @Override
             public Object getAttributeValueFromObject(Object object) {
                 ClassDescriptor mapping = (ClassDescriptor)object;
-                Vector associations = mapping.getMultipleTableForeignKeyAssociations();
+                List<Association> associations = mapping.getMultipleTableForeignKeyAssociations();
                 for (int index = 0; index < associations.size(); index++) {
-                    Association association = (Association)associations.get(index);
+                    Association association = associations.get(index);
                     association.setKey(new DatabaseField((String)association.getKey()));
                     association.setValue(new DatabaseField((String)association.getValue()));
                 }
@@ -2514,9 +2518,10 @@
             @Override
             public void setAttributeValueInObject(Object object, Object value) {
                 ClassDescriptor mapping = (ClassDescriptor)object;
-                Vector associations = (Vector)value;
+                @SuppressWarnings({"unchecked"})
+                List<Association> associations = (List<Association>) value;
                 for (int index = 0; index < associations.size(); index++) {
-                    Association association = (Association)associations.get(index);
+                    Association association = associations.get(index);
                     association.setKey(((DatabaseField)association.getKey()).getQualifiedName());
                     association.setValue(((DatabaseField)association.getValue()).getQualifiedName());
                 }
@@ -2610,7 +2615,7 @@
             public Object getAttributeValueFromObject(Object object) {
                 List<DatabaseField> sourceFields = ((DirectCollectionMapping)object).getSourceKeyFields();
                 List<DatabaseField> referenceFields = ((DirectCollectionMapping)object).getReferenceKeyFields();
-                List associations = new ArrayList(sourceFields.size());
+                List<Association> associations = new ArrayList<>(sourceFields.size());
                 for (int index = 0; index < sourceFields.size(); index++) {
                     associations.add(new Association(referenceFields.get(index), sourceFields.get(index)));
                 }
@@ -2620,12 +2625,13 @@
             @Override
             public void setAttributeValueInObject(Object object, Object value) {
                 DirectCollectionMapping mapping = (DirectCollectionMapping)object;
-                List associations = (List)value;
+                @SuppressWarnings({"unchecked"})
+                List<Association> associations = (List<Association>)value;
                 mapping.setSourceKeyFields(NonSynchronizedVector.newInstance(associations.size()));
                 mapping.setReferenceKeyFields(NonSynchronizedVector.newInstance(associations.size()));
-                Iterator iterator = associations.iterator();
+                Iterator<Association> iterator = associations.iterator();
                 while (iterator.hasNext()) {
-                    Association association = (Association)iterator.next();
+                    Association association = iterator.next();
                     mapping.getSourceKeyFields().add((DatabaseField)association.getValue());
                     mapping.getReferenceKeyFields().add((DatabaseField)association.getKey());
                 }
@@ -3221,7 +3227,7 @@
             public Object getAttributeValueFromObject(Object object) {
                 List<DatabaseField> sourceFields = ((ManyToManyMapping)object).getSourceKeyFields();
                 List<DatabaseField> relationFields = ((ManyToManyMapping)object).getSourceRelationKeyFields();
-                List associations = new ArrayList(sourceFields.size());
+                List<Association> associations = new ArrayList<>(sourceFields.size());
                 for (int index = 0; index < sourceFields.size(); index++) {
                     associations.add(new Association(relationFields.get(index), sourceFields.get(index)));
                 }
@@ -3231,12 +3237,13 @@
             @Override
             public void setAttributeValueInObject(Object object, Object value) {
                 ManyToManyMapping mapping = (ManyToManyMapping)object;
-                List associations = (List)value;
+                @SuppressWarnings({"unchecked"})
+                List<Association> associations = (List<Association>)value;
                 mapping.setSourceKeyFields(NonSynchronizedVector.newInstance(associations.size()));
                 mapping.setSourceRelationKeyFields(NonSynchronizedVector.newInstance(associations.size()));
-                Iterator iterator = associations.iterator();
+                Iterator<Association> iterator = associations.iterator();
                 while (iterator.hasNext()) {
-                    Association association = (Association)iterator.next();
+                    Association association = iterator.next();
                     mapping.getSourceKeyFields().add((DatabaseField)association.getValue());
                     mapping.getSourceRelationKeyFields().add((DatabaseField)association.getKey());
                 }
@@ -3254,7 +3261,7 @@
             public Object getAttributeValueFromObject(Object object) {
                 List<DatabaseField> targetFields = ((ManyToManyMapping)object).getTargetKeyFields();
                 List<DatabaseField> relationFields = ((ManyToManyMapping)object).getTargetRelationKeyFields();
-                List associations = new ArrayList(targetFields.size());
+                List<Association> associations = new ArrayList<>(targetFields.size());
                 for (int index = 0; index < targetFields.size(); index++) {
                     associations.add(new Association(relationFields.get(index), targetFields.get(index)));
                 }
@@ -3264,12 +3271,13 @@
             @Override
             public void setAttributeValueInObject(Object object, Object value) {
                 ManyToManyMapping mapping = (ManyToManyMapping)object;
-                List associations = (List)value;
+                @SuppressWarnings({"unchecked"})
+                List<Association> associations = (List<Association>)value;
                 mapping.setTargetKeyFields(NonSynchronizedVector.newInstance(associations.size()));
                 mapping.setTargetRelationKeyFields(NonSynchronizedVector.newInstance(associations.size()));
-                Iterator iterator = associations.iterator();
+                Iterator<Association> iterator = associations.iterator();
                 while (iterator.hasNext()) {
-                    Association association = (Association)iterator.next();
+                    Association association = iterator.next();
                     mapping.getTargetKeyFields().add((DatabaseField)association.getValue());
                     mapping.getTargetRelationKeyFields().add((DatabaseField)association.getKey());
                 }
@@ -3507,7 +3515,7 @@
             public Object getAttributeValueFromObject(Object object) {
                 List<DatabaseField> sourceFields = ((OneToManyMapping)object).getSourceKeyFields();
                 List<DatabaseField> targetFields = ((OneToManyMapping)object).getTargetForeignKeyFields();
-                List associations = new ArrayList(sourceFields.size());
+                List<Association> associations = new ArrayList<>(sourceFields.size());
                 for (int index = 0; index < sourceFields.size(); index++) {
                     associations.add(new Association(targetFields.get(index), sourceFields.get(index)));
                 }
@@ -3517,12 +3525,13 @@
             @Override
             public void setAttributeValueInObject(Object object, Object value) {
                 OneToManyMapping mapping = (OneToManyMapping)object;
-                List associations = (List)value;
+                @SuppressWarnings({"unchecked"})
+                List<Association> associations = (List<Association>)value;
                 mapping.setSourceKeyFields(NonSynchronizedVector.newInstance(associations.size()));
                 mapping.setTargetForeignKeyFields(NonSynchronizedVector.newInstance(associations.size()));
-                Iterator iterator = associations.iterator();
+                Iterator<Association> iterator = associations.iterator();
                 while (iterator.hasNext()) {
-                    Association association = (Association)iterator.next();
+                    Association association = iterator.next();
                     mapping.getSourceKeyFields().add((DatabaseField)association.getValue());
                     mapping.getTargetForeignKeyFields().add((DatabaseField)association.getKey());
                 }
@@ -3606,7 +3615,7 @@
             @Override
             public Object getAttributeValueFromObject(Object object) {
                 Map<DatabaseField, DatabaseField> sourceToTargetKeyFields = ((OneToOneMapping)object).getSourceToTargetKeyFields();
-                List associations = new ArrayList(sourceToTargetKeyFields.size());
+                List<Association> associations = new ArrayList<>(sourceToTargetKeyFields.size());
                 Iterator<Map.Entry<DatabaseField, DatabaseField>> iterator = sourceToTargetKeyFields.entrySet().iterator();
                 while (iterator.hasNext()) {
                     Map.Entry<DatabaseField, DatabaseField> entry = iterator.next();
@@ -3618,12 +3627,13 @@
             @Override
             public void setAttributeValueInObject(Object object, Object value) {
                 OneToOneMapping mapping = (OneToOneMapping)object;
-                List associations = (List)value;
-                mapping.setSourceToTargetKeyFields(new HashMap(associations.size() + 1));
-                mapping.setTargetToSourceKeyFields(new HashMap(associations.size() + 1));
-                Iterator iterator = associations.iterator();
+                @SuppressWarnings({"unchecked"})
+                List<Association> associations = (List<Association>)value;
+                mapping.setSourceToTargetKeyFields(new HashMap<>(associations.size() + 1));
+                mapping.setTargetToSourceKeyFields(new HashMap<>(associations.size() + 1));
+                Iterator<Association> iterator = associations.iterator();
                 while (iterator.hasNext()) {
-                    Association association = (Association)iterator.next();
+                    Association association = iterator.next();
                     mapping.getSourceToTargetKeyFields().put((DatabaseField)association.getKey(), (DatabaseField)association.getValue());
                     mapping.getTargetToSourceKeyFields().put((DatabaseField)association.getValue(), (DatabaseField)association.getKey());
                 }
@@ -4555,7 +4565,7 @@
         return descriptor;
     }
 
-    protected ClassDescriptor buildTypesafeEnumConverterDescriptor(Class jaxbTypesafeEnumConverter) {
+    protected ClassDescriptor buildTypesafeEnumConverterDescriptor(Class<?> jaxbTypesafeEnumConverter) {
         XMLDescriptor descriptor = new XMLDescriptor();
         descriptor.setJavaClass(jaxbTypesafeEnumConverter);
 
@@ -4670,10 +4680,10 @@
             @Override
             public Object getAttributeValueFromObject(Object object) {
                 VariableOneToOneMapping mapping = (VariableOneToOneMapping)object;
-                Vector associations = mapping.getSourceToTargetQueryKeyFieldAssociations();
-                Vector queryKeyReferences = new Vector(associations.size());
+                List<Association> associations = mapping.getSourceToTargetQueryKeyFieldAssociations();
+                Vector<QueryKeyReference> queryKeyReferences = new Vector<>(associations.size());
                 for (int index = 0; index < associations.size(); index++) {
-                    Association association = (Association)associations.get(index);
+                    Association association = associations.get(index);
                     QueryKeyReference reference = new QueryKeyReference();
                     reference.setKey(new DatabaseField((String)association.getKey()));
                     reference.setValue(association.getValue());
@@ -4685,9 +4695,10 @@
             @Override
             public void setAttributeValueInObject(Object object, Object value) {
                 VariableOneToOneMapping mapping = (VariableOneToOneMapping)object;
-                Vector associations = (Vector)value;
+                @SuppressWarnings({"unchecked"})
+                Vector<Association> associations = (Vector<Association>)value;
                 for (int index = 0; index < associations.size(); index++) {
-                    Association association = (Association)associations.get(index);
+                    Association association = associations.get(index);
                     association.setKey(((DatabaseField)association.getKey()).getQualifiedName());
                 }
                 mapping.setSourceToTargetQueryKeyFieldAssociations(associations);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject_11_1_1.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject_11_1_1.java
index 480165f..e6f2396 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject_11_1_1.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject_11_1_1.java
@@ -355,9 +355,9 @@
                 @Override
                 public Object getAttributeValueFromObject(Object object) {
                     ClassDescriptor descriptor = (ClassDescriptor) object;
-                    Vector associations = descriptor.getMultipleTableForeignKeyAssociations();
+                    List<Association> associations = descriptor.getMultipleTableForeignKeyAssociations();
                     for (int index = 0; index < associations.size(); index++) {
-                        Association association = (Association) associations.get(index);
+                        Association association = associations.get(index);
                         String targetPrimaryKeyFieldName = (String) association.getKey();
                         association.setKey(new DatabaseField((String) association.getValue()));
                         association.setValue(new DatabaseField(targetPrimaryKeyFieldName));
@@ -367,9 +367,9 @@
                 @Override
                 public void setAttributeValueInObject(Object object, Object value) {
                     ClassDescriptor descriptor = (ClassDescriptor) object;
-                    Vector associations = (Vector) value;
+                    List<Association> associations = (List<Association>) value;
                     for (int index = 0; index < associations.size(); index++) {
-                        Association association = (Association) associations.get(index);
+                        Association association = associations.get(index);
                         association.setKey(((DatabaseField) association.getKey()).getQualifiedName());
                         association.setValue(((DatabaseField) association.getValue()).getQualifiedName());
                     }
@@ -616,11 +616,11 @@
         sourceToTargetKeyFieldAssociationsMapping.setAttributeAccessor(new AttributeAccessor() {
                 @Override
                 public Object getAttributeValueFromObject(Object object) {
-                    Map sourceToTargetKeyFields = ((XMLObjectReferenceMapping) object).getSourceToTargetKeyFieldAssociations();
-                    List associations = new ArrayList(sourceToTargetKeyFields.size());
-                    Iterator iterator = sourceToTargetKeyFields.entrySet().iterator();
+                    Map<XMLField, XMLField> sourceToTargetKeyFields = ((XMLObjectReferenceMapping) object).getSourceToTargetKeyFieldAssociations();
+                    List<Association> associations = new ArrayList<>(sourceToTargetKeyFields.size());
+                    Iterator<Map.Entry<XMLField, XMLField>> iterator = sourceToTargetKeyFields.entrySet().iterator();
                     while (iterator.hasNext()) {
-                        Map.Entry entry = (Map.Entry)iterator.next();
+                        Map.Entry<XMLField, XMLField> entry = iterator.next();
                         associations.add(new Association(entry.getKey(), entry.getValue()));
                     }
                     return associations;
@@ -629,11 +629,11 @@
                 @Override
                 public void setAttributeValueInObject(Object object, Object value) {
                     XMLObjectReferenceMapping mapping = (XMLObjectReferenceMapping) object;
-                    List associations = (List)value;
-                    mapping.setSourceToTargetKeyFieldAssociations(new HashMap(associations.size() + 1));
-                    Iterator iterator = associations.iterator();
+                    List<Association> associations = (List<Association>)value;
+                    mapping.setSourceToTargetKeyFieldAssociations(new HashMap<>(associations.size() + 1));
+                    Iterator<Association> iterator = associations.iterator();
                     while (iterator.hasNext()) {
-                        Association association = (Association)iterator.next();
+                        Association association = iterator.next();
                         mapping.getSourceToTargetKeyFieldAssociations().put(association.getKey(), association.getValue());
                     }
                 }
@@ -744,10 +744,10 @@
      *           be nested inner classes of ObjectPersistenceRuntimeXMLProject_11_1_1
      *           so that they don't 'leak' out into the runtime
      */
-    class StoredProcedureArgument {
+    static class StoredProcedureArgument {
           String argumentName;
           String argumentFieldName;
-          Class argumentType;
+          Class<?> argumentType;
           String argumentTypeName;
           int argumentSQLType = NULL_SQL_TYPE;
           String argumentSqlTypeName;
@@ -811,7 +811,7 @@
         }
     }
 
-    class StoredProcedureInOutArgument extends StoredProcedureArgument {
+    static class StoredProcedureInOutArgument extends StoredProcedureArgument {
           String outputArgumentName;
           StoredProcedureInOutArgument() {
               super();
@@ -825,7 +825,7 @@
           }
     }
 
-    class StoredProcedureOutArgument extends StoredProcedureArgument {
+    static class StoredProcedureOutArgument extends StoredProcedureArgument {
         StoredProcedureOutArgument() {
             super();
         }
@@ -838,7 +838,7 @@
         }
     }
 
-    class StoredProcedureOutCursorArgument extends StoredProcedureOutArgument {
+    static class StoredProcedureOutCursorArgument extends StoredProcedureOutArgument {
         StoredProcedureOutCursorArgument() {
             super();
         }
@@ -860,28 +860,26 @@
 
     // Made static for performance reasons.
     static class StoredProcedureArgumentInstantiationPolicy extends InstantiationPolicy {
-        ObjectPersistenceRuntimeXMLProject_11_1_1 outer;
         StoredProcedureArgumentType argType;
-        StoredProcedureArgumentInstantiationPolicy(
-            ObjectPersistenceRuntimeXMLProject_11_1_1 outer, StoredProcedureArgumentType argType) {
-            this.outer = outer;
+        StoredProcedureArgumentInstantiationPolicy(StoredProcedureArgumentType argType) {
             this.argType = argType;
         }
+
         @Override
         public Object buildNewInstance() throws DescriptorException {
             Object arg = null;
             switch (argType) {
                 case STORED_PROCEDURE_ARG:
-                    arg = outer.new StoredProcedureArgument();
+                    arg = new StoredProcedureArgument();
                     break;
                 case STORED_PROCEDURE_INOUT_ARG:
-                    arg = outer.new StoredProcedureInOutArgument();
+                    arg = new StoredProcedureInOutArgument();
                     break;
                 case STORED_PROCEDURE_OUT_ARG:
-                    arg = outer.new StoredProcedureOutArgument();
+                    arg = new StoredProcedureOutArgument();
                     break;
                 case STORED_PROCEDURE_OUTCURSOR_ARG:
-                    arg = outer.new StoredProcedureOutCursorArgument();
+                    arg = new StoredProcedureOutCursorArgument();
                     break;
             }
             return arg;
@@ -893,8 +891,7 @@
         XMLDescriptor descriptor = new XMLDescriptor();
         descriptor.setJavaClass(StoredProcedureArgument.class);
         // need policy 'cause TreeBuilder cannot use default constructor
-        descriptor.setInstantiationPolicy(new StoredProcedureArgumentInstantiationPolicy(this,
-            StoredProcedureArgumentType.STORED_PROCEDURE_ARG));
+        descriptor.setInstantiationPolicy(new StoredProcedureArgumentInstantiationPolicy(StoredProcedureArgumentType.STORED_PROCEDURE_ARG));
         descriptor.descriptorIsAggregate();
 
         descriptor.setDefaultRootElement("argument");
@@ -953,8 +950,7 @@
 
         XMLDescriptor descriptor = new XMLDescriptor();
         descriptor.setJavaClass(StoredProcedureInOutArgument.class);
-        descriptor.setInstantiationPolicy(new StoredProcedureArgumentInstantiationPolicy(this,
-            StoredProcedureArgumentType.STORED_PROCEDURE_INOUT_ARG));
+        descriptor.setInstantiationPolicy(new StoredProcedureArgumentInstantiationPolicy(StoredProcedureArgumentType.STORED_PROCEDURE_INOUT_ARG));
         descriptor.getInheritancePolicy().setParentClass(StoredProcedureArgument.class);
 
         //used in case the in databasefield is named different than the out databasefield
@@ -970,8 +966,7 @@
 
         XMLDescriptor descriptor = new XMLDescriptor();
         descriptor.setJavaClass(StoredProcedureOutArgument.class);
-        descriptor.setInstantiationPolicy(new StoredProcedureArgumentInstantiationPolicy(this,
-            StoredProcedureArgumentType.STORED_PROCEDURE_OUT_ARG));
+        descriptor.setInstantiationPolicy(new StoredProcedureArgumentInstantiationPolicy(StoredProcedureArgumentType.STORED_PROCEDURE_OUT_ARG));
         descriptor.getInheritancePolicy().setParentClass(StoredProcedureArgument.class);
 
         return descriptor;
@@ -981,14 +976,13 @@
 
         XMLDescriptor descriptor = new XMLDescriptor();
         descriptor.setJavaClass(StoredProcedureOutCursorArgument.class);
-        descriptor.setInstantiationPolicy(new StoredProcedureArgumentInstantiationPolicy(this,
-            StoredProcedureArgumentType.STORED_PROCEDURE_OUTCURSOR_ARG));
+        descriptor.setInstantiationPolicy(new StoredProcedureArgumentInstantiationPolicy(StoredProcedureArgumentType.STORED_PROCEDURE_OUTCURSOR_ARG));
         descriptor.getInheritancePolicy().setParentClass(StoredProcedureArgument.class);
 
         return descriptor;
     }
 
-    class StoredProcedureArgumentsAccessor extends AttributeAccessor {
+    static class StoredProcedureArgumentsAccessor extends AttributeAccessor {
         StoredProcedureArgumentsAccessor() {
             super();
         }
@@ -996,11 +990,11 @@
         public Object getAttributeValueFromObject(Object anObject) throws DescriptorException {
             StoredProcedureCall spc = (StoredProcedureCall)anObject;
             List<Integer> parameterTypes = spc.getParameterTypes();
-            List parameters = spc.getParameters();
+            List<?> parameters = spc.getParameters();
             List<String> procedureArgumentNames = spc.getProcedureArgumentNames();
-            List storedProcedureArguments = new Vector();
+            List<StoredProcedureArgument> storedProcedureArguments = new Vector<>();
             for (int i = spc.getFirstParameterIndexForCallString(); i < parameterTypes.size(); i++) {
-                StoredProcedureArgument spa = null;
+                StoredProcedureArgument spa;
                 Integer direction = parameterTypes.get(i);
                 Object argument = parameters.get(i);
                 String argumentName = procedureArgumentNames.get(i);
@@ -1050,9 +1044,9 @@
         public void setAttributeValueInObject(Object domainObject, Object attributeValue) throws DescriptorException {
             StoredProcedureCall spc = (StoredProcedureCall)domainObject;
             // vector of parameters/arguments to be added the call
-            Vector procedureArguments = (Vector)attributeValue;
+            List<StoredProcedureArgument> procedureArguments = (Vector<StoredProcedureArgument>)attributeValue;
             for (int i = 0; i < procedureArguments.size(); i++) {
-                StoredProcedureArgument spa = (StoredProcedureArgument)procedureArguments.get(i);
+                StoredProcedureArgument spa = procedureArguments.get(i);
                 Integer direction = spa.getDirection();
                 DatabaseField dbField = spa.getDatabaseField();
                 spc.getProcedureArgumentNames().add(spa.argumentName);
@@ -1122,7 +1116,7 @@
         return descriptor;
     }
 
-    class StoredFunctionResultAccessor extends AttributeAccessor {
+    static class StoredFunctionResultAccessor extends AttributeAccessor {
         StoredFunctionResultAccessor() {
             super();
         }
@@ -1423,8 +1417,8 @@
              // Convert the collection of Strings to an array of Object values (round-trip)
              if(value instanceof Collection) {
                  int i = 0;
-                 Object[] parameters = new Object[((Collection)value).size()];
-                 for(Iterator anIterator = ((Collection)value).iterator(); anIterator.hasNext();) {
+                 Object[] parameters = new Object[((Collection<?>)value).size()];
+                 for(Iterator<?> anIterator = ((Collection<?>)value).iterator(); anIterator.hasNext();) {
                         // Lookup the object type via the predefined parameterTypes array and convert based on that type
                         parameters[i] = XMLConversionManager.getDefaultXMLManager().convertObject(//
                                 anIterator.next(), ((IsSetNullPolicy)object).getIsSetParameterTypes()[i++]);
@@ -1458,19 +1452,20 @@
          }
 
          @Override
+         @SuppressWarnings({"unchecked", "rawtypes"})
          public void setAttributeValueInObject(Object object, Object value) throws DescriptorException {
              try {
                  // Get the Class of each entry in the collection
                  if(value instanceof Collection) {
-                     Class[] parameterTypes = new Class[((Collection)value).size()];
+                     Class<?>[] parameterTypes = new Class[((Collection<?>)value).size()];
                      int i = 0;
-                     for(Iterator anIterator = ((Collection)value).iterator(); anIterator.hasNext();) {
-                         parameterTypes[i++] = Class.forName((String)anIterator.next());
+                     for(Iterator<String> anIterator = ((Collection<String>)value).iterator(); anIterator.hasNext();) {
+                         parameterTypes[i++] = Class.forName(anIterator.next());
                      }
                      ((IsSetNullPolicy)object).setIsSetParameterTypes(parameterTypes);
                  } else {
                      // cast to class array
-                     ((IsSetNullPolicy)object).setIsSetParameterTypes((Class[])value);
+                     ((IsSetNullPolicy)object).setIsSetParameterTypes((Class<?>[])value);
                  }
              } catch (ClassNotFoundException e) {
                  throw new RuntimeException(e);
@@ -1714,11 +1709,11 @@
              @Override
             public Object getAttributeValueFromObject(Object object) {
                  Map<String, DatabaseType> fields = ((OracleObjectType) object).getFields();
-                 List associations = new ArrayList(fields.size());
+                 List<ObjectTypeFieldAssociation> associations = new ArrayList<>(fields.size());
                  Iterator<Map.Entry<String, DatabaseType>> iterator = fields.entrySet().iterator();
                  while (iterator.hasNext()) {
                      Map.Entry<String, DatabaseType> entry = iterator.next();
-                     associations.add(new ObjectTypeFieldAssociation(entry.getKey().toString(),  wrapType(entry.getValue())));
+                     associations.add(new ObjectTypeFieldAssociation(entry.getKey(),  wrapType(entry.getValue())));
                  }
                  return associations;
              }
@@ -1730,7 +1725,7 @@
                  Iterator<ObjectTypeFieldAssociation> iterator = associations.iterator();
                  while (iterator.hasNext()) {
                      ObjectTypeFieldAssociation association = iterator.next();
-                     fieldMap.put((String) association.getKey(), unwrapType((DatabaseTypeWrapper)association.getValue()));
+                     fieldMap.put(association.getKey(), unwrapType(association.getValue()));
                  }
                  objectType.setFields(fieldMap);
              }
@@ -1746,7 +1741,7 @@
       * the value is a DatabaseType.  The value must be wrapped/unwrapped
       * using the wrap/unwrap type methods on the outer class.
       */
-     public class ObjectTypeFieldAssociation implements Map.Entry {
+     public static class ObjectTypeFieldAssociation implements Map.Entry<String, DatabaseTypeWrapper> {
          String key;
          DatabaseTypeWrapper value;
 
@@ -1760,19 +1755,19 @@
          }
 
         @Override
-        public Object getKey() {
+        public String getKey() {
             return key;
         }
 
         @Override
-        public Object getValue() {
+        public DatabaseTypeWrapper getValue() {
             return value;
         }
 
         @Override
-        public Object setValue(Object arg0) {
-            Object oldValue = this.value;
-            this.value = (DatabaseTypeWrapper) arg0;
+        public DatabaseTypeWrapper setValue(DatabaseTypeWrapper arg0) {
+            DatabaseTypeWrapper oldValue = this.value;
+            this.value = arg0;
             return oldValue;
         }
      }
@@ -1782,7 +1777,7 @@
      protected ClassDescriptor buildObjectTypeFieldAssociationDescriptor() {
          XMLDescriptor descriptor = new XMLDescriptor();
          descriptor.setJavaClass(ObjectTypeFieldAssociation.class);
-         descriptor.setInstantiationPolicy(new ObjectTypeFieldAssociationInstantiationPolicy(this));
+         descriptor.setInstantiationPolicy(new ObjectTypeFieldAssociationInstantiationPolicy());
 
          XMLDirectMapping keyMapping = new XMLDirectMapping();
          keyMapping.setAttributeName("key");
@@ -1804,14 +1799,11 @@
       * enables the default constructor of the inner class to be accessed.
       */
      static class ObjectTypeFieldAssociationInstantiationPolicy extends InstantiationPolicy {
-         ObjectPersistenceRuntimeXMLProject_11_1_1 outer;
-         ObjectTypeFieldAssociationInstantiationPolicy(
-             ObjectPersistenceRuntimeXMLProject_11_1_1 outer) {
-             this.outer = outer;
+         ObjectTypeFieldAssociationInstantiationPolicy() {
          }
          @Override
          public Object buildNewInstance() throws DescriptorException {
-             return outer.new ObjectTypeFieldAssociation();
+             return new ObjectTypeFieldAssociation();
          }
      }
      protected ClassDescriptor buildPLSQLrecordDescriptor() {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/PersistenceEntityResolver.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/PersistenceEntityResolver.java
index 5cf1fa1..dac6bfd 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/PersistenceEntityResolver.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/PersistenceEntityResolver.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
@@ -36,7 +36,7 @@
  * @author Gordon Yorke, Guy Pelletier
  */
 public class PersistenceEntityResolver implements EntityResolver {
-    protected Hashtable m_localResources;
+    protected Hashtable<String, String> m_localResources;
     protected static final String dtdFileName40 = "sessions_4_0.dtd";
     protected static final String doctTypeId40 = "-//Oracle Corp.//DTD TopLink for JAVA 4.0//EN";
     protected static final String dtdFileName45 = "sessions_4_5.dtd";
@@ -48,7 +48,7 @@
      * INTERNAL:
      */
     public PersistenceEntityResolver() {
-        m_localResources = new Hashtable();
+        m_localResources = new Hashtable<>();
         populateLocalResources();
     }
 
@@ -65,20 +65,20 @@
      * INTERNAL:
      */
     protected String getDtdFileName(String docTypeId) {
-        return (String)getLocalResources().get(docTypeId);
+        return getLocalResources().get(docTypeId);
     }
 
     /**
      * INTERNAL:
      */
-    public Hashtable getLocalResources() {
+    public Hashtable<String, String> getLocalResources() {
         return m_localResources;
     }
 
     /**
      * INTERNAL:
      */
-    public void setLocalResources(Hashtable ht) {
+    public void setLocalResources(Hashtable<String, String> ht) {
         m_localResources = ht;
     }
 
@@ -94,11 +94,11 @@
      */
     @Override
     public InputSource resolveEntity(String publicId, String systemId) {
-        for (Enumeration docTypeIds = m_localResources.keys(); docTypeIds.hasMoreElements();) {
-            String docTypeId = (String)docTypeIds.nextElement();
+        for (Enumeration<String> docTypeIds = m_localResources.keys(); docTypeIds.hasMoreElements();) {
+            String docTypeId = docTypeIds.nextElement();
 
             if ((publicId != null) && publicId.equals(docTypeId)) {
-                InputStream localDtdStream =  null;
+                InputStream localDtdStream;
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try{
                         localDtdStream = AccessController.doPrivileged(new PrivilegedGetClassLoaderForClass(getClass())).getResourceAsStream(getDtdFileName(docTypeId));
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/SessionBrokerPlaceHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/SessionBrokerPlaceHolder.java
index 31e4861..6c6c770 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/SessionBrokerPlaceHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/SessionBrokerPlaceHolder.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
@@ -30,26 +30,26 @@
 public class SessionBrokerPlaceHolder extends org.eclipse.persistence.sessions.broker.SessionBroker {
 
     /** This member variable stores the sessions that have been retreived */
-    protected Vector sessionsCompleted;
+    protected Vector<String> sessionsCompleted;
 
     /** This member variable stores the sessions that need to be retreived */
-    protected Vector sessionNamesRequired;
+    protected Vector<String> sessionNamesRequired;
 
     public SessionBrokerPlaceHolder() {
         super();
-        this.sessionNamesRequired = new Vector();
-        this.sessionsCompleted = new Vector();
+        this.sessionNamesRequired = new Vector<>();
+        this.sessionsCompleted = new Vector<>();
     }
 
     public void addSessionName(String sessionName) {
         this.sessionNamesRequired.add(sessionName);
     }
 
-    public Vector getSessionNamesRequired() {
+    public Vector<String> getSessionNamesRequired() {
         return this.sessionNamesRequired;
     }
 
-    public Vector getSessionCompleted() {
+    public Vector<String> getSessionCompleted() {
         return this.sessionsCompleted;
     }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/SessionsFactory.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/SessionsFactory.java
index fe1fc0c..c015112 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/SessionsFactory.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/SessionsFactory.java
@@ -639,10 +639,10 @@
 
         // Properties (assumes they are all valid)
         if (loginConfig.getPropertyConfigs() != null) {
-            Enumeration e = loginConfig.getPropertyConfigs().elements();
+            Enumeration<PropertyConfig> e = loginConfig.getPropertyConfigs().elements();
 
             while (e.hasMoreElements()) {
-                PropertyConfig propertyConfig = (PropertyConfig)e.nextElement();
+                PropertyConfig propertyConfig = e.nextElement();
                 login.getProperties().put(propertyConfig.getName(), propertyConfig.getValue());
             }
         }
@@ -673,9 +673,9 @@
             }
 
             // Connection pools
-            Enumeration e = poolsConfig.getConnectionPoolConfigs().elements();
+            Enumeration<ConnectionPoolConfig> e = poolsConfig.getConnectionPoolConfigs().elements();
             while (e.hasMoreElements()) {
-                ConnectionPoolConfig connectionPoolConfig = (ConnectionPoolConfig)e.nextElement();
+                ConnectionPoolConfig connectionPoolConfig = e.nextElement();
                 serverSession.addConnectionPool(buildConnectionPoolConfig(connectionPoolConfig, serverSession));
             }
         }
@@ -736,7 +736,7 @@
     /**
      * INTERNAL:
      */
-    @SuppressWarnings({"unchecked"})
+    @SuppressWarnings({"unchecked", "rawtypes"})
     protected ServerPlatform buildCustomServerPlatformConfig(CustomServerPlatformConfig platformConfig, DatabaseSessionImpl session) {
         ServerPlatform platform;
 
@@ -1083,10 +1083,10 @@
     /**
      * INTERNAL:
      */
+    @SuppressWarnings({"unchecked", "rawtypes"})
     protected void buildOc4jJGroupsTransportManagerConfig(Oc4jJGroupsTransportManagerConfig tmConfig, RemoteCommandManager rcm) {
         TransportManager tm = null;
         try {
-            @SuppressWarnings({"unchecked"})
             Class<TransportManager> tmClass = (Class<TransportManager>) m_classLoader.loadClass(tmConfig.getTransportManagerClassName());
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 Constructor<TransportManager> constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<>(tmClass, new Class[] { RemoteCommandManager.class, boolean.class, String.class }, false));
@@ -1158,10 +1158,10 @@
         tm.setInitialContextFactoryName(namingConfig.getInitialContextFactoryName());
 
         // Properties (assumes they are all valid)
-        Enumeration e = namingConfig.getPropertyConfigs().elements();
+        Enumeration<PropertyConfig> e = namingConfig.getPropertyConfigs().elements();
 
         while (e.hasMoreElements()) {
-            PropertyConfig propertyConfig = (PropertyConfig)e.nextElement();
+            PropertyConfig propertyConfig = e.nextElement();
             tm.getRemoteContextProperties().put(propertyConfig.getName(), propertyConfig.getValue());
         }
     }
@@ -1206,10 +1206,10 @@
      */
     protected void processSessionEventManagerConfig(SessionEventManagerConfig sessionEventManagerConfig, AbstractSession session) {
         if (sessionEventManagerConfig != null) {
-            Enumeration e = sessionEventManagerConfig.getSessionEventListeners().elements();
+            Enumeration<String> e = sessionEventManagerConfig.getSessionEventListeners().elements();
 
             while (e.hasMoreElements()) {
-                String listenerClassName = (String)e.nextElement();
+                String listenerClassName = e.nextElement();
 
                 try {
                     @SuppressWarnings({"unchecked"})
@@ -1245,6 +1245,7 @@
     /**
      * INTERNAL:
      */
+    @SuppressWarnings({"unchecked"})
     protected SessionLog buildJavaLogConfig(JavaLogConfig javaLogConfig, AbstractSession session) {
         SessionLog javaLog = null;
         try {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigProject.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigProject.java
index 0b1d559..3e097fa 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigProject.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigProject.java
@@ -830,7 +830,7 @@
         platformClassMapping.setSetMethodName("setPlatformClass");
         platformClassMapping.setXPath("platform-class/text()");
         platformClassMapping.setConverter(new Converter(){
-            private Map platformList;
+            private Map<String, String> platformList;
             private String oldPrefix = "oracle.toplink.";
             private String newPrefix = "org.eclipse.persistence.";
             private String oldOxmPrefix = oldPrefix + "ox.";
@@ -869,7 +869,7 @@
 
             @Override
             public void initialize(DatabaseMapping mapping, Session session){
-                this.platformList = new HashMap();
+                this.platformList = new HashMap<>();
                 this.platformList.put("org.eclipse.persistence.internal.databaseaccess.AccessPlatform", "org.eclipse.persistence.platform.database.AccessPlatform");
                 this.platformList.put("org.eclipse.persistence.internal.databaseaccess.AttunityPlatform", "org.eclipse.persistence.platform.database.AttunityPlatform");
                 this.platformList.put("org.eclipse.persistence.internal.databaseaccess.CloudscapePlatform", "org.eclipse.persistence.platform.database.CloudscapePlatform");
@@ -1225,7 +1225,7 @@
         return descriptor;
     }
 
-    public ClassDescriptor buildServerPlatformConfigDescriptorFor(Class serverPlatformClass) {
+    public ClassDescriptor buildServerPlatformConfigDescriptorFor(Class<?> serverPlatformClass) {
         XMLDescriptor descriptor = new XMLDescriptor();
         descriptor.setJavaClass(serverPlatformClass);
         descriptor.getInheritancePolicy().setParentClass(ServerPlatformConfig.class);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigToplinkProject.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigToplinkProject.java
index 79ab8f0..6ccf2ff 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigToplinkProject.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigToplinkProject.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
@@ -25,6 +25,13 @@
  */
 
 public class XMLSessionConfigToplinkProject extends  XMLSessionConfigProject{
+
+    /**
+     * Default constructor.
+     */
+    public XMLSessionConfigToplinkProject() {
+    }
+
     @Override
     public ClassDescriptor buildSessionConfigsDescriptor() {
         XMLDescriptor descriptor = (XMLDescriptor)super.buildSessionConfigsDescriptor();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/event/SessionEventManagerConfig.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/event/SessionEventManagerConfig.java
index f32df73..b0afbb9 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/event/SessionEventManagerConfig.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/event/SessionEventManagerConfig.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
@@ -20,21 +20,21 @@
  * INTERNAL:
  */
 public class SessionEventManagerConfig {
-    private Vector m_sessionEventListeners;
+    private Vector<String> m_sessionEventListeners;
 
     public SessionEventManagerConfig() {
-        m_sessionEventListeners = new Vector();
+        m_sessionEventListeners = new Vector<>();
     }
 
     public void addSessionEventListener(String listener) {
         m_sessionEventListeners.add(listener);
     }
 
-    public void setSessionEventListeners(Vector sessionEventListeners) {
+    public void setSessionEventListeners(Vector<String> sessionEventListeners) {
         m_sessionEventListeners = sessionEventListeners;
     }
 
-    public Vector getSessionEventListeners() {
+    public Vector<String> getSessionEventListeners() {
         return m_sessionEventListeners;
     }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/AppendNewElementsOrderingPolicyConfig.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/AppendNewElementsOrderingPolicyConfig.java
index 8b890b2..bd4721f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/AppendNewElementsOrderingPolicyConfig.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/AppendNewElementsOrderingPolicyConfig.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
@@ -16,4 +16,9 @@
 
 public class AppendNewElementsOrderingPolicyConfig extends NodeOrderingPolicyConfig {
 
+    /**
+     * Default constructor.
+     */
+    public AppendNewElementsOrderingPolicyConfig() {
+    }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/DescriptorLevelDocumentPreservationPolicyConfig.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/DescriptorLevelDocumentPreservationPolicyConfig.java
index 1f36864..ee16331 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/DescriptorLevelDocumentPreservationPolicyConfig.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/DescriptorLevelDocumentPreservationPolicyConfig.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
@@ -16,4 +16,9 @@
 
 public class DescriptorLevelDocumentPreservationPolicyConfig extends DocumentPreservationPolicyConfig {
 
+    /**
+     * Default constructor.
+     */
+    public DescriptorLevelDocumentPreservationPolicyConfig() {
+    }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/DocumentPreservationPolicyConfig.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/DocumentPreservationPolicyConfig.java
index ce16950..d2c1631 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/DocumentPreservationPolicyConfig.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/DocumentPreservationPolicyConfig.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
@@ -16,6 +16,12 @@
 
 public abstract class DocumentPreservationPolicyConfig {
 
+    /**
+     * Default constructor.
+     */
+    protected DocumentPreservationPolicyConfig() {
+    }
+
     private NodeOrderingPolicyConfig m_nodeOrderingPolicy;
 
     public NodeOrderingPolicyConfig getNodeOrderingPolicy() {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/IgnoreNewElementsOrderingPolicyConfig.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/IgnoreNewElementsOrderingPolicyConfig.java
index d84cf8e..54fd570 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/IgnoreNewElementsOrderingPolicyConfig.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/IgnoreNewElementsOrderingPolicyConfig.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
@@ -16,4 +16,7 @@
 
 public class IgnoreNewElementsOrderingPolicyConfig extends NodeOrderingPolicyConfig {
 
+    public IgnoreNewElementsOrderingPolicyConfig() {
+        super();
+    }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/LoginConfig.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/LoginConfig.java
index 9066360..b34004f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/LoginConfig.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/LoginConfig.java
@@ -16,6 +16,7 @@
 
 import java.util.Vector;
 import org.eclipse.persistence.internal.security.SecurableObjectHolder;
+import org.eclipse.persistence.internal.sessions.factories.model.property.PropertyConfig;
 import org.eclipse.persistence.internal.sessions.factories.model.sequencing.SequencingConfig;
 
 /**
@@ -30,7 +31,7 @@
     private boolean m_externalConnectionPooling;
     private boolean m_externalTransactionController;
     private SequencingConfig m_sequencingConfig;
-    private Vector m_propertyConfigs;
+    private Vector<PropertyConfig> m_propertyConfigs;
 
     protected LoginConfig() {
         // Without setting the encryption class name the object holder will
@@ -156,11 +157,11 @@
         return m_sequencingConfig;
     }
 
-    public void setPropertyConfigs(Vector propertyConfigs) {
+    public void setPropertyConfigs(Vector<PropertyConfig> propertyConfigs) {
         m_propertyConfigs = propertyConfigs;
     }
 
-    public Vector getPropertyConfigs() {
+    public Vector<PropertyConfig> getPropertyConfigs() {
         return m_propertyConfigs;
     }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/NoDocumentPreservationPolicyConfig.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/NoDocumentPreservationPolicyConfig.java
index 1429c03..8dabad1 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/NoDocumentPreservationPolicyConfig.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/NoDocumentPreservationPolicyConfig.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
@@ -16,4 +16,9 @@
 
 public class NoDocumentPreservationPolicyConfig extends DocumentPreservationPolicyConfig {
 
+    /**
+     * Default constructor.
+     */
+    public NoDocumentPreservationPolicyConfig() {
+    }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/NodeOrderingPolicyConfig.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/NodeOrderingPolicyConfig.java
index a8a8843..91dcbc4 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/NodeOrderingPolicyConfig.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/NodeOrderingPolicyConfig.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
@@ -16,4 +16,9 @@
 
 public abstract class NodeOrderingPolicyConfig {
 
+    /**
+     * Default constructor.
+     */
+    protected NodeOrderingPolicyConfig() {
+    }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/RelativePositionOrderingPolicyConfig.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/RelativePositionOrderingPolicyConfig.java
index 4e15254..b1a0d73 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/RelativePositionOrderingPolicyConfig.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/RelativePositionOrderingPolicyConfig.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
@@ -16,4 +16,10 @@
 
 public class RelativePositionOrderingPolicyConfig extends NodeOrderingPolicyConfig {
 
+    /**
+     * Default constructor.
+     */
+    public RelativePositionOrderingPolicyConfig() {
+        super();
+    }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/XMLBinderPolicyConfig.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/XMLBinderPolicyConfig.java
index 9be67d0..009994f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/XMLBinderPolicyConfig.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/login/XMLBinderPolicyConfig.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
@@ -16,4 +16,9 @@
 
 public class XMLBinderPolicyConfig extends DocumentPreservationPolicyConfig {
 
+    /**
+     * Default constructor.
+     */
+    public XMLBinderPolicyConfig() {
+    }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/pool/PoolsConfig.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/pool/PoolsConfig.java
index 46b3ada..5e0012d 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/pool/PoolsConfig.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/pool/PoolsConfig.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
@@ -23,10 +23,10 @@
     private ReadConnectionPoolConfig m_readConnectionPoolConfig;
     private WriteConnectionPoolConfig m_writeConnectionPoolConfig;
     private ConnectionPoolConfig m_sequenceConnectionPoolConfig;
-    private Vector m_connectionPoolConfigs;
+    private Vector<ConnectionPoolConfig> m_connectionPoolConfigs;
 
     public PoolsConfig() {
-        m_connectionPoolConfigs = new Vector();
+        m_connectionPoolConfigs = new Vector<>();
     }
 
     public void setReadConnectionPoolConfig(ReadConnectionPoolConfig readConnectionPoolConfig) {
@@ -57,11 +57,11 @@
         m_connectionPoolConfigs.add(connectionPoolConfig);
     }
 
-    public void setConnectionPoolConfigs(Vector connectionPoolConfigs) {
+    public void setConnectionPoolConfigs(Vector<ConnectionPoolConfig> connectionPoolConfigs) {
         m_connectionPoolConfigs = connectionPoolConfigs;
     }
 
-    public Vector getConnectionPoolConfigs() {
+    public Vector<ConnectionPoolConfig> getConnectionPoolConfigs() {
         return m_connectionPoolConfigs;
     }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/transport/JMSTopicTransportManagerConfig.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/transport/JMSTopicTransportManagerConfig.java
index c5e02b7..1da9bea 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/transport/JMSTopicTransportManagerConfig.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/transport/JMSTopicTransportManagerConfig.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
@@ -15,10 +15,14 @@
 //     cdelahun - Bug 214534: moved all api to JMSPublishingTransportManagerConfig
 package org.eclipse.persistence.internal.sessions.factories.model.transport;
 
-
 /**
  * INTERNAL:
  */
 public class JMSTopicTransportManagerConfig extends JMSPublishingTransportManagerConfig {
 
+    /**
+     * Default constructor.
+     */
+    public JMSTopicTransportManagerConfig() {
+    }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/transport/naming/JNDINamingServiceConfig.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/transport/naming/JNDINamingServiceConfig.java
index 98cc179..9ced9e4 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/transport/naming/JNDINamingServiceConfig.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/model/transport/naming/JNDINamingServiceConfig.java
@@ -16,6 +16,7 @@
 
 import java.util.Vector;
 import org.eclipse.persistence.internal.security.SecurableObjectHolder;
+import org.eclipse.persistence.internal.sessions.factories.model.property.PropertyConfig;
 
 /**
  * INTERNAL:
@@ -26,7 +27,7 @@
     private char[] m_encryptedPassword;
     private SecurableObjectHolder m_securableObjectHolder;
     private String m_initialContextFactoryName;
-    private Vector m_propertyConfigs;
+    private Vector<PropertyConfig> m_propertyConfigs;
 
     public JNDINamingServiceConfig() {
         // Without setting the encryption class name the object holder will
@@ -127,11 +128,11 @@
         return m_initialContextFactoryName;
     }
 
-    public void setPropertyConfigs(Vector propertyConfigs) {
+    public void setPropertyConfigs(Vector<PropertyConfig> propertyConfigs) {
         m_propertyConfigs = propertyConfigs;
     }
 
-    public Vector getPropertyConfigs() {
+    public Vector<PropertyConfig> getPropertyConfigs() {
         return m_propertyConfigs;
     }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/OracleDirectToXMLTypeMappingHelper.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/OracleDirectToXMLTypeMappingHelper.java
index e51fef1..3764494 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/OracleDirectToXMLTypeMappingHelper.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/OracleDirectToXMLTypeMappingHelper.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
@@ -33,6 +33,14 @@
 public class OracleDirectToXMLTypeMappingHelper extends DirectToXMLTypeMappingHelper {
 
     protected String namespaceXPath;
+
+    /**
+     * Default constructor.
+     */
+    public OracleDirectToXMLTypeMappingHelper() {
+        super();
+    }
+
     /**
      * Add the XMLType mapping indicator to the DatabaseMapping descriptor.
      */
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/ProjectClassGenerator.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/ProjectClassGenerator.java
index 87cfe21..f3c6d21 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/ProjectClassGenerator.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/ProjectClassGenerator.java
@@ -25,7 +25,6 @@
 import java.io.StringWriter;
 import java.io.Writer;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Enumeration;
 import java.util.Hashtable;
@@ -128,7 +127,7 @@
     protected String outputFileName;
     protected Writer outputWriter;
     protected Project project;
-    protected Hashtable descriptorMethodNames;
+    protected Hashtable<ClassDescriptor, String> descriptorMethodNames;
 
     /**
      * PUBLIC:
@@ -139,7 +138,7 @@
         this.outputFileName = "TopLinkProject.java";
         this.className = "TopLinkProject";
         this.packageName = "";
-        this.descriptorMethodNames = new Hashtable();
+        this.descriptorMethodNames = new Hashtable<>();
     }
 
     /**
@@ -633,7 +632,7 @@
 
         method.addLine("HistoryPolicy " + policyName + " = new HistoryPolicy();");
         for (DatabaseTable table : policy.getHistoricalTables()) {
-            String sourceName = null;
+            String sourceName;
             if (table.getTableQualifier().equals("")) {
                 sourceName = table.getName();
             } else {
@@ -673,9 +672,9 @@
                 if (policy.shouldUseClassNameAsIndicator()) {
                     method.addLine("descriptor.getInheritancePolicy().useClassNameAsIndicator();");
                 } else {
-                    for (Iterator indicatorsEnum = policy.getClassNameIndicatorMapping().keySet().iterator();
+                    for (Iterator<String> indicatorsEnum = policy.getClassNameIndicatorMapping().keySet().iterator();
                              indicatorsEnum.hasNext();) {
-                        String className = (String)indicatorsEnum.next();
+                        String className = indicatorsEnum.next();
                         Object value = policy.getClassNameIndicatorMapping().get(className);
                         method.addLine("descriptor.getInheritancePolicy().addClassIndicator(" + className + ".class, " + printString(value) + ");");
                     }
@@ -802,7 +801,7 @@
         if (converter.getDefaultAttributeValue() != null) {
             method.addLine(converterName + ".setDefaultAttributeValue(" + printString(converter.getDefaultAttributeValue()) + ");");
         }
-        for (Iterator typesEnum = converter.getAttributeToFieldValues().keySet().iterator();
+        for (Iterator<Object> typesEnum = converter.getAttributeToFieldValues().keySet().iterator();
                  typesEnum.hasNext();) {
             Object attributeValue = typesEnum.next();
             Object fieldValue = converter.getAttributeToFieldValues().get(attributeValue);
@@ -810,7 +809,7 @@
         }
 
         // Read-only conversions.
-        for (Iterator typesEnum = converter.getFieldToAttributeValues().keySet().iterator();
+        for (Iterator<Object> typesEnum = converter.getFieldToAttributeValues().keySet().iterator();
                  typesEnum.hasNext();) {
             Object fieldValue = typesEnum.next();
             Object attributeValue = converter.getFieldToAttributeValues().get(fieldValue);
@@ -954,10 +953,10 @@
         // Named queries.
         if (descriptor.getQueryManager().getAllQueries().size() > 0) {
             method.addLine("// Named Queries.");
-            Enumeration namedQueries = descriptor.getQueryManager().getAllQueries().elements();
+            Enumeration<DatabaseQuery> namedQueries = descriptor.getQueryManager().getAllQueries().elements();
             int iteration = 0;
             while (namedQueries.hasMoreElements()) {
-                addNamedQueryLines(method, (DatabaseQuery)namedQueries.nextElement(), descriptor.getQueryManager(), iteration);
+                addNamedQueryLines(method, namedQueries.nextElement(), descriptor.getQueryManager(), iteration);
                 ++iteration;
             }
         }
@@ -999,9 +998,9 @@
     }
 
     protected void addNamedQueryLines(NonreflectiveMethodDefinition method, DatabaseQuery query, DescriptorQueryManager queryManager, int iteration) {
-        String queryIdentifier = "namedQuery" + String.valueOf(iteration);
+        String queryIdentifier = "namedQuery" + iteration;
         method.addLine("// Named Query -- " + query.getName());
-        String className = "";
+        String className;
         if (query.getDescriptor() != null) {
             className = query.getDescriptor().getJavaClassName();
         } else {
@@ -1046,28 +1045,28 @@
             method.addLine(queryIdentifier + ".setCascadePolicy(" + cascadePolicy + ");");
         }
         if (query.getQueryTimeout() != DescriptorQueryManager.DefaultTimeout) {
-            method.addLine(queryIdentifier + ".setQueryTimeout(" + String.valueOf(query.getQueryTimeout()) + ");");
+            method.addLine(queryIdentifier + ".setQueryTimeout(" + query.getQueryTimeout() + ");");
         }
         if (query.getQueryTimeoutUnit() != DescriptorQueryManager.DefaultTimeoutUnit) {
             method.addLine(queryIdentifier + ".setQueryTimeoutUnit(" + query.getQueryTimeoutUnit() + ");");
         }
         if (!query.shouldUseWrapperPolicy()) {
-            method.addLine(queryIdentifier + ".setShouldUseWrapperPolicy(" + String.valueOf(query.shouldUseWrapperPolicy()) + ");");
+            method.addLine(queryIdentifier + ".setShouldUseWrapperPolicy(" + query.shouldUseWrapperPolicy() + ");");
         }
         if (!query.shouldIgnoreBindAllParameters()) {
-            method.addLine(queryIdentifier + ".setShouldBindAllParameters(" + String.valueOf(query.shouldBindAllParameters()) + ");");
+            method.addLine(queryIdentifier + ".setShouldBindAllParameters(" + query.shouldBindAllParameters() + ");");
         }
         if (!query.shouldIgnoreCacheStatement()) {
-            method.addLine(queryIdentifier + ".setShouldCacheStatement(" + String.valueOf(query.shouldCacheStatement()) + ");");
+            method.addLine(queryIdentifier + ".setShouldCacheStatement(" + query.shouldCacheStatement() + ");");
         }
         if (query.getSessionName() != null) {
             method.addLine(queryIdentifier + ".setSessionName(\"" + query.getSessionName() + "\");");
         }
         if (!query.shouldMaintainCache()) {
-            method.addLine(queryIdentifier + ".setShouldMaintainCache(" + String.valueOf(query.shouldMaintainCache()) + ");");
+            method.addLine(queryIdentifier + ".setShouldMaintainCache(" + query.shouldMaintainCache() + ");");
         }
         if (!query.shouldPrepare()) {
-            method.addLine(queryIdentifier + ".setShouldPrepare(" + String.valueOf(query.shouldPrepare()) + ");");
+            method.addLine(queryIdentifier + ".setShouldPrepare(" + query.shouldPrepare() + ");");
         }
 
         if (query.isReadQuery()) {
@@ -1076,10 +1075,10 @@
                 method.addLine(queryIdentifier + ".setQueryResultsCachePolicy(new QueryResultsCachePolicy());");
             }
             if (readQuery.getMaxRows() != 0) {
-                method.addLine(queryIdentifier + ".setMaxRows(" + String.valueOf(readQuery.getMaxRows()) + ");");
+                method.addLine(queryIdentifier + ".setMaxRows(" + readQuery.getMaxRows() + ");");
             }
             if (readQuery.getFirstResult() != 0) {
-                method.addLine(queryIdentifier + ".setFirstResult(" + String.valueOf(readQuery.getFirstResult()) + ");");
+                method.addLine(queryIdentifier + ".setFirstResult(" + readQuery.getFirstResult() + ");");
             }
         }
 
@@ -1091,7 +1090,7 @@
 
             // Refresh.
             if (readQuery.shouldRefreshIdentityMapResult()) {
-                method.addLine(queryIdentifier + ".setShouldRefreshIdentityMapResult(" + String.valueOf(readQuery.shouldRefreshIdentityMapResult()) + ");");
+                method.addLine(queryIdentifier + ".setShouldRefreshIdentityMapResult(" + readQuery.shouldRefreshIdentityMapResult() + ");");
             }
 
             // Cache usage.
@@ -1130,7 +1129,7 @@
 
             // Remote refresh.
             if (readQuery.shouldRefreshRemoteIdentityMapResult()) {
-                method.addLine(queryIdentifier + ".setShouldRefreshRemoteIdentityMapResult(" + String.valueOf(readQuery.shouldRefreshRemoteIdentityMapResult()) + ");");
+                method.addLine(queryIdentifier + ".setShouldRefreshRemoteIdentityMapResult(" + readQuery.shouldRefreshRemoteIdentityMapResult() + ");");
             }
 
             // Distinct state.
@@ -1272,9 +1271,9 @@
                     }
                     baseExpression.printJava(javaPrinter);
                     if (databaseString == null) { //e.g. addCount(itemName, attributeExpression)
-                        method.addLine(queryIdentifier + functionString + itemName + "\", " + writer.toString() + ");");
+                        method.addLine(queryIdentifier + functionString + itemName + "\", " + writer + ");");
                     } else { //i.e. addFunctionItem(itemName, attributeExpression, functionName) only
-                        method.addLine(queryIdentifier + functionString + itemName + "\", " + writer.toString() + ", \"" + databaseString + "\");");
+                        method.addLine(queryIdentifier + functionString + itemName + "\", " + writer + ", \"" + databaseString + "\");");
                     }
                 }
             }
@@ -1313,7 +1312,7 @@
     //Build ExpressionBuilder string
     protected String buildBuilderString(String builderString, NonreflectiveMethodDefinition method, int iteration, String queryIdentifier) {
         if (builderString == null) {
-            builderString = "expBuilder" + String.valueOf(iteration);
+            builderString = "expBuilder" + iteration;
             method.addLine("ExpressionBuilder " + builderString + " = " + queryIdentifier + ".getExpressionBuilder();");
         }
         return builderString;
@@ -1324,7 +1323,7 @@
         StringWriter writer = new StringWriter();
         ExpressionJavaPrinter javaPrinter = new ExpressionJavaPrinter(builderString, writer, project.getDatasourceLogin().getPlatform());
         exp.printJava(javaPrinter);
-        method.addLine(queryIdentifier + attrString + writer.toString() + ");");
+        method.addLine(queryIdentifier + attrString + writer + ");");
     }
 
     protected void addReturningPolicyLines(NonreflectiveMethodDefinition method, ReturningPolicy policy) {
@@ -1443,9 +1442,9 @@
     }
 
     protected void addVariableOneToOneMappingLines(NonreflectiveMethodDefinition method, String mappingName, VariableOneToOneMapping mapping) {
-        for (Iterator foreignKeysEnum = mapping.getSourceToTargetQueryKeyNames().keySet().iterator();
+        for (Iterator<DatabaseField> foreignKeysEnum = mapping.getSourceToTargetQueryKeyNames().keySet().iterator();
                  foreignKeysEnum.hasNext();) {
-            DatabaseField sourceField = (DatabaseField)foreignKeysEnum.next();
+            DatabaseField sourceField = foreignKeysEnum.next();
             String targetQueryKey = (String)mapping.getSourceToTargetQueryKeyNames().get(sourceField);
             if (mapping.getForeignKeyFields().contains(sourceField)) {
                 method.addLine(mappingName + ".addForeignQueryKeyName(\"" + sourceField.getQualifiedName() + "\", \"" + targetQueryKey + "\");");
@@ -1457,9 +1456,9 @@
         if (mapping.getTypeField() != null) {
             method.addLine(mappingName + ".setTypeFieldName(\"" + mapping.getTypeFieldName() + "\");");
 
-            for (Iterator typeIndicatorsEnum = mapping.getTypeIndicatorNameTranslation().keySet().iterator();
+            for (Iterator<String> typeIndicatorsEnum = mapping.getTypeIndicatorNameTranslation().keySet().iterator();
                      typeIndicatorsEnum.hasNext();) {
-                String className = (String)typeIndicatorsEnum.next();
+                String className = typeIndicatorsEnum.next();
                 Object value = mapping.getTypeIndicatorNameTranslation().get(className);
                 method.addLine(mappingName + ".addClassIndicator(" + className + ".class, " + printString(value) + ");");
             }
@@ -1602,9 +1601,9 @@
         if (!descriptor.getMappings().isEmpty()) {
             method.addLine("");
             method.addLine("// Mappings.");
-            for (Enumeration mappingsEnum = sortMappings(descriptor.getMappings()).elements();
+            for (Enumeration<DatabaseMapping> mappingsEnum = sortMappings(descriptor.getMappings()).elements();
                      mappingsEnum.hasMoreElements();) {
-                addMappingLines(method, (DatabaseMapping)mappingsEnum.nextElement());
+                addMappingLines(method, mappingsEnum.nextElement());
                 method.addLine("");
             }
         } else {
@@ -1625,16 +1624,8 @@
      *  Take an unsorted list of descriptors and sort it so that the order is maintained.
      */
     private List<ClassDescriptor> buildSortedListOfDescriptors(List<ClassDescriptor> descriptors) {
-        List returnDescriptors = Helper.addAllUniqueToList(new ArrayList(descriptors.size()), descriptors);
-        Object[] descriptorsArray = new Object[returnDescriptors.size()];
-        for (int index = 0; index < returnDescriptors.size(); index++) {
-            descriptorsArray[index] = returnDescriptors.get(index);
-        }
-        Arrays.sort(descriptorsArray, new DescriptorCompare());
-        returnDescriptors = new ArrayList(descriptorsArray.length);
-        for (Object descriptor : descriptorsArray) {
-            returnDescriptors.add(descriptor);
-        }
+        List<ClassDescriptor> returnDescriptors = Helper.addAllUniqueToList(new ArrayList<>(descriptors.size()), descriptors);
+        returnDescriptors.sort(new DescriptorCompare());
         return returnDescriptors;
     }
 
@@ -1719,16 +1710,15 @@
             addedSequencingHeader = true;
             method.addLine(setDefaultOrAddSequenceString(defaultSequence, true));
         }
-        Map sequences = ((DatasourceLogin)datasourceLogin).getSequencesToWrite();
+        Map<String, Sequence> sequences = ((DatasourceLogin)datasourceLogin).getSequencesToWrite();
         if ((sequences != null) && !sequences.isEmpty()) {
             if (!addedSequencingHeader) {
                 method.addLine("");
                 method.addLine("// Sequencing.");
-                addedSequencingHeader = true;
             }
-            Iterator it = sequences.values().iterator();
+            Iterator<Sequence> it = sequences.values().iterator();
             while (it.hasNext()) {
-                Sequence sequence = (Sequence)it.next();
+                Sequence sequence = it.next();
                 method.addLine(setDefaultOrAddSequenceString(sequence, false));
             }
         }
@@ -1765,7 +1755,7 @@
      * first using the local class name then the qualified one for duplicates.
      */
     protected void computeDescriptorMethodNames() {
-        Hashtable shortNames = new Hashtable();
+        Hashtable<String, ClassDescriptor> shortNames = new Hashtable<>();
         Iterator<ClassDescriptor> descriptors = project.getOrderedDescriptors().iterator();
         while (descriptors.hasNext()) {
             ClassDescriptor descriptor = descriptors.next();
@@ -1775,7 +1765,7 @@
                 String shortName = Helper.getShortClassName(descriptor.getJavaClassName());
                 if (shortNames.containsKey(shortName)) {
                     // Use the full package name.
-                    ClassDescriptor firstDescriptor = (ClassDescriptor)shortNames.get(shortName);
+                    ClassDescriptor firstDescriptor = shortNames.get(shortName);
                     getDescriptorMethodNames().put(firstDescriptor, removeDots(firstDescriptor.getJavaClassName()));
                     getDescriptorMethodNames().put(descriptor, removeDots(descriptor.getJavaClassName()));
                 } else {
@@ -1870,7 +1860,7 @@
         return className;
     }
 
-    protected Hashtable getDescriptorMethodNames() {
+    protected Hashtable<ClassDescriptor, String> getDescriptorMethodNames() {
         return descriptorMethodNames;
     }
 
@@ -1963,7 +1953,7 @@
         // This handles most cases.
         //CR#2648.  Get fully qualified name for object.
         // Bug 298443 - account for Byte, Double, Short, Long, etc. constructors.
-        return "new " + value.getClass().getName() + "(\"" + String.valueOf(value) + "\")";
+        return "new " + value.getClass().getName() + "(\"" + value + "\")";
 
     }
 
@@ -1976,7 +1966,7 @@
             startIndex = dotIndex + 1;
             dotIndex = packageName.indexOf('.', startIndex);
         }
-        writer.write(packageName.substring(startIndex, packageName.length()));
+        writer.write(packageName.substring(startIndex));
 
         return writer.toString();
     }
@@ -1989,7 +1979,7 @@
     public void setClassName(String newClassName) {
         int lastDotIndex = newClassName.lastIndexOf('.');
         if (lastDotIndex >= 0) {
-            className = newClassName.substring(lastDotIndex + 1, newClassName.length());
+            className = newClassName.substring(lastDotIndex + 1);
             setPackageName(newClassName.substring(0, lastDotIndex));
         } else {
             className = newClassName;
@@ -1997,7 +1987,7 @@
         setOutputFileName(newClassName);
     }
 
-    protected void setDescriptorMethodNames(Hashtable descriptorMethodNames) {
+    protected void setDescriptorMethodNames(Hashtable<ClassDescriptor, String> descriptorMethodNames) {
         this.descriptorMethodNames = descriptorMethodNames;
     }
 
@@ -2007,7 +1997,7 @@
      * If the file does not include .java it will be appended.
      */
     public void setOutputFileName(String newOutputFileName) {
-        if (newOutputFileName.indexOf(".java") < 0) {
+        if (!newOutputFileName.contains(".java")) {
             outputFileName = newOutputFileName + ".java";
         } else {
             outputFileName = newOutputFileName;
@@ -2050,55 +2040,55 @@
     /**
      * Short the mappings by type.
      */
-    protected Vector sortMappings(Vector mappings) {
-        Vector sortedMappings = new Vector(mappings.size());
+    protected Vector<DatabaseMapping> sortMappings(Vector<DatabaseMapping> mappings) {
+        Vector<DatabaseMapping> sortedMappings = new Vector<>(mappings.size());
 
-        for (Enumeration mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
-            DatabaseMapping mapping = (DatabaseMapping)mappingsEnum.nextElement();
+        for (Enumeration<DatabaseMapping> mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
+            DatabaseMapping mapping = mappingsEnum.nextElement();
             if (mapping.getClass().equals(DirectToFieldMapping.class)) {
                 sortedMappings.addElement(mapping);
             }
         }
-        for (Enumeration mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
-            DatabaseMapping mapping = (DatabaseMapping)mappingsEnum.nextElement();
+        for (Enumeration<DatabaseMapping> mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
+            DatabaseMapping mapping = mappingsEnum.nextElement();
             if (mapping.isTransformationMapping()) {
                 sortedMappings.addElement(mapping);
             }
         }
-        for (Enumeration mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
-            DatabaseMapping mapping = (DatabaseMapping)mappingsEnum.nextElement();
+        for (Enumeration<DatabaseMapping> mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
+            DatabaseMapping mapping = mappingsEnum.nextElement();
             if (mapping.isAggregateMapping()) {
                 sortedMappings.addElement(mapping);
             }
         }
-        for (Enumeration mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
-            DatabaseMapping mapping = (DatabaseMapping)mappingsEnum.nextElement();
+        for (Enumeration<DatabaseMapping> mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
+            DatabaseMapping mapping = mappingsEnum.nextElement();
             if (mapping.isDirectCollectionMapping()) {
                 sortedMappings.addElement(mapping);
             }
         }
-        for (Enumeration mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
-            DatabaseMapping mapping = (DatabaseMapping)mappingsEnum.nextElement();
+        for (Enumeration<DatabaseMapping> mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
+            DatabaseMapping mapping = mappingsEnum.nextElement();
             if (mapping.isObjectReferenceMapping()) {
                 sortedMappings.addElement(mapping);
             }
         }
-        for (Enumeration mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
-            DatabaseMapping mapping = (DatabaseMapping)mappingsEnum.nextElement();
+        for (Enumeration<DatabaseMapping> mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
+            DatabaseMapping mapping = mappingsEnum.nextElement();
             if (mapping.isOneToManyMapping()) {
                 sortedMappings.addElement(mapping);
             }
         }
-        for (Enumeration mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
-            DatabaseMapping mapping = (DatabaseMapping)mappingsEnum.nextElement();
+        for (Enumeration<DatabaseMapping> mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
+            DatabaseMapping mapping = mappingsEnum.nextElement();
             if (mapping.isManyToManyMapping()) {
                 sortedMappings.addElement(mapping);
             }
         }
 
         // Others
-        for (Enumeration mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
-            DatabaseMapping mapping = (DatabaseMapping)mappingsEnum.nextElement();
+        for (Enumeration<DatabaseMapping> mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
+            DatabaseMapping mapping = mappingsEnum.nextElement();
             if (!sortedMappings.contains(mapping)) {
                 sortedMappings.addElement(mapping);
             }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/SessionManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/SessionManager.java
index 13f4292..1d48b54 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/SessionManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/SessionManager.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 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
@@ -61,7 +61,7 @@
 
     protected static volatile SessionManager manager;
     protected AbstractSession defaultSession;
-    protected ConcurrentMap<String, Session> sessions = null;
+    protected ConcurrentMap<String, Session> sessions;
     protected static boolean shouldPerformDTDValidation;
     private static volatile ConcurrentMap<String, SessionManager> managers;
     private static volatile ServerPlatform detectedPlatform;
@@ -207,9 +207,9 @@
             if (session.isConnected()) {
                 ((DatabaseSession) session).logout();
             }
-        } catch (Throwable ignore) {
+        } catch (Throwable ig) {
             // EL Bug 321843 - Must handle errors from logout.
-            LOG.logThrowable(SessionLog.WARNING, AbstractSessionLog.CONNECTION, ignore);
+            LOG.logThrowable(SessionLog.WARNING, AbstractSessionLog.CONNECTION, ig);
         }
 
         sessions.remove(session.getName());
@@ -389,7 +389,7 @@
     public org.eclipse.persistence.internal.sessions.AbstractSession getSession(String sessionName, Object objectBean) {
         XMLSessionConfigLoader loader = new XMLSessionConfigLoader();
         loader.setSessionName(sessionName);
-        ClassLoader classLoader = null;
+        ClassLoader classLoader;
         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
             try{
                 classLoader = AccessController.doPrivileged(new PrivilegedGetClassLoaderForClass(objectBean.getClass()));
@@ -582,8 +582,8 @@
                             // Must handles errors from logout as session maybe hosed.
                             try {
                                 ((DatabaseSession)session).logout();
-                            } catch (Throwable ignore) {
-                                LOG.logThrowable(SessionLog.WARNING, AbstractSessionLog.CONNECTION, ignore);
+                            } catch (Throwable ig) {
+                                LOG.logThrowable(SessionLog.WARNING, AbstractSessionLog.CONNECTION, ig);
                             }
                         }
                         getSessions().remove(loader.getSessionName());
@@ -628,7 +628,7 @@
      *
      * @param sessions sessions for this session manager
      */
-    public void setSessions(ConcurrentMap sessions) {
+    public void setSessions(ConcurrentMap<String, Session> sessions) {
         this.sessions = sessions;
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/TableCreatorClassGenerator.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/TableCreatorClassGenerator.java
index c846541..4847e66 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/TableCreatorClassGenerator.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/TableCreatorClassGenerator.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
@@ -355,7 +355,7 @@
             startIndex = dotIndex + 1;
             dotIndex = packageName.indexOf('.', startIndex);
         }
-        writer.write(packageName.substring(startIndex, packageName.length()));
+        writer.write(packageName.substring(startIndex));
 
         return writer.toString();
     }
@@ -368,7 +368,7 @@
     public void setClassName(String newClassName) {
         int lastDotIndex = newClassName.lastIndexOf('.');
         if (lastDotIndex >= 0) {
-            className = newClassName.substring(lastDotIndex + 1, newClassName.length());
+            className = newClassName.substring(lastDotIndex + 1);
             setPackageName(newClassName.substring(0, lastDotIndex));
         } else {
             className = newClassName;
@@ -382,7 +382,7 @@
      * If the file does not include .java it will be appended.
      */
     public void setOutputFileName(String newOutputFileName) {
-        if (newOutputFileName.indexOf(".java") < 0) {
+        if (!newOutputFileName.contains(".java")) {
             outputFileName = newOutputFileName + ".java";
         } else {
             outputFileName = newOutputFileName;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/XMLSessionConfigLoader.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/XMLSessionConfigLoader.java
index b2f1210..bbaf0f3 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/XMLSessionConfigLoader.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/XMLSessionConfigLoader.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
@@ -381,6 +381,13 @@
      * @author Guy Pelletier
      */
     public class XMLSessionConfigLoaderErrorHandler implements ErrorHandler {
+
+        /**
+         * Default constructor.
+         */
+        public XMLSessionConfigLoaderErrorHandler() {
+        }
+
         @Override
         public void warning(SAXParseException e) throws SAXException {
             getExceptionStore().add(SessionLoaderException.failedToParseXML(ExceptionLocalization.buildMessage("parsing_warning"), e.getLineNumber(), e.getColumnNumber(), e));