add generics to ValueHolders,
related cleanup
cleanup in remote sessions related code
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 d366280..87d9c80 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
@@ -1014,13 +1014,13 @@
if (session.getIntegrityChecker().checkTable(table, session)) {
// To load the fields of database into a vector
List databaseFields = new ArrayList();
- List result = session.getAccessor().getColumnInfo(null, null, table.getName(), null, session);
+ List<AbstractRecord> result = session.getAccessor().getColumnInfo(null, null, table.getName(), null, session);
// Table name may need to be lowercase.
if (result.isEmpty() && session.getPlatform().shouldForceFieldNamesToUpperCase()) {
result = session.getAccessor().getColumnInfo(null, null, table.getName().toLowerCase(), null, session);
}
- for (Iterator resultIterator = result.iterator(); resultIterator.hasNext();) {
- AbstractRecord row = (AbstractRecord)resultIterator.next();
+ for (Iterator<AbstractRecord> resultIterator = result.iterator(); resultIterator.hasNext();) {
+ AbstractRecord row = resultIterator.next();
if (session.getPlatform().shouldForceFieldNamesToUpperCase()) {
databaseFields.add(((String)row.get("COLUMN_NAME")).toUpperCase());
} else {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/dynamic/DynamicHelper.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/dynamic/DynamicHelper.java
index 7174d37..881f20f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/dynamic/DynamicHelper.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/dynamic/DynamicHelper.java
@@ -238,6 +238,12 @@
*/
public static class SessionCustomizer implements org.eclipse.persistence.config.SessionCustomizer {
+ /**
+ * Default constructor.
+ */
+ public SessionCustomizer() {
+ }
+
@Override
public void customize(Session session) throws Exception {
DynamicClassLoader dcl = DynamicClassLoader.lookup(session);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/EISMappedRecord.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/EISMappedRecord.java
index 462c224..9175b59 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/EISMappedRecord.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/EISMappedRecord.java
@@ -55,7 +55,7 @@
*/
@Override
public Vector getValues() {
- return new Vector(getRecord().values());
+ return new Vector<>(getRecord().values());
}
/**
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/IntegrityChecker.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/IntegrityChecker.java
index c02ae21..33e3d77 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/IntegrityChecker.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/IntegrityChecker.java
@@ -28,7 +28,7 @@
public class IntegrityChecker implements Serializable {
/** To add all the Descriptor exceptions */
- protected Vector caughtExceptions = null;
+ protected Vector<Exception> caughtExceptions = null;
/** To load the tables from database */
protected Vector tables = null;
@@ -124,9 +124,9 @@
* PUBLIC:
* This method returns the vector which adds all the Descriptors Exceptions.
*/
- public Vector getCaughtExceptions() {
+ public Vector<Exception> getCaughtExceptions() {
if (caughtExceptions == null) {
- caughtExceptions = new Vector();
+ caughtExceptions = new Vector<>();
}
return caughtExceptions;
}
@@ -171,7 +171,7 @@
*/
public boolean hasRuntimeExceptions() {
if (hasErrors()) {
- for (Enumeration exceptionsEnum = getCaughtExceptions().elements();
+ for (Enumeration<Exception> exceptionsEnum = getCaughtExceptions().elements();
exceptionsEnum.hasMoreElements();) {
if (exceptionsEnum.nextElement() instanceof RuntimeException) {
return true;
@@ -186,9 +186,9 @@
* This method is used to get all the database tables and add them into a vector.
*/
public void initializeTables(AbstractSession session) {
- List result = session.getAccessor().getTableInfo(null, null, null, null, session);
- for (Iterator iterator = result.iterator(); iterator.hasNext();) {
- AbstractRecord row = (AbstractRecord)iterator.next();
+ List<AbstractRecord> result = session.getAccessor().getTableInfo(null, null, null, null, session);
+ for (Iterator<AbstractRecord> iterator = result.iterator(); iterator.hasNext();) {
+ AbstractRecord row = iterator.next();
if (session.getPlatform().shouldForceFieldNamesToUpperCase()) {
this.tables.add(((String)row.get("TABLE_NAME")).toUpperCase());
} else {
@@ -200,7 +200,7 @@
/**
* INTERNAL:
*/
- public void setCaughtExceptions(Vector exceptions) {
+ public void setCaughtExceptions(Vector<Exception> exceptions) {
this.caughtExceptions = exceptions;
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/IntegrityException.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/IntegrityException.java
index 638406b..8d3e4f0 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/IntegrityException.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/IntegrityException.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
@@ -61,9 +61,9 @@
java.io.PrintWriter writer = new java.io.PrintWriter(swriter);
writer.println(cr + ExceptionMessageGenerator.getHeader("DescriptorExceptionsHeader"));
writer.println("---------------------------------------------------------");
- for (Enumeration enumtr = getIntegrityChecker().getCaughtExceptions().elements();
+ for (Enumeration<Exception> enumtr = getIntegrityChecker().getCaughtExceptions().elements();
enumtr.hasMoreElements();) {
- Exception e = (Exception)enumtr.nextElement();
+ Exception e = enumtr.nextElement();
if (e instanceof DescriptorException) {
writer.println(cr + e);
}
@@ -72,9 +72,9 @@
if (getIntegrityChecker().hasRuntimeExceptions()) {
writer.println(cr + ExceptionMessageGenerator.getHeader("RuntimeExceptionsHeader"));
writer.println("---------------------------------------------------------");
- for (Enumeration enumtr = getIntegrityChecker().getCaughtExceptions().elements();
+ for (Enumeration<Exception> enumtr = getIntegrityChecker().getCaughtExceptions().elements();
enumtr.hasMoreElements();) {
- Exception e = (Exception)enumtr.nextElement();
+ Exception e = enumtr.nextElement();
if (!(e instanceof DescriptorException)) {
writer.println(cr + e);
}
@@ -114,9 +114,9 @@
String cr = org.eclipse.persistence.internal.helper.Helper.cr();
writer.println(cr + ExceptionMessageGenerator.getHeader("DescriptorExceptionsHeader"));
writer.println("---------------------------------------------------------");
- for (Enumeration enumtr = getIntegrityChecker().getCaughtExceptions().elements();
+ for (Enumeration<Exception> enumtr = getIntegrityChecker().getCaughtExceptions().elements();
enumtr.hasMoreElements();) {
- Exception e = (Exception)enumtr.nextElement();
+ Exception e = enumtr.nextElement();
if (e instanceof DescriptorException) {
writer.println(cr);
e.printStackTrace(writer);
@@ -126,9 +126,9 @@
if (getIntegrityChecker().hasRuntimeExceptions()) {
writer.println(cr + ExceptionMessageGenerator.getHeader("RuntimeExceptionsHeader"));
writer.println("---------------------------------------------------------");
- for (Enumeration enumtr = getIntegrityChecker().getCaughtExceptions().elements();
+ for (Enumeration<Exception> enumtr = getIntegrityChecker().getCaughtExceptions().elements();
enumtr.hasMoreElements();) {
- Exception e = (Exception)enumtr.nextElement();
+ Exception e = enumtr.nextElement();
if (!(e instanceof DescriptorException)) {
writer.println(cr);
e.printStackTrace(writer);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/indirection/IndirectSet.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/indirection/IndirectSet.java
index ef966c7..901b456 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/indirection/IndirectSet.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/indirection/IndirectSet.java
@@ -331,7 +331,7 @@
try {
if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
try {
- return (Set<E>)AccessController.doPrivileged(new PrivilegedMethodInvoker(cloneMethod, this.getDelegate(), null));
+ return AccessController.doPrivileged(new PrivilegedMethodInvoker<>(cloneMethod, this.getDelegate(), null));
} catch (PrivilegedActionException exception) {
Exception throwableException = exception.getException();
if (throwableException instanceof IllegalAccessException) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreField.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreField.java
index 9c757d1..2e1b6f5 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreField.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreField.java
@@ -21,7 +21,7 @@
*/
String getName();
- <T> Class<T> getType();
+ Class<?> getType();
/**
* Set the unqualified name of the field.
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/Accessor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/Accessor.java
index bd20024..73c35d1 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/Accessor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/Accessor.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
@@ -125,7 +125,7 @@
* Return the column metadata for the specified
* selection criteria.
*/
- Vector getColumnInfo(String catalog, String schema, String tableName, String columnName, AbstractSession session) throws DatabaseException;
+ Vector<AbstractRecord> getColumnInfo(String catalog, String schema, String tableName, String columnName, AbstractSession session) throws DatabaseException;
/**
* Return the JDBC connection for relational accessors.
@@ -148,7 +148,7 @@
* Return the table metadata for the specified
* selection criteria.
*/
- Vector getTableInfo(String catalog, String schema, String tableName, String[] types, AbstractSession session) throws DatabaseException;
+ Vector<AbstractRecord> getTableInfo(String catalog, String schema, String tableName, String[] types, AbstractSession session) throws DatabaseException;
/**
* Increment the number of calls in progress.
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/BindCallCustomParameter.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/BindCallCustomParameter.java
index 409d275..e5abc8b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/BindCallCustomParameter.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/BindCallCustomParameter.java
@@ -141,13 +141,13 @@
return parameter;
}
- Collection container = (Collection)parameter;
+ Collection<?> container = (Collection<?>)parameter;
DatabaseField nestedType = ordField.getNestedTypeField();
Object[] fields = new Object[container.size()];
int i = 0;
- for (Iterator iter = container.iterator(); iter.hasNext();) {
+ for (Iterator<?> iter = container.iterator(); iter.hasNext();) {
Object element = iter.next();
if (element != null) {
element = convert(element, nestedType, session, connection);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabaseAccessor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabaseAccessor.java
index 0bf5977..87dc2ee 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabaseAccessor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabaseAccessor.java
@@ -759,7 +759,7 @@
}
} else {
boolean hasMultipleResultsSets = call.hasMultipleResultSets();
- Vector results = null;
+ Vector<AbstractRecord> results = null;
boolean hasMoreResultsSets = true;
while (hasMoreResultsSets) {
boolean hasNext = resultSet.next();
@@ -770,14 +770,14 @@
// do not close the result or statement as the rows are being fetched by the thread.
return buildThreadCursoredResult(call, resultSet, statement, metaData, session);
} else {
- results = new Vector(16);
+ results = new Vector<>(16);
while (hasNext) {
results.add(fetchRow(call.getFields(), call.getFieldsArray(), resultSet, metaData, session));
hasNext = resultSet.next();
}
}
} else {
- results = new Vector(0);
+ results = new Vector<>(0);
}
if (result == null) {
if (call.returnMultipleResultSetCollections()) {
@@ -817,7 +817,7 @@
* This allows for the rows to be fetched concurrently to the objects being built.
* This code is not currently publicly supported.
*/
- protected Vector buildThreadCursoredResult(final DatabaseCall dbCall, final ResultSet resultSet, final Statement statement, final ResultSetMetaData metaData, final AbstractSession session) {
+ protected Vector<AbstractRecord> buildThreadCursoredResult(final DatabaseCall dbCall, final ResultSet resultSet, final Statement statement, final ResultSetMetaData metaData, final AbstractSession session) {
final ThreadCursoredList<AbstractRecord> results = new ThreadCursoredList<>(20);
Runnable runnable = new Runnable() {
@Override
@@ -1042,7 +1042,7 @@
*/
protected AbstractRecord fetchRow(Vector<DatabaseField> fields, ResultSet resultSet, ResultSetMetaData metaData, AbstractSession session) throws DatabaseException {
int size = fields.size();
- Vector values = NonSynchronizedVector.newInstance(size);
+ Vector<Object> values = NonSynchronizedVector.newInstance(size);
// PERF: Pass platform and optimize data flag.
DatabasePlatform platform = getPlatform();
boolean optimizeData = platform.shouldOptimizeDataConversion();
@@ -1070,7 +1070,7 @@
* match the number of column names available on the database.
* PERF: This method must be highly optimized.
*/
- public AbstractRecord fetchRow(Vector fields, DatabaseField[] fieldsArray, ResultSet resultSet, ResultSetMetaData metaData, AbstractSession session) throws DatabaseException {
+ public AbstractRecord fetchRow(Vector<DatabaseField> fields, DatabaseField[] fieldsArray, ResultSet resultSet, ResultSetMetaData metaData, AbstractSession session) throws DatabaseException {
int size = fieldsArray.length;
Object[] values = new Object[size];
// PERF: Pass platform and optimize data flag.
@@ -1168,17 +1168,17 @@
* @return a Vector of DatabaseRows.
*/
@Override
- public Vector getColumnInfo(String catalog, String schema, String tableName, String columnName, AbstractSession session) throws DatabaseException {
+ public Vector<AbstractRecord> getColumnInfo(String catalog, String schema, String tableName, String columnName, AbstractSession session) throws DatabaseException {
if (session.shouldLog(SessionLog.FINEST, SessionLog.QUERY)) {// Avoid printing if no logging required.
Object[] args = { catalog, schema, tableName, columnName };
session.log(SessionLog.FINEST, SessionLog.QUERY, "query_column_meta_data_with_column", args, this);
}
- Vector result = new Vector();
+ Vector<AbstractRecord> result = new Vector<>();
ResultSet resultSet = null;
try {
incrementCallCount(session);
resultSet = getConnectionMetaData().getColumns(catalog, schema, tableName, columnName);
- Vector fields = buildSortedFields(null, resultSet, session);
+ Vector<DatabaseField> fields = buildSortedFields(null, resultSet, session);
ResultSetMetaData metaData = resultSet.getMetaData();
while (resultSet.next()) {
@@ -1346,7 +1346,7 @@
*/
protected Object getObjectThroughOptimizedDataConversion(ResultSet resultSet, DatabaseField field, int type, int columnNumber, DatabasePlatform platform, AbstractSession session) throws SQLException {
Object value = this;// Means no optimization, need to distinguish from null.
- Class fieldType = field.type;
+ Class<?> fieldType = field.type;
if (platform.shouldUseGetSetNString() && (type == Types.NVARCHAR || type == Types.NCHAR)) {
value = resultSet.getNString(columnNumber);
@@ -1485,12 +1485,12 @@
* @return a Vector of DatabaseRows.
*/
@Override
- public Vector getTableInfo(String catalog, String schema, String tableName, String[] types, AbstractSession session) throws DatabaseException {
+ public Vector<AbstractRecord> getTableInfo(String catalog, String schema, String tableName, String[] types, AbstractSession session) throws DatabaseException {
if (session.shouldLog(SessionLog.FINEST, SessionLog.QUERY)) {// Avoid printing if no logging required.
Object[] args = { catalog, schema, tableName };
session.log(SessionLog.FINEST, SessionLog.QUERY, "query_column_meta_data", args, this);
}
- Vector result = new Vector();
+ Vector<AbstractRecord> result = new Vector<>();
ResultSet resultSet = null;
try {
incrementCallCount(session);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabaseCall.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabaseCall.java
index 9a870ad..b6c8b39 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabaseCall.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabaseCall.java
@@ -105,7 +105,7 @@
protected Boolean shouldCacheStatement;
// The returned fields.
- transient protected Vector fields;
+ transient protected Vector<DatabaseField> fields;
// PERF: fields array
transient protected DatabaseField[] fieldsArray;
@@ -384,7 +384,7 @@
* The fields expected by the calls result set.
* null means that the fields are unknown and should be built from the result set.
*/
- public Vector getFields() {
+ public Vector<DatabaseField> getFields() {
return fields;
}
@@ -856,13 +856,13 @@
/**
* The fields expected by the calls result set.
*/
- public void setFields(Vector fields) {
+ public void setFields(Vector<DatabaseField> fields) {
this.fields = fields;
if (fields != null) {
int size = fields.size();
this.fieldsArray = new DatabaseField[size];
for (int index = 0; index < size; index++) {
- this.fieldsArray[index] = (DatabaseField)fields.get(index);
+ this.fieldsArray[index] = fields.get(index);
}
} else {
this.fieldsArray = null;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabasePlatform.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabasePlatform.java
index d40fdb4..4b28acd 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabasePlatform.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabasePlatform.java
@@ -223,7 +223,7 @@
* They can be looked up by java Class or by Struct type
*/
protected Map<String, StructConverter> structConverters = null;
- protected Map<Class, StructConverter> typeConverters = null;
+ protected Map<Class<?>, StructConverter> typeConverters = null;
/**
* Some platforms allow a query's maxRows and FirstResult settings to be
@@ -368,7 +368,7 @@
* This map indexes StructConverters by the Java Class they are meant to
* convert
*/
- public Map<Class, StructConverter> getTypeConverters() {
+ public Map<Class<?>, StructConverter> getTypeConverters() {
if (typeConverters == null){
typeConverters = new HashMap<>();
}
@@ -547,7 +547,7 @@
appendByteArray((byte[])dbValue, writer);
}
} else if (dbValue instanceof Collection) {
- nBoundParameters = printValuelist((Collection)dbValue, databaseCall, writer);
+ nBoundParameters = printValuelist((Collection<?>)dbValue, databaseCall, writer);
} else if (typeConverters != null && typeConverters.containsKey(dbValue.getClass())){
dbValue = new BindCallCustomParameter(dbValue);
// custom binding is required, object to be bound is wrapped (example NCHAR, NVARCHAR2, NCLOB on Oracle9)
@@ -1281,14 +1281,14 @@
return getJDBCType(ConversionManager.getObjectClass(field.getType()));
}
} else {
- return getJDBCType((Class)null);
+ return getJDBCType((Class<?>)null);
}
}
/**
* Return the JDBC type for the Java type.
*/
- public int getJDBCType(Class javaType) {
+ public int getJDBCType(Class<?> javaType) {
if (javaType == null) {
return Types.VARCHAR;// Best guess, sometimes we cannot determine type from mapping, this may fail on some drivers, other dont care what type it is.
} else if (javaType == ClassConstants.STRING) {
@@ -1757,10 +1757,10 @@
return nBoundParameters;
}
- public int printValuelist(Collection theObjects, DatabaseCall call, Writer writer) throws IOException {
+ public int printValuelist(Collection<?> theObjects, DatabaseCall call, Writer writer) throws IOException {
int nBoundParameters = 0;
writer.write("(");
- Iterator iterator = theObjects.iterator();
+ Iterator<?> iterator = theObjects.iterator();
while (iterator.hasNext()) {
nBoundParameters = nBoundParameters + appendParameterInternal(call, writer, iterator.next());
if (iterator.hasNext()) {
@@ -1938,7 +1938,7 @@
((TableSequence)getDefaultSequence()).setCounterFieldName(name);
} else {
if (!name.equals((new TableSequence()).getCounterFieldName())) {
- ValidationException.wrongSequenceType(Helper.getShortClassName(getDefaultSequence()), "setCounterFieldName");
+ throw ValidationException.wrongSequenceType(Helper.getShortClassName(getDefaultSequence()), "setCounterFieldName");
}
}
}
@@ -2575,7 +2575,7 @@
statement.setBoolean(index, (Boolean) parameter);
} else if (parameter == null) {
// Normally null is passed as a DatabaseField so the type is included, but in some case may be passed directly.
- statement.setNull(index, getJDBCType((Class)null));
+ statement.setNull(index, getJDBCType((Class<?>)null));
} else if (parameter instanceof DatabaseField) {
setNullFromDatabaseField((DatabaseField)parameter, statement, index);
} else if (parameter instanceof byte[]) {
@@ -2680,7 +2680,7 @@
statement.setBoolean(name, (Boolean) parameter);
} else if (parameter == null) {
// Normally null is passed as a DatabaseField so the type is included, but in some case may be passed directly.
- statement.setNull(name, getJDBCType((Class)null));
+ statement.setNull(name, getJDBCType((Class<?>)null));
} else if (parameter instanceof DatabaseField) {
setNullFromDatabaseField((DatabaseField)parameter, statement, name);
} else if (parameter instanceof byte[]) {
@@ -2984,7 +2984,7 @@
FieldDefinition fieldDef;
//gfbug3307, should use columnDefinition if it was defined.
if ((field.getColumnDefinition()!= null) && (field.getColumnDefinition().length() == 0)) {
- Class<? extends Class> type = ConversionManager.getObjectClass(field.getType());
+ Class<?> type = ConversionManager.getObjectClass(field.getType());
// Default type to VARCHAR, if unknown.
if (type == null) {
type = ConversionManager.getObjectClass(ClassConstants.STRING);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatasourceAccessor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatasourceAccessor.java
index 4544778..b080b07 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatasourceAccessor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatasourceAccessor.java
@@ -92,7 +92,7 @@
/** Keep track of whether the accessor is "connected". */
protected boolean isConnected;
- /** PERF: Cache platform to avoid gets (small but can add up). */
+ /* PERF: Cache platform to avoid gets (small but can add up). */
/** This is also required to ensure all accessors for a session are using the same platform. */
protected DatasourcePlatform platform;
@@ -643,8 +643,8 @@
* database objects.
*/
@Override
- public Vector getColumnInfo(String catalog, String schema, String tableName, String columnName, AbstractSession session) throws DatabaseException {
- return new Vector();
+ public Vector<AbstractRecord> getColumnInfo(String catalog, String schema, String tableName, String columnName, AbstractSession session) throws DatabaseException {
+ return new Vector<>();
}
/**
@@ -673,8 +673,8 @@
* database objects.
*/
@Override
- public Vector getTableInfo(String catalog, String schema, String tableName, String[] types, AbstractSession session) throws DatabaseException {
- return new Vector();
+ public Vector<AbstractRecord> getTableInfo(String catalog, String schema, String tableName, String[] types, AbstractSession session) throws DatabaseException {
+ return new Vector<>();
}
/**
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform.java
index e252a34..fbf23b9 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform.java
@@ -295,13 +295,13 @@
* Return the operator for the operator constant defined in ExpressionOperator.
*/
public ExpressionOperator getOperator(int selector) {
- return (ExpressionOperator)getPlatformOperators().get(selector);
+ return getPlatformOperators().get(selector);
}
/**
* Return any platform-specific operators
*/
- public Map getPlatformOperators() {
+ public Map<Integer, ExpressionOperator> getPlatformOperators() {
if (platformOperators == null) {
synchronized (this) {
if (platformOperators == null) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DynamicSQLBatchWritingMechanism.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DynamicSQLBatchWritingMechanism.java
index 72f6e66..8cf7c91 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DynamicSQLBatchWritingMechanism.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DynamicSQLBatchWritingMechanism.java
@@ -41,7 +41,7 @@
*/
protected List<String> sqlStrings;
- /**
+ /*
* Stores the statement indexes for statements that are using optimistic locking. This allows us to check individual
* statement results on supported platforms
*/
@@ -60,7 +60,7 @@
public DynamicSQLBatchWritingMechanism(DatabaseAccessor databaseAccessor) {
this.databaseAccessor = databaseAccessor;
- this.sqlStrings = new ArrayList();
+ this.sqlStrings = new ArrayList<>();
this.batchSize = 0;
this.maxBatchSize = this.databaseAccessor.getLogin().getPlatform().getMaxBatchWritingSize();
if (this.maxBatchSize == 0) {
@@ -90,9 +90,7 @@
this.usesOptimisticLocking = dbCall.hasOptimisticLock;
this.statementCount++;
// Store the largest queryTimeout on a single call for later use by the single statement in prepareJDK12BatchStatement
- if (dbCall != null) {
- cacheQueryTimeout(session, dbCall);
- }
+ cacheQueryTimeout(session, dbCall);
// feature for bug 4104613, allows users to force statements to flush on execution
if (((ModifyQuery) dbCall.getQuery()).forceBatchStatementExecution()) {
executeBatchedStatements(session);
@@ -112,7 +110,7 @@
public void clear() {
//Bug#419326 : A clone may be holding a reference to this.parameters.
//So, instead of clearing the parameters, just initialize with a new reference.
- this.sqlStrings = new ArrayList();
+ this.sqlStrings = new ArrayList<>();
this.statementCount = executionCount = 0;
this.usesOptimisticLocking = false;
this.batchSize = 0;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/InParameterForCallableStatement.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/InParameterForCallableStatement.java
index b283e97..eb00225 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/InParameterForCallableStatement.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/InParameterForCallableStatement.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.
* Copyright (c) 2019 IBM Corporation. All rights reserved.
*
* This program and the accompanying materials are made available under the
@@ -42,7 +42,7 @@
platform.setParameterValueInDatabaseCall(parameter, statement, parameterName, session);
}
- public Class getType(){
+ public Class<?> getType(){
if ((inField != null) && (inField.getType() != null)) {
return inField.getType();
} else if (inParameter!=null) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/ParameterizedSQLBatchWritingMechanism.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/ParameterizedSQLBatchWritingMechanism.java
index ae144f1..1816465 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/ParameterizedSQLBatchWritingMechanism.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/ParameterizedSQLBatchWritingMechanism.java
@@ -56,7 +56,7 @@
public ParameterizedSQLBatchWritingMechanism(DatabaseAccessor databaseAccessor) {
this.databaseAccessor = databaseAccessor;
- this.parameters = new ArrayList();
+ this.parameters = new ArrayList<>();
this.maxBatchSize = this.databaseAccessor.getLogin().getPlatform().getMaxBatchWritingSize();
if (this.maxBatchSize == 0) {
// the max size was not set on the platform - use default
@@ -113,7 +113,7 @@
this.previousCall = null;
//Bug#419326 : A clone may be holding a reference to this.parameters.
//So, instead of clearing the parameters, just initialize with a new reference.
- this.parameters = new ArrayList();
+ this.parameters = new ArrayList<>();
this.statementCount = 0;
this.executionCount = 0;
this.queryTimeoutCache = DescriptorQueryManager.NoTimeout;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/ObjectBuilder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/ObjectBuilder.java
index 4e63728..429933b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/ObjectBuilder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/ObjectBuilder.java
@@ -101,6 +101,7 @@
import org.eclipse.persistence.internal.sessions.TransformationMappingChangeRecord;
import org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.logging.SessionLog;
import org.eclipse.persistence.mappings.AggregateObjectMapping;
import org.eclipse.persistence.mappings.ContainerMapping;
@@ -3346,7 +3347,7 @@
* Replace the transient attributes of the remote value holders
* with client-side objects.
*/
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
// PERF: Only process relationships.
if (!this.isSimple) {
List<DatabaseMapping> mappings = this.relationshipMappings;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/dynamic/DynamicEntityImpl.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/dynamic/DynamicEntityImpl.java
index 0116b54..e1aa786 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/dynamic/DynamicEntityImpl.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/dynamic/DynamicEntityImpl.java
@@ -42,6 +42,7 @@
import org.eclipse.persistence.internal.sessions.MergeManager;
import org.eclipse.persistence.internal.sessions.ObjectChangeSet;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.queries.FetchGroup;
import org.eclipse.persistence.queries.FetchGroupTracker;
@@ -402,8 +403,8 @@
* @see org.eclipse.persistence.mappings.DatabaseMapping#fixObjectReferences(java.lang.Object, java.util.Map, java.util.Map, org.eclipse.persistence.queries.ObjectLevelReadQuery, org.eclipse.persistence.sessions.remote.RemoteSession)
*/
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects,
- ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects,
+ ObjectLevelReadQuery query, DistributedSession session) {
}
/* (non-Javadoc)
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/dynamic/DynamicPropertiesInitializatonPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/dynamic/DynamicPropertiesInitializatonPolicy.java
index dc69f12..bacad70 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/dynamic/DynamicPropertiesInitializatonPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/dynamic/DynamicPropertiesInitializatonPolicy.java
@@ -28,6 +28,12 @@
public class DynamicPropertiesInitializatonPolicy {
/**
+ * Default constructor.
+ */
+ public DynamicPropertiesInitializatonPolicy() {
+ }
+
+ /**
* After entity is created, initialize all required attributes.
*/
public void initializeProperties(DynamicTypeImpl type, DynamicEntityImpl entity) {
@@ -76,7 +82,7 @@
ForeignReferenceMapping refMapping = (ForeignReferenceMapping)mapping;
if (refMapping.usesIndirection() &&
refMapping.getIndirectionPolicy() instanceof BasicIndirectionPolicy) {
- value = new ValueHolder(value);
+ value = new ValueHolder<>(value);
}
else if (refMapping.isCollectionMapping()) {
value = refMapping.getContainerPolicy().containerInstance();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/SQLSelectStatement.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/SQLSelectStatement.java
index 53064a8..9ed09d2 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/SQLSelectStatement.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/SQLSelectStatement.java
@@ -148,7 +148,7 @@
public SQLSelectStatement() {
this.fields = org.eclipse.persistence.internal.helper.NonSynchronizedVector.newInstance(2);
- this.tables = new ArrayList(4);
+ this.tables = new ArrayList<>(4);
this.requiresAliases = false;
this.useUniqueFieldAliases=false;
this.isAggregateSelect = false;
@@ -419,7 +419,7 @@
DatabaseTable relationAlias = holder.outerJoinedMappingCriteria.aliasForTable(relationTable);
DatabaseTable mapKeyAlias = null;
DatabaseTable mapKeyTable = null;
- List<DatabaseTable> tablesInOrder = new ArrayList();
+ List<DatabaseTable> tablesInOrder = new ArrayList<>();
// glassfish issue 2440: store aliases instead of tables
// in the tablesInOrder. This allows to distinguish source
// and target table in case of an self referencing relationship.
@@ -554,7 +554,7 @@
// Print outer joins
boolean firstTable = true;
- List<DatabaseTable> outerJoinedAliases = new ArrayList(4); // Must keep track of tables used for outer join so no normal join is given
+ List<DatabaseTable> outerJoinedAliases = new ArrayList<>(4); // Must keep track of tables used for outer join so no normal join is given
// prepare to lock tables if required
boolean shouldPrintUpdateClause = printer.getPlatform().shouldPrintForUpdateClause()
@@ -626,7 +626,7 @@
printer.getWriter().write(" GROUP BY ");
- Vector newFields = new Vector();
+ Vector<DatabaseField> newFields = new Vector<>();
// to avoid printing a comma before the first field
printer.setIsFirstElementPrinted(false);
for (Expression expression : getGroupByExpressions()) {
@@ -976,7 +976,7 @@
* no ambiguity
*/
public void computeTablesFromTables() {
- Map<DatabaseTable, DatabaseTable> allTables = new Hashtable();
+ Map<DatabaseTable, DatabaseTable> allTables = new Hashtable<>();
AsOfClause asOfClause = null;
if (getBuilder().hasAsOfClause() && !getBuilder().getSession().getProject().hasGenericHistorySupport()) {
@@ -1159,7 +1159,7 @@
*/
public List<Expression> getOrderByExpressions() {
if (orderByExpressions == null) {
- orderByExpressions = new ArrayList(4);
+ orderByExpressions = new ArrayList<>(4);
}
return orderByExpressions;
@@ -1167,7 +1167,7 @@
public List<Expression> getUnionExpressions() {
if (unionExpressions == null) {
- unionExpressions = new ArrayList(4);
+ unionExpressions = new ArrayList<>(4);
}
return unionExpressions;
}
@@ -1182,7 +1182,7 @@
*/
public List<OuterJoinExpressionHolder> getOuterJoinExpressionsHolders() {
if (outerJoinExpressionHolders == null) {
- outerJoinExpressionHolders = new ArrayList(4);
+ outerJoinExpressionHolders = new ArrayList<>(4);
}
return outerJoinExpressionHolders;
@@ -1237,10 +1237,10 @@
table = getTableAliases().get(alias);
}
if (this.additionalTargetAliases == null) {
- this.additionalTargetAliases = new ArrayList();
- this.additionalTargetTables = new ArrayList();
- this.additionalJoinOnExpression = new ArrayList();
- this.additionalTargetIsDescriptorTable = new ArrayList();
+ this.additionalTargetAliases = new ArrayList<>();
+ this.additionalTargetTables = new ArrayList<>();
+ this.additionalJoinOnExpression = new ArrayList<>();
+ this.additionalTargetIsDescriptorTable = new ArrayList<>();
}
this.additionalTargetAliases.add(alias);
this.additionalTargetTables.add(table);
@@ -1654,7 +1654,7 @@
* Order by the objects primary key or all fields for aggregates.
*/
protected void normalizeOrderBy(Expression builder, List<Expression> allExpressions, Map<Expression, Expression> clonedExpressions, AbstractSession session) {
- List<Expression> newOrderBys = new ArrayList(this.orderByExpressions.size());
+ List<Expression> newOrderBys = new ArrayList<>(this.orderByExpressions.size());
for (Expression orderBy : this.orderByExpressions) {
orderBy = rebuildExpression(orderBy, builder, clonedExpressions);
Expression base = orderBy;
@@ -1686,7 +1686,7 @@
// Check if a non basic mapping.
orderBys = expression.getMapping().getOrderByNormalizedExpressions(expression);
} else if (base.isExpressionBuilder()) {
- orderBys = new ArrayList(expression.getDescriptor().getPrimaryKeyFields().size());
+ orderBys = new ArrayList<>(expression.getDescriptor().getPrimaryKeyFields().size());
for (DatabaseField field : expression.getDescriptor().getPrimaryKeyFields()) {
orderBys.add(expression.getField(field));
}
@@ -1722,9 +1722,9 @@
/**
* Print the SQL representation of the statement on a stream.
*/
- public Vector printSQL(ExpressionSQLPrinter printer) {
+ public Vector<DatabaseField> printSQL(ExpressionSQLPrinter printer) {
try {
- Vector selectFields = null;
+ Vector<DatabaseField> selectFields = null;
printer.setRequiresDistinct(shouldDistinctBeUsed());
if (hasUnionExpressions()) {
@@ -2133,17 +2133,17 @@
/**
* INTERNAL:
*/
- protected void writeFieldsFromExpression(ExpressionSQLPrinter printer, Expression expression, Vector newFields) {
+ protected void writeFieldsFromExpression(ExpressionSQLPrinter printer, Expression expression, Vector<DatabaseField> newFields) {
expression.writeFields(printer, newFields, this);
}
/**
* INTERNAL:
*/
- protected Vector writeFieldsIn(ExpressionSQLPrinter printer) {
+ protected Vector<DatabaseField> writeFieldsIn(ExpressionSQLPrinter printer) {
this.lastTable = null;
- Vector newFields = NonSynchronizedVector.newInstance();
+ Vector<DatabaseField> newFields = NonSynchronizedVector.newInstance();
for (Object next : getFields()) {
// Fields can be null placeholders for fetch groups.
@@ -2152,7 +2152,7 @@
writeFieldsFromExpression(printer, (Expression)next, newFields);
} else {
writeField(printer, (DatabaseField)next);
- newFields.add(next);
+ newFields.add((DatabaseField) next);
}
}
}
@@ -2306,9 +2306,9 @@
*
*/
protected void sortOuterJoinExpressionHolders(List<OuterJoinExpressionHolder> holders) {
- Map<DatabaseTable, OuterJoinExpressionHolder> targetAliasToHolders = new HashMap();
- Set<DatabaseTable> aliases = new HashSet();
- Map<DatabaseTable, Integer> aliasToIndexes = new HashMap(aliases.size());
+ Map<DatabaseTable, OuterJoinExpressionHolder> targetAliasToHolders = new HashMap<>();
+ Set<DatabaseTable> aliases = new HashSet<>();
+ Map<DatabaseTable, Integer> aliasToIndexes = new HashMap<>(aliases.size());
int i = 0;
for(OuterJoinExpressionHolder holder : holders) {
targetAliasToHolders.put(holder.targetAlias, holder);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DatabaseField.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DatabaseField.java
index dbf0b92..a02ddc5 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DatabaseField.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DatabaseField.java
@@ -71,7 +71,7 @@
* Respective Java type desired for the field's value, used to optimize performance and for binding.
* PERF: Allow direct variable access from getObject.
*/
- public transient Class type;
+ public transient Class<?> type;
public String typeName; // shadow variable - string name of above Class type variable
/**
@@ -91,7 +91,7 @@
/**
* If this is set, it will be used in determining equality (unless delimiters are used) and the hashcode.
- * @see getNameForComparisons
+ * @see #getNameForComparisons()
*/
protected String nameForComparisons;
@@ -369,7 +369,7 @@
}
@Override
- public Class getType() {
+ public Class<?> getType() {
if ((this.type == null) && (this.typeName != null)) {
convertClassNamesToClasses(getClass().getClassLoader());
}
@@ -626,7 +626,7 @@
* this is used to optimize performance, and for binding.
*/
@Override
- public void setType(Class type) {
+ public void setType(Class<?> type) {
this.type = type;
if (this.type != null && typeName == null) {
typeName = this.type.getName();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/BackupValueHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/BackupValueHolder.java
index 811eb1a..f4b6d34 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/BackupValueHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/BackupValueHolder.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
@@ -26,33 +26,33 @@
* @since 10.1.3
* @author James Sutherland
*/
-public class BackupValueHolder extends DatabaseValueHolder {
+public class BackupValueHolder<T> extends DatabaseValueHolder<T> {
/** Stores the original uow clone's value holder. */
- protected ValueHolderInterface<?> unitOfWorkValueHolder;
+ protected ValueHolderInterface<T> unitOfWorkValueHolder;
- public BackupValueHolder(ValueHolderInterface<?> unitOfWorkValueHolder) {
+ public BackupValueHolder(ValueHolderInterface<T> unitOfWorkValueHolder) {
this.unitOfWorkValueHolder = unitOfWorkValueHolder;
}
@Override
public boolean isPessimisticLockingValueHolder() {
- return ((DatabaseValueHolder)this.unitOfWorkValueHolder).isPessimisticLockingValueHolder();
+ return ((DatabaseValueHolder<T>)this.unitOfWorkValueHolder).isPessimisticLockingValueHolder();
}
@Override
- public Object instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder unitOfWorkValueHolder) {
- return ((DatabaseValueHolder)this.unitOfWorkValueHolder).instantiateForUnitOfWorkValueHolder(unitOfWorkValueHolder);
+ public T instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder<T> unitOfWorkValueHolder) {
+ return ((DatabaseValueHolder<T>)this.unitOfWorkValueHolder).instantiateForUnitOfWorkValueHolder(unitOfWorkValueHolder);
}
@Override
public AbstractRecord getRow() {
- return ((DatabaseValueHolder)this.unitOfWorkValueHolder).getRow();
+ return ((DatabaseValueHolder<T>)this.unitOfWorkValueHolder).getRow();
}
@Override
public AbstractSession getSession() {
- return ((DatabaseValueHolder)this.unitOfWorkValueHolder).getSession();
+ return ((DatabaseValueHolder<T>)this.unitOfWorkValueHolder).getSession();
}
/**
@@ -60,7 +60,7 @@
* then first instantiate it to obtain the backup value.
*/
@Override
- public Object instantiate() {
+ public T instantiate() {
// Ensures instantiation of the original, and setting of this back value holder's value.
return this.unitOfWorkValueHolder.getValue();
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/BasicIndirectionPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/BasicIndirectionPolicy.java
index adeacde..658757b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/BasicIndirectionPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/BasicIndirectionPolicy.java
@@ -28,6 +28,7 @@
import org.eclipse.persistence.internal.sessions.AbstractSession;
import org.eclipse.persistence.internal.sessions.MergeManager;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.internal.sessions.remote.RemoteSessionController;
import org.eclipse.persistence.internal.sessions.remote.RemoteUnitOfWork;
import org.eclipse.persistence.internal.sessions.remote.RemoteValueHolder;
@@ -65,7 +66,8 @@
public Object backupCloneAttribute(Object attributeValue, Object clone, Object backup, UnitOfWorkImpl unitOfWork) {
//no need to check if the attribute is a valueholder because closeAttribute
// should always be called first
- ValueHolderInterface<?> valueHolder = (ValueHolderInterface)attributeValue;// cast the value
+ @SuppressWarnings({"unchecked"})
+ ValueHolderInterface<Object> valueHolder = (ValueHolderInterface<Object>)attributeValue;// cast the value
ValueHolderInterface<Object> result = null;
// delay instantiation until absolutely necessary
if ((!(valueHolder instanceof UnitOfWorkValueHolder)) || valueHolder.isInstantiated()) {
@@ -74,8 +76,8 @@
} else {
// Backup value holder will be instantiated when uow vh is, to get original value,
// backup must also know about the uow vh, in case it needs to get its value.
- result = new BackupValueHolder(valueHolder);
- ((UnitOfWorkValueHolder)valueHolder).setBackupValueHolder(result);
+ result = new BackupValueHolder<>(valueHolder);
+ ((UnitOfWorkValueHolder<Object>)valueHolder).setBackupValueHolder(result);
}
return result;
@@ -102,7 +104,8 @@
*/
@Override
public Object cloneAttribute(Object attributeValue, Object original, CacheKey cacheKey, Object clone, Integer refreshCascade, AbstractSession cloningSession, boolean buildDirectlyFromRow) {
- ValueHolderInterface<?> valueHolder = (ValueHolderInterface<?>) attributeValue;
+ @SuppressWarnings({"unchecked"})
+ ValueHolderInterface<Object> valueHolder = (ValueHolderInterface<Object>) attributeValue;
ValueHolderInterface<Object> result;
if (!buildDirectlyFromRow && cloningSession.isUnitOfWork() && ((UnitOfWorkImpl)cloningSession).isOriginalNewObject(original)) {
@@ -110,8 +113,8 @@
// This can occur if an existing serialized object is attempt to be registered as new.
if ((valueHolder instanceof DatabaseValueHolder)
&& (! valueHolder.isInstantiated())
- && (((DatabaseValueHolder) valueHolder).getSession() == null)
- && (! ((DatabaseValueHolder) valueHolder).isSerializedRemoteUnitOfWorkValueHolder())) {
+ && (((DatabaseValueHolder<?>) valueHolder).getSession() == null)
+ && (! ((DatabaseValueHolder<?>) valueHolder).isSerializedRemoteUnitOfWorkValueHolder())) {
throw DescriptorException.attemptToRegisterDeadIndirection(original, this.mapping);
}
if (this.mapping.getRelationshipPartner() == null) {
@@ -122,18 +125,18 @@
// because of this call the entire tree should be recursively cloned
AbstractRecord row = null;
if (valueHolder instanceof DatabaseValueHolder) {
- row = ((DatabaseValueHolder)valueHolder).getRow();
+ row = ((DatabaseValueHolder<?>)valueHolder).getRow();
}
result = this.mapping.createCloneValueHolder(valueHolder, original, clone, row, cloningSession, buildDirectlyFromRow);
Object newObject = this.mapping.buildCloneForPartObject(valueHolder.getValue(), original, cacheKey, clone, cloningSession, refreshCascade, false, false);
- ((UnitOfWorkValueHolder)result).privilegedSetValue(newObject);
- ((UnitOfWorkValueHolder)result).setInstantiated();
+ ((UnitOfWorkValueHolder<Object>)result).privilegedSetValue(newObject);
+ ((UnitOfWorkValueHolder<?>)result).setInstantiated();
}
} else {
AbstractRecord row = null;
if (valueHolder instanceof DatabaseValueHolder) {
- row = ((DatabaseValueHolder)valueHolder).getRow();
+ row = ((DatabaseValueHolder<?>)valueHolder).getRow();
}
result = this.mapping.createCloneValueHolder(valueHolder, original, clone, row, cloningSession, buildDirectlyFromRow);
}
@@ -149,7 +152,7 @@
@Override
public Object extractPrimaryKeyForReferenceObject(Object referenceObject, AbstractSession session) {
if (objectIsEasilyInstantiated(referenceObject)) {
- return super.extractPrimaryKeyForReferenceObject(((ValueHolderInterface)referenceObject).getValue(), session);
+ return super.extractPrimaryKeyForReferenceObject(((ValueHolderInterface<?>)referenceObject).getValue(), session);
} else {
return getOneToOneMapping().extractPrimaryKeysForReferenceObjectFromRow(extractReferenceRow(referenceObject));
}
@@ -167,7 +170,7 @@
if (this.objectIsInstantiated(referenceObject)) {
return null;
} else {
- return ((DatabaseValueHolder)referenceObject).getRow();
+ return ((DatabaseValueHolder<?>)referenceObject).getRow();
}
}
@@ -178,11 +181,11 @@
* with client-side objects.
*/
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
Object attributeValue = this.mapping.getAttributeValueFromObject(object);
//bug 4147755 if it is not a Remote Valueholder then treat as if there was no VH...
if (attributeValue instanceof RemoteValueHolder){
- RemoteValueHolder rvh = (RemoteValueHolder)this.mapping.getAttributeValueFromObject(object);
+ RemoteValueHolder<?> rvh = (RemoteValueHolder<?>)this.mapping.getAttributeValueFromObject(object);
rvh.setSession(session);
rvh.setMapping(this.mapping);
@@ -215,7 +218,7 @@
*/
@Override
public Object getOriginalIndirectionObjectForMerge(Object unitOfWorkIndirectionObject, AbstractSession session) {
- DatabaseValueHolder holder = (DatabaseValueHolder)getOriginalIndirectionObject(unitOfWorkIndirectionObject, session);
+ DatabaseValueHolder<?> holder = (DatabaseValueHolder<?>)getOriginalIndirectionObject(unitOfWorkIndirectionObject, session);
if (holder != null && holder.getSession()!= null){
holder.setSession(session);
}
@@ -230,14 +233,14 @@
@Override
public Object getOriginalValueHolder(Object unitOfWorkIndirectionObject, AbstractSession session) {
if ((unitOfWorkIndirectionObject instanceof UnitOfWorkValueHolder)
- && (((UnitOfWorkValueHolder)unitOfWorkIndirectionObject).getRemoteUnitOfWork() != null)) {
- ValueHolderInterface<?> valueHolder = ((UnitOfWorkValueHolder) unitOfWorkIndirectionObject).getWrappedValueHolder();
+ && (((UnitOfWorkValueHolder<?>)unitOfWorkIndirectionObject).getRemoteUnitOfWork() != null)) {
+ ValueHolderInterface<?> valueHolder = ((UnitOfWorkValueHolder<?>) unitOfWorkIndirectionObject).getWrappedValueHolder();
if (valueHolder == null) {
// For remote session the original value holder is transient,
// so the value must be found in the registry or created.
- RemoteUnitOfWork remoteUnitOfWork = (RemoteUnitOfWork)((UnitOfWorkValueHolder)unitOfWorkIndirectionObject).getRemoteUnitOfWork();
+ RemoteUnitOfWork remoteUnitOfWork = (RemoteUnitOfWork)((UnitOfWorkValueHolder<?>)unitOfWorkIndirectionObject).getRemoteUnitOfWork();
RemoteSessionController controller = remoteUnitOfWork.getParentSessionController();
- ObjID id = ((UnitOfWorkValueHolder) unitOfWorkIndirectionObject).getWrappedValueHolderRemoteID();
+ ObjID id = ((UnitOfWorkValueHolder<?>) unitOfWorkIndirectionObject).getWrappedValueHolderRemoteID();
if (id != null) {
// This value holder may be on the server, or the client,
// on the server, the controller should exists, so can lock up in it,
@@ -245,30 +248,30 @@
if (controller != null) {
valueHolder = controller.getRemoteValueHolders().get(id);
} else if (session.isRemoteSession()) {
- valueHolder = new RemoteValueHolder(id);
- ((RemoteValueHolder)valueHolder).setSession(session);
+ valueHolder = new RemoteValueHolder<>(id);
+ ((RemoteValueHolder<?>)valueHolder).setSession(session);
}
}
if (valueHolder == null) {
// Must build a new value holder.
- Object object = ((UnitOfWorkValueHolder) unitOfWorkIndirectionObject).getSourceObject();
+ Object object = ((UnitOfWorkValueHolder<?>) unitOfWorkIndirectionObject).getSourceObject();
AbstractRecord row = this.mapping.getDescriptor().getObjectBuilder().buildRow(object, session, WriteType.UNDEFINED);
ReadObjectQuery query = new ReadObjectQuery();
query.setSession(session);
- valueHolder = (ValueHolderInterface) this.mapping.valueFromRow(row, null, query, true);
+ valueHolder = (ValueHolderInterface<?>) this.mapping.valueFromRow(row, null, query, true);
}
return valueHolder;
}
}
if (unitOfWorkIndirectionObject instanceof WrappingValueHolder) {
- ValueHolderInterface<?> valueHolder = ((WrappingValueHolder)unitOfWorkIndirectionObject).getWrappedValueHolder();
+ ValueHolderInterface<?> valueHolder = ((WrappingValueHolder<?>)unitOfWorkIndirectionObject).getWrappedValueHolder();
if (!session.isProtectedSession()){
- while (valueHolder instanceof WrappingValueHolder && ((WrappingValueHolder)valueHolder).getWrappedValueHolder() != null){
- valueHolder = ((WrappingValueHolder)valueHolder).getWrappedValueHolder();
+ while (valueHolder instanceof WrappingValueHolder && ((WrappingValueHolder<?>)valueHolder).getWrappedValueHolder() != null){
+ valueHolder = ((WrappingValueHolder<?>)valueHolder).getWrappedValueHolder();
}
}
- if ((valueHolder != null) && (valueHolder instanceof DatabaseValueHolder)) {
- ((DatabaseValueHolder) valueHolder).releaseWrappedValueHolder(session);
+ if (valueHolder instanceof DatabaseValueHolder) {
+ ((DatabaseValueHolder<?>) valueHolder).releaseWrappedValueHolder(session);
}
return valueHolder;
} else {
@@ -281,7 +284,7 @@
*/
@Override
public void reset(Object target) {
- this.mapping.setAttributeValueInObject(target, new ValueHolder());
+ this.mapping.setAttributeValueInObject(target, new ValueHolder<>());
}
/**
@@ -292,7 +295,7 @@
@Override
public Object getRealAttributeValueFromObject(Object object, Object attribute) {
if (attribute instanceof ValueHolderInterface) {
- return ((ValueHolderInterface)attribute).getValue();
+ return ((ValueHolderInterface<?>)attribute).getValue();
} else {
return attribute;
}
@@ -304,7 +307,7 @@
* specified remote value holder.
*/
@Override
- public Object getValueFromRemoteValueHolder(RemoteValueHolder remoteValueHolder) {
+ public Object getValueFromRemoteValueHolder(RemoteValueHolder<?> remoteValueHolder) {
return remoteValueHolder.getValue();
}
@@ -313,13 +316,13 @@
* The method validateAttributeOfInstantiatedObject(Object attributeValue) fixes the value of the attributeValue
* in cases where it is null and indirection requires that it contain some specific data structure. Return whether this will happen.
* This method is used to help determine if indirection has been triggered
- * @see validateAttributeOfInstantiatedObject(Object attributeValue)
+ * @see #validateAttributeOfInstantiatedObject(Object attributeValue)
*/
@Override
public boolean isAttributeValueFullyBuilt(Object attributeValue){
//Bug#413833 : If attributeValue is an instance of ValueHolder,
//it has not been built into the clone previously
- return attributeValue != null && !(attributeValue instanceof ValueHolder && ((ValueHolder)attributeValue).isNewlyWeavedValueHolder());
+ return attributeValue != null && !(attributeValue instanceof ValueHolder && ((ValueHolder<?>)attributeValue).isNewlyWeavedValueHolder());
}
/**
@@ -328,7 +331,7 @@
*/
@Override
public void iterateOnAttributeValue(DescriptorIterator iterator, Object attributeValue) {
- iterator.iterateValueHolderForMapping((ValueHolderInterface)attributeValue, this.mapping);
+ iterator.iterateValueHolderForMapping((ValueHolderInterface<?>)attributeValue, this.mapping);
}
/**
@@ -339,7 +342,7 @@
@Override
public void mergeRemoteValueHolder(Object clientSideDomainObject, Object serverSideDomainObject, MergeManager mergeManager) {
// This will always be a remote value holder coming from the server,
- RemoteValueHolder serverValueHolder = (RemoteValueHolder)this.mapping.getAttributeValueFromObject(serverSideDomainObject);
+ RemoteValueHolder<?> serverValueHolder = (RemoteValueHolder<?>)this.mapping.getAttributeValueFromObject(serverSideDomainObject);
mergeClientIntoServerValueHolder(serverValueHolder, mergeManager);
this.mapping.setAttributeValueInObject(clientSideDomainObject, serverValueHolder);
@@ -354,7 +357,7 @@
*/
@Override
public Object nullValueFromRow() {
- return new ValueHolder();
+ return new ValueHolder<>();
}
/**
@@ -363,7 +366,7 @@
*/
@Override
public boolean objectIsInstantiated(Object object) {
- return ((ValueHolderInterface)object).isInstantiated();
+ return ((ValueHolderInterface<?>)object).isInstantiated();
}
/**
@@ -373,7 +376,7 @@
@Override
public boolean objectIsEasilyInstantiated(Object object) {
if (object instanceof DatabaseValueHolder) {
- return ((DatabaseValueHolder)object).isEasilyInstantiated();
+ return ((DatabaseValueHolder<?>)object).isEasilyInstantiated();
} else {
return true;
}
@@ -385,6 +388,7 @@
* In this case, place the value inside the target's ValueHolder.
*/
@Override
+ @SuppressWarnings({"unchecked"})
public void setRealAttributeValueInObject(Object target, Object attributeValue) {
ValueHolderInterface<Object> holder = (ValueHolderInterface<Object>)this.mapping.getAttributeValueFromObject(target);
if (holder == null) {
@@ -401,9 +405,10 @@
* Used only by transparent indirection.
*/
@Override
+ @SuppressWarnings({"unchecked"})
public void setSourceObject(Object sourceObject, Object attributeValue) {
if (attributeValue instanceof QueryBasedValueHolder) {
- ((QueryBasedValueHolder)attributeValue).setSourceObject(sourceObject);
+ ((QueryBasedValueHolder<Object>)attributeValue).setSourceObject(sourceObject);
}
}
@@ -412,7 +417,7 @@
* Return whether the type is appropriate for the indirection policy.
* In this case, the attribute type MUST be ValueHolderInterface.
*/
- protected boolean typeIsValid(Class attributeType) {
+ protected boolean typeIsValid(Class<?> attributeType) {
return attributeType == ClassConstants.ValueHolderInterface_Class ||
attributeType == ClassConstants.WeavedAttributeValueHolderInterface_Class;
}
@@ -431,7 +436,7 @@
// this allows for indirection attributes to not be instantiated in the constructor as they
// are typically replaced when reading or cloning so is very inefficient to initialize.
if (attributeValue == null) {
- return new ValueHolder();
+ return new ValueHolder<>();
}
if (!(attributeValue instanceof ValueHolderInterface)) {
throw DescriptorException.valueHolderInstantiationMismatch(attributeValue, this.mapping);
@@ -447,7 +452,7 @@
* In this case, the attribute type MUST be ValueHolderInterface.
*/
@Override
- public void validateDeclaredAttributeType(Class attributeType, IntegrityChecker checker) throws DescriptorException {
+ public void validateDeclaredAttributeType(Class<?> attributeType, IntegrityChecker checker) throws DescriptorException {
super.validateDeclaredAttributeType(attributeType, checker);
if (!this.typeIsValid(attributeType)) {
checker.handleError(DescriptorException.attributeAndMappingWithIndirectionMismatch(this.mapping));
@@ -462,7 +467,7 @@
* In this case, the return type MUST be ValueHolderInterface.
*/
@Override
- public void validateGetMethodReturnType(Class returnType, IntegrityChecker checker) throws DescriptorException {
+ public void validateGetMethodReturnType(Class<?> returnType, IntegrityChecker checker) throws DescriptorException {
super.validateGetMethodReturnType(returnType, checker);
if (!this.typeIsValid(returnType)) {
checker.handleError(DescriptorException.returnAndMappingWithIndirectionMismatch(this.mapping));
@@ -477,7 +482,7 @@
* In this case, the parameter type MUST be ValueHolderInterface.
*/
@Override
- public void validateSetMethodParameterType(Class parameterType, IntegrityChecker checker) throws DescriptorException {
+ public void validateSetMethodParameterType(Class<?> parameterType, IntegrityChecker checker) throws DescriptorException {
super.validateSetMethodParameterType(parameterType, checker);
if (!this.typeIsValid(parameterType)) {
checker.handleError(DescriptorException.parameterAndMappingWithIndirectionMismatch(this.mapping));
@@ -492,7 +497,7 @@
*/
@Override
public Object valueFromBatchQuery(ReadQuery batchQuery, AbstractRecord row, ObjectLevelReadQuery originalQuery, CacheKey parentCacheKey) {
- return new BatchValueHolder(batchQuery, row, this.getForeignReferenceMapping(), originalQuery, parentCacheKey);
+ return new BatchValueHolder<>(batchQuery, row, this.getForeignReferenceMapping(), originalQuery, parentCacheKey);
}
/**
@@ -504,7 +509,7 @@
*/
@Override
public Object valueFromMethod(Object object, AbstractRecord row, AbstractSession session) {
- return new TransformerBasedValueHolder(this.getTransformationMapping().getAttributeTransformer(), object, row, session);
+ return new TransformerBasedValueHolder<>(this.getTransformationMapping().getAttributeTransformer(), object, row, session);
}
/**
@@ -515,7 +520,7 @@
*/
@Override
public Object valueFromQuery(ReadQuery query, AbstractRecord row, Object sourceObject, AbstractSession session) {
- return new QueryBasedValueHolder(query, sourceObject, row, session);
+ return new QueryBasedValueHolder<>(query, sourceObject, row, session);
}
/**
@@ -526,7 +531,7 @@
*/
@Override
public Object valueFromQuery(ReadQuery query, AbstractRecord row, AbstractSession session) {
- return new QueryBasedValueHolder(query, row, session);
+ return new QueryBasedValueHolder<>(query, row, session);
}
/**
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/BatchValueHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/BatchValueHolder.java
index b87623b..6d723d3 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/BatchValueHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/BatchValueHolder.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
@@ -29,7 +29,7 @@
* The query is also shared by all other value holders within the batch and it must be ensured that the query is only
* executed once. Concurrency must also be maintained across all of the value holders in the batch.
*/
-public class BatchValueHolder extends QueryBasedValueHolder {
+public class BatchValueHolder<T> extends QueryBasedValueHolder<T> {
protected transient ForeignReferenceMapping mapping;
protected transient ObjectLevelReadQuery originalQuery;
protected transient CacheKey parentCacheKey;
@@ -57,8 +57,9 @@
* since they all share the same query, the extractResultFromBatchQuery method must be synchronized.
*/
@Override
- protected Object instantiate(AbstractSession session) throws EclipseLinkException {
- return this.mapping.extractResultFromBatchQuery(this.query, this.parentCacheKey, this.row, session, this.originalQuery);
+ @SuppressWarnings({"unchecked"})
+ protected T instantiate(AbstractSession session) throws EclipseLinkException {
+ return (T) this.mapping.extractResultFromBatchQuery(this.query, this.parentCacheKey, this.row, session, this.originalQuery);
}
/**
@@ -75,14 +76,15 @@
* as the batch is local to the unit of work.
*/
@Override
- public Object instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder unitOfWorkValueHolder) {
+ @SuppressWarnings({"unchecked"})
+ public T instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder<T> unitOfWorkValueHolder) {
UnitOfWorkImpl unitOfWork = unitOfWorkValueHolder.getUnitOfWork();
ReadQuery localQuery = unitOfWork.getBatchQueries().get(this.query);
if (localQuery == null) {
localQuery = (ReadQuery)this.query.clone();
unitOfWork.getBatchQueries().put(this.query, localQuery);
}
- return this.mapping.extractResultFromBatchQuery(localQuery, this.parentCacheKey, this.row, unitOfWorkValueHolder.getUnitOfWork(), this.originalQuery);
+ return (T) this.mapping.extractResultFromBatchQuery(localQuery, this.parentCacheKey, this.row, unitOfWorkValueHolder.getUnitOfWork(), this.originalQuery);
}
/**
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/CacheBasedValueHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/CacheBasedValueHolder.java
index 760d106..afe4c91 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/CacheBasedValueHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/CacheBasedValueHolder.java
@@ -36,7 +36,7 @@
* @author gyorke
* @since EclipseLink 1.1
*/
-public class CacheBasedValueHolder extends DatabaseValueHolder {
+public class CacheBasedValueHolder<T> extends DatabaseValueHolder<T> {
protected transient ForeignReferenceMapping mapping;
protected Object[] references;
@@ -61,7 +61,8 @@
* If null is returned then the calling UOW will instantiate as normal.
*/
@Override
- public Object getValue(UnitOfWorkImpl uow) {
+ @SuppressWarnings({"unchecked"})
+ public T getValue(UnitOfWorkImpl uow) {
if (this.references != null && this.references.length != 0){
if (mapping.isCollectionMapping()){
Collection<Object> result = uow.getIdentityMapAccessorInstance().getAllFromIdentityMapWithEntityPK(this.references, this.mapping.getReferenceDescriptor()).values();
@@ -71,25 +72,26 @@
for (Object object : result){
cp.addInto(object, container, uow);
}
- return container;
+ return (T) container;
}
}else{
- return uow.getIdentityMapAccessorInstance().getFromIdentityMap(this.references[0], this.mapping.getReferenceClass());
+ return (T) uow.getIdentityMapAccessorInstance().getFromIdentityMap(this.references[0], this.mapping.getReferenceClass());
}
}
return null;
}
@Override
- protected Object instantiate() throws DatabaseException {
+ protected T instantiate() throws DatabaseException {
return instantiate(this.session);
}
- protected Object instantiate(AbstractSession localSession) throws DatabaseException {
+ @SuppressWarnings({"unchecked"})
+ protected T instantiate(AbstractSession localSession) throws DatabaseException {
if (session == null){
throw ValidationException.instantiatingValueholderWithNullSession();
}
- return mapping.valueFromPKList(references, row, localSession);
+ return (T) mapping.valueFromPKList(references, row, localSession);
}
/**
@@ -104,7 +106,7 @@
* Note: This method is not thread-safe. It must be used in a synchronized manner
*/
@Override
- public Object instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder unitOfWorkValueHolder) {
+ public T instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder<T> unitOfWorkValueHolder) {
return instantiate(unitOfWorkValueHolder.getUnitOfWork());
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ContainerIndirectionPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ContainerIndirectionPolicy.java
index 9832c0a..6a31b46 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ContainerIndirectionPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ContainerIndirectionPolicy.java
@@ -67,26 +67,26 @@
public Object backupCloneAttribute(Object attributeValue, Object clone, Object backup, UnitOfWorkImpl unitOfWork) {
IndirectContainer container = (IndirectContainer)attributeValue;
ValueHolderInterface valueHolder = container.getValueHolder();
- ValueHolderInterface newValueHolder = (ValueHolderInterface)super.backupCloneAttribute(valueHolder, clone, backup, unitOfWork);
+ ValueHolderInterface<?> newValueHolder = (ValueHolderInterface<?>)super.backupCloneAttribute(valueHolder, clone, backup, unitOfWork);
return buildContainer(newValueHolder);
}
/**
* Build a container with the initialized constructor.
*/
- protected IndirectContainer buildContainer(ValueHolderInterface valueHolder) {
+ protected IndirectContainer buildContainer(ValueHolderInterface<?> valueHolder) {
try {
IndirectContainer container = null;
if (getContainerConstructor().getParameterTypes().length == 0) {
if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
- container = (IndirectContainer)AccessController.doPrivileged(new PrivilegedInvokeConstructor(getContainerConstructor(), new Object[0]));
+ container = (IndirectContainer)AccessController.doPrivileged(new PrivilegedInvokeConstructor<>(getContainerConstructor(), new Object[0]));
}else{
container = (IndirectContainer)PrivilegedAccessHelper.invokeConstructor(getContainerConstructor(), new Object[0]);
}
container.setValueHolder(valueHolder);
} else {
if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
- container = (IndirectContainer)AccessController.doPrivileged(new PrivilegedInvokeConstructor(getContainerConstructor(), new Object[] { valueHolder }));
+ container = (IndirectContainer)AccessController.doPrivileged(new PrivilegedInvokeConstructor<>(getContainerConstructor(), new Object[] { valueHolder }));
}else{
container = (IndirectContainer)PrivilegedAccessHelper.invokeConstructor(getContainerConstructor(), new Object[] { valueHolder });
}
@@ -119,8 +119,8 @@
@Override
public Object cloneAttribute(Object attributeValue, Object original, CacheKey cacheKey, Object clone, Integer refreshCascade, AbstractSession cloningSession, boolean buildDirectlyFromRow) {
IndirectContainer container = (IndirectContainer)attributeValue;
- ValueHolderInterface valueHolder = container.getValueHolder();
- ValueHolderInterface newValueHolder = (ValueHolderInterface)super.cloneAttribute(valueHolder, original, cacheKey, clone, refreshCascade, cloningSession, buildDirectlyFromRow);
+ ValueHolderInterface<?> valueHolder = container.getValueHolder();
+ ValueHolderInterface<?> newValueHolder = (ValueHolderInterface<?>)super.cloneAttribute(valueHolder, original, cacheKey, clone, refreshCascade, cloningSession, buildDirectlyFromRow);
return buildContainer(newValueHolder);
}
@@ -175,10 +175,10 @@
public Object getOriginalIndirectionObject(Object unitOfWorkIndirectionObject, AbstractSession session) {
IndirectContainer container = (IndirectContainer)unitOfWorkIndirectionObject;
if (container.getValueHolder() instanceof UnitOfWorkValueHolder) {
- ValueHolderInterface<?> valueHolder = ((UnitOfWorkValueHolder)container.getValueHolder()).getWrappedValueHolder();
+ ValueHolderInterface<?> valueHolder = ((UnitOfWorkValueHolder<?>)container.getValueHolder()).getWrappedValueHolder();
if ((valueHolder == null) && session.isRemoteUnitOfWork()) {
RemoteSessionController controller = ((RemoteUnitOfWork)session).getParentSessionController();
- valueHolder = controller.getRemoteValueHolders().get(((UnitOfWorkValueHolder)container.getValueHolder()).getWrappedValueHolderRemoteID());
+ valueHolder = controller.getRemoteValueHolders().get(((UnitOfWorkValueHolder<?>)container.getValueHolder()).getWrappedValueHolderRemoteID());
}
return buildContainer(valueHolder);
} else {
@@ -193,7 +193,7 @@
@Override
public Object getOriginalIndirectionObjectForMerge(Object unitOfWorkIndirectionObject, AbstractSession session) {
IndirectContainer container = (IndirectContainer) getOriginalIndirectionObject(unitOfWorkIndirectionObject, session);
- DatabaseValueHolder holder = (DatabaseValueHolder)container.getValueHolder();
+ DatabaseValueHolder<?> holder = (DatabaseValueHolder<?>)container.getValueHolder();
if (holder != null && holder.getSession()!= null){
holder.setSession(session);
}
@@ -268,7 +268,7 @@
* The method validateAttributeOfInstantiatedObject(Object attributeValue) fixes the value of the attributeValue
* in cases where it is null and indirection requires that it contain some specific data structure. Return whether this will happen.
* This method is used to help determine if indirection has been triggered
- * @see validateAttributeOfInstantiatedObject(Object attributeValue)
+ * @see #validateAttributeOfInstantiatedObject(Object attributeValue)
*/
@Override
public boolean isAttributeValueFullyBuilt(Object attributeValue){
@@ -294,7 +294,7 @@
*/
@Override
public Object nullValueFromRow() {
- return buildContainer(new ValueHolder());
+ return buildContainer(new ValueHolder<>());
}
/**
@@ -302,7 +302,7 @@
*/
@Override
public void reset(Object target) {
- getMapping().setAttributeValueInObject(target, buildContainer(new ValueHolder()));
+ getMapping().setAttributeValueInObject(target, buildContainer(new ValueHolder<>()));
}
/**
@@ -320,9 +320,9 @@
*/
@Override
public boolean objectIsEasilyInstantiated(Object object) {
- ValueHolderInterface valueHolder = ((IndirectContainer)object).getValueHolder();
+ ValueHolderInterface<?> valueHolder = ((IndirectContainer)object).getValueHolder();
if (valueHolder instanceof DatabaseValueHolder) {
- return ((DatabaseValueHolder)valueHolder).isEasilyInstantiated();
+ return ((DatabaseValueHolder<?>)valueHolder).isEasilyInstantiated();
} else {
return true;
}
@@ -361,7 +361,7 @@
* allow the conatinerClass to be assigned to it.
*/
@Override
- protected boolean typeIsValid(Class attributeType) {
+ protected boolean typeIsValid(Class<?> attributeType) {
return ClassConstants.IndirectContainer_Class.isAssignableFrom(attributeType) || attributeType.isAssignableFrom(getContainerClass());
}
@@ -388,7 +388,7 @@
*/
@Override
public Object valueFromBatchQuery(ReadQuery batchQuery, AbstractRecord row, ObjectLevelReadQuery originalQuery, CacheKey parentCacheKey) {
- ValueHolderInterface valueHolder = (ValueHolderInterface)super.valueFromBatchQuery(batchQuery, row, originalQuery, parentCacheKey);
+ ValueHolderInterface<?> valueHolder = (ValueHolderInterface<?>)super.valueFromBatchQuery(batchQuery, row, originalQuery, parentCacheKey);
return buildContainer(valueHolder);
}
@@ -401,7 +401,7 @@
*/
@Override
public Object valueFromMethod(Object object, AbstractRecord row, AbstractSession session) {
- ValueHolderInterface valueHolder = (ValueHolderInterface)super.valueFromMethod(object, row, session);
+ ValueHolderInterface<?> valueHolder = (ValueHolderInterface<?>)super.valueFromMethod(object, row, session);
return buildContainer(valueHolder);
}
@@ -413,7 +413,7 @@
*/
@Override
public Object valueFromQuery(ReadQuery query, AbstractRecord row, AbstractSession session) {
- ValueHolderInterface valueHolder = (ValueHolderInterface)super.valueFromQuery(query, row, session);
+ ValueHolderInterface<?> valueHolder = (ValueHolderInterface<?>)super.valueFromQuery(query, row, session);
return buildContainer(valueHolder);
}
@@ -425,6 +425,6 @@
*/
@Override
public Object valueFromRow(Object object) {
- return buildContainer(new ValueHolder(object));
+ return buildContainer(new ValueHolder<>(object));
}
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/DatabaseValueHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/DatabaseValueHolder.java
index a64fb44..d1be9e5 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/DatabaseValueHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/DatabaseValueHolder.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,10 +33,10 @@
* @see ValueHolderInterface
* @author Dorin Sandu
*/
-public abstract class DatabaseValueHolder implements WeavedAttributeValueHolderInterface, Cloneable, Serializable {
+public abstract class DatabaseValueHolder<T> implements WeavedAttributeValueHolderInterface<T>, Cloneable, Serializable {
/** Stores the object after it is read from the database. */
- protected volatile Object value;
+ protected volatile T value;
/** Indicates whether the object has been read from the database or not. */
protected volatile boolean isInstantiated;
@@ -56,6 +56,12 @@
*/
protected boolean isCoordinatedWithProperty = false;
+ /**
+ * Default constructor.
+ */
+ protected DatabaseValueHolder() {
+ }
+
@Override
public Object clone() {
try {
@@ -79,7 +85,7 @@
return session;
}
- public ValueHolderInterface getWrappedValueHolder() {
+ public ValueHolderInterface<?> getWrappedValueHolder() {
return null;
}
@@ -87,7 +93,7 @@
* Return the object.
*/
@Override
- public Object getValue() {
+ public T getValue() {
boolean instantiated = this.isInstantiated;
if (!instantiated) {
synchronized (this) {
@@ -108,7 +114,7 @@
* Process against the UOW and attempt to load a local copy before going to the shared cache
* If null is returned then the calling UOW will instantiate as normal.
*/
- public Object getValue(UnitOfWorkImpl uow) {
+ public T getValue(UnitOfWorkImpl uow) {
//This method simply returns null as this will cause the UOWVH to trigger
//the relationship normally.
return null;
@@ -117,7 +123,7 @@
/**
* Instantiate the object.
*/
- protected abstract Object instantiate() throws DatabaseException;
+ protected abstract T instantiate() throws DatabaseException;
/**
* Triggers UnitOfWork valueholders directly without triggering the wrapped
@@ -131,7 +137,7 @@
* Note: Implementations of this method are not necessarily thread-safe. They must
* be used in a synchronized manner
*/
- public abstract Object instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder unitOfWorkValueHolder);
+ public abstract T instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder<T> unitOfWorkValueHolder);
/**
* This method is used as part of the implementation of WeavedAttributeValueHolderInterface
@@ -218,7 +224,7 @@
/**
* Set the object. This is used only by the privileged methods. One must be very careful in using this method.
*/
- public void privilegedSetValue(Object value) {
+ public void privilegedSetValue(T value) {
this.value = value;
isCoordinatedWithProperty = false;
}
@@ -299,7 +305,7 @@
* Set the object.
*/
@Override
- public void setValue(Object value) {
+ public void setValue(T value) {
this.value = value;
setInstantiated();
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/EISOneToManyQueryBasedValueHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/EISOneToManyQueryBasedValueHolder.java
index c882f19..8a6e4ba 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/EISOneToManyQueryBasedValueHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/EISOneToManyQueryBasedValueHolder.java
@@ -30,7 +30,7 @@
* For composite source foreign keys EIS 1-m's a query must be performed
* for each primary key, so a different type of value holder is required.
*/
-public class EISOneToManyQueryBasedValueHolder extends QueryBasedValueHolder {
+public class EISOneToManyQueryBasedValueHolder<T> extends QueryBasedValueHolder<T> {
private EISOneToManyMapping mapping;
public EISOneToManyQueryBasedValueHolder(EISOneToManyMapping mapping, ReadQuery query, AbstractRecord sourceRow, AbstractSession session) {
@@ -39,12 +39,13 @@
}
@Override
- protected Object instantiate(AbstractSession session) throws DatabaseException {
+ protected T instantiate(AbstractSession session) throws DatabaseException {
Vector<AbstractRecord> rows = this.mapping.getForeignKeyRows(this.getRow(), session);
int size = rows.size();
ContainerPolicy cp = ((ReadAllQuery)this.getQuery()).getContainerPolicy();
- Object returnValue = cp.containerInstance(size);
+ @SuppressWarnings({"unchecked"})
+ T returnValue = (T) cp.containerInstance(size);
for (int i = 0; i < size; i++) {
AbstractRecord nextRow = rows.get(i);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/IndirectionPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/IndirectionPolicy.java
index 3f745a5..a7a12ad 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/IndirectionPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/IndirectionPolicy.java
@@ -26,6 +26,7 @@
import org.eclipse.persistence.internal.sessions.AbstractSession;
import org.eclipse.persistence.internal.sessions.MergeManager;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.internal.sessions.remote.RemoteValueHolder;
import org.eclipse.persistence.mappings.CollectionMapping;
import org.eclipse.persistence.mappings.DatabaseMapping;
@@ -160,7 +161,7 @@
* Replace the transient attributes of the remote value holders
* with client-side objects.
*/
- public abstract void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session);
+ public abstract void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session);
/**
* INTERNAL:
@@ -243,14 +244,14 @@
* Extract and return the appropriate value from the
* specified remote value holder.
*/
- public abstract Object getValueFromRemoteValueHolder(RemoteValueHolder remoteValueHolder);
+ public abstract Object getValueFromRemoteValueHolder(RemoteValueHolder<?> remoteValueHolder);
/**
* INTERNAL:
* The method validateAttributeOfInstantiatedObject(Object attributeValue) fixes the value of the attributeValue
* in cases where it is null and indirection requires that it contain some specific data structure. Return whether this will happen.
* This method is used to help determine if indirection has been triggered
- * @see validateAttributeOfInstantiatedObject(Object attributeValue)
+ * @see #validateAttributeOfInstantiatedObject(Object)
*/
public boolean isAttributeValueFullyBuilt(Object attributeValue){
return true;
@@ -286,7 +287,7 @@
* Replace the client value holder with the server value holder,
* after copying some of the settings from the client value holder.
*/
- protected void mergeClientIntoServerValueHolder(RemoteValueHolder serverValueHolder, MergeManager mergeManager) {
+ protected void mergeClientIntoServerValueHolder(RemoteValueHolder<?> serverValueHolder, MergeManager mergeManager) {
serverValueHolder.setMapping(this.mapping);
serverValueHolder.setSession(mergeManager.getSession());
@@ -447,7 +448,7 @@
* indirection policy. If it is incorrect, add an exception to the
* integrity checker.
*/
- public void validateDeclaredAttributeType(Class attributeType, IntegrityChecker checker) throws DescriptorException {
+ public void validateDeclaredAttributeType(Class<?> attributeType, IntegrityChecker checker) throws DescriptorException {
// by default, do nothing
}
@@ -456,7 +457,7 @@
* Verify that attributeType is an appropriate collection type for the
* indirection policy. If it is incorrect, add an exception to the integrity checker.
*/
- public void validateDeclaredAttributeTypeForCollection(Class attributeType, IntegrityChecker checker) throws DescriptorException {
+ public void validateDeclaredAttributeTypeForCollection(Class<?> attributeType, IntegrityChecker checker) throws DescriptorException {
// by default, do nothing
}
@@ -466,7 +467,7 @@
* indirection policy. If it is incorrect, add an exception
* to the integrity checker.
*/
- public void validateGetMethodReturnType(Class returnType, IntegrityChecker checker) throws DescriptorException {
+ public void validateGetMethodReturnType(Class<?> returnType, IntegrityChecker checker) throws DescriptorException {
// by default, do nothing
}
@@ -475,7 +476,7 @@
* Verify that getter returnType is an appropriate collection type for the
* indirection policy. If it is incorrect, add an exception to the integrity checker.
*/
- public void validateGetMethodReturnTypeForCollection(Class returnType, IntegrityChecker checker) throws DescriptorException {
+ public void validateGetMethodReturnTypeForCollection(Class<?> returnType, IntegrityChecker checker) throws DescriptorException {
// by default, do nothing
}
@@ -485,7 +486,7 @@
* indirection policy. If it is incorrect, add an exception
* to the integrity checker.
*/
- public void validateSetMethodParameterType(Class parameterType, IntegrityChecker checker) throws DescriptorException {
+ public void validateSetMethodParameterType(Class<?> parameterType, IntegrityChecker checker) throws DescriptorException {
// by default, do nothing
}
@@ -494,7 +495,7 @@
* Verify that setter parameterType is an appropriate collection type for the
* indirection policy. If it is incorrect, add an exception to the integrity checker.
*/
- public void validateSetMethodParameterTypeForCollection(Class parameterType, IntegrityChecker checker) throws DescriptorException {
+ public void validateSetMethodParameterTypeForCollection(Class<?> parameterType, IntegrityChecker checker) throws DescriptorException {
// by default, do nothing
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/NoIndirectionPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/NoIndirectionPolicy.java
index 94b59e1..f69ce3d 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/NoIndirectionPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/NoIndirectionPolicy.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
@@ -28,6 +28,7 @@
import org.eclipse.persistence.internal.sessions.AbstractRecord;
import org.eclipse.persistence.internal.sessions.AbstractSession;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.internal.sessions.remote.RemoteValueHolder;
import org.eclipse.persistence.queries.ObjectLevelReadQuery;
import org.eclipse.persistence.queries.ReadQuery;
@@ -91,7 +92,7 @@
* In this case, the type MUST be a Vector (or, in the case of jdk1.2,
* Collection or Map).
*/
- protected boolean collectionTypeIsValid(Class collectionType) {
+ protected boolean collectionTypeIsValid(Class<?> collectionType) {
return getCollectionMapping().getContainerPolicy().isValidContainerType(collectionType);
}
@@ -114,7 +115,7 @@
* with client-side objects.
*/
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
this.mapping.fixRealObjectReferences(object, objectDescriptors, processedObjects, query, session);
}
@@ -155,7 +156,7 @@
* specified remote value holder.
*/
@Override
- public Object getValueFromRemoteValueHolder(RemoteValueHolder remoteValueHolder) {
+ public Object getValueFromRemoteValueHolder(RemoteValueHolder<?> remoteValueHolder) {
throw DescriptorException.invalidIndirectionPolicyOperation(this, "getValueFromRemoteValueHolder");
}
@@ -203,7 +204,7 @@
* Return whether the type is appropriate for the indirection policy.
* In this case, the attribute type CANNOT be ValueHolderInterface.
*/
- protected boolean typeIsValid(Class attributeType) {
+ protected boolean typeIsValid(Class<?> attributeType) {
return attributeType != ClassConstants.ValueHolderInterface_Class;
}
@@ -225,7 +226,7 @@
* In this case, the attribute type CANNOT be ValueHolderInterface.
*/
@Override
- public void validateDeclaredAttributeType(Class attributeType, IntegrityChecker checker) throws DescriptorException {
+ public void validateDeclaredAttributeType(Class<?> attributeType, IntegrityChecker checker) throws DescriptorException {
super.validateDeclaredAttributeType(attributeType, checker);
if (!this.typeIsValid(attributeType)) {
checker.handleError(DescriptorException.attributeAndMappingWithoutIndirectionMismatch(this.mapping));
@@ -240,7 +241,7 @@
* Collection or Map).
*/
@Override
- public void validateDeclaredAttributeTypeForCollection(Class attributeType, IntegrityChecker checker) throws DescriptorException {
+ public void validateDeclaredAttributeTypeForCollection(Class<?> attributeType, IntegrityChecker checker) throws DescriptorException {
super.validateDeclaredAttributeTypeForCollection(attributeType, checker);
if (!this.collectionTypeIsValid(attributeType)) {
InterfaceContainerPolicy policy = (InterfaceContainerPolicy)getCollectionMapping().getContainerPolicy();
@@ -256,7 +257,7 @@
* In this case, the return type CANNOT be ValueHolderInterface.
*/
@Override
- public void validateGetMethodReturnType(Class returnType, IntegrityChecker checker) throws DescriptorException {
+ public void validateGetMethodReturnType(Class<?> returnType, IntegrityChecker checker) throws DescriptorException {
super.validateGetMethodReturnType(returnType, checker);
if (!this.typeIsValid(returnType)) {
checker.handleError(DescriptorException.returnAndMappingWithoutIndirectionMismatch(this.mapping));
@@ -271,7 +272,7 @@
* Collection or Map).
*/
@Override
- public void validateGetMethodReturnTypeForCollection(Class returnType, IntegrityChecker checker) throws DescriptorException {
+ public void validateGetMethodReturnTypeForCollection(Class<?> returnType, IntegrityChecker checker) throws DescriptorException {
super.validateGetMethodReturnTypeForCollection(returnType, checker);
if (!this.collectionTypeIsValid(returnType)) {
checker.handleError(DescriptorException.getMethodReturnTypeNotValid(getCollectionMapping()));
@@ -286,7 +287,7 @@
* In this case, the parameter type CANNOT be ValueHolderInterface.
*/
@Override
- public void validateSetMethodParameterType(Class parameterType, IntegrityChecker checker) throws DescriptorException {
+ public void validateSetMethodParameterType(Class<?> parameterType, IntegrityChecker checker) throws DescriptorException {
super.validateSetMethodParameterType(parameterType, checker);
if (!this.typeIsValid(parameterType)) {
checker.handleError(DescriptorException.parameterAndMappingWithoutIndirectionMismatch(this.mapping));
@@ -301,7 +302,7 @@
* Collection or Map).
*/
@Override
- public void validateSetMethodParameterTypeForCollection(Class parameterType, IntegrityChecker checker) throws DescriptorException {
+ public void validateSetMethodParameterTypeForCollection(Class<?> parameterType, IntegrityChecker checker) throws DescriptorException {
super.validateSetMethodParameterTypeForCollection(parameterType, checker);
if (!this.collectionTypeIsValid(parameterType)) {
checker.handleError(DescriptorException.setMethodParameterTypeNotValid(getCollectionMapping()));
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProtectedValueHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProtectedValueHolder.java
index 793bba8..8ad3052 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProtectedValueHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProtectedValueHolder.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
@@ -28,19 +28,19 @@
* @author Gordon Yorke
* @since EclipseLink 2.2
*/
-public class ProtectedValueHolder extends DatabaseValueHolder implements WrappingValueHolder{
+public class ProtectedValueHolder<T> extends DatabaseValueHolder<T> implements WrappingValueHolder<T> {
- protected transient ValueHolderInterface<?> wrappedValueHolder;
+ protected transient ValueHolderInterface<T> wrappedValueHolder;
protected transient DatabaseMapping mapping;
- public ProtectedValueHolder(ValueHolderInterface<?> attributeValue, DatabaseMapping mapping, AbstractSession cloningSession) {
+ public ProtectedValueHolder(ValueHolderInterface<T> attributeValue, DatabaseMapping mapping, AbstractSession cloningSession) {
this.wrappedValueHolder = attributeValue;
this.mapping = mapping;
this.session = cloningSession;
}
@Override
- protected Object instantiate() throws DatabaseException {
+ protected T instantiate() throws DatabaseException {
if (this.session == null){
throw ValidationException.instantiatingValueholderWithNullSession();
}
@@ -48,18 +48,19 @@
// wrapped valueholder or the ProtectedValueHolder would not have been created.
Integer refreshCascade = null;
if (wrappedValueHolder instanceof QueryBasedValueHolder){
- refreshCascade = ((QueryBasedValueHolder)getWrappedValueHolder()).getRefreshCascadePolicy();
+ refreshCascade = ((QueryBasedValueHolder<T>)getWrappedValueHolder()).getRefreshCascadePolicy();
}
- Object clone = mapping.buildCloneForPartObject(this.wrappedValueHolder.getValue(),null, null, null, this.session, refreshCascade, true, true);
+ @SuppressWarnings({"unchecked"})
+ T clone = (T) mapping.buildCloneForPartObject(this.wrappedValueHolder.getValue(),null, null, null, this.session, refreshCascade, true, true);
// Bug 414801
if (wrappedValueHolder.isInstantiated() && refreshCascade != null) {
- ((QueryBasedValueHolder)getWrappedValueHolder()).setRefreshCascadePolicy(null);
+ ((QueryBasedValueHolder<T>)getWrappedValueHolder()).setRefreshCascadePolicy(null);
}
return clone;
}
@Override
- public Object instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder unitOfWorkValueHolder) {
+ public T instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder<T> unitOfWorkValueHolder) {
throw ValidationException.operationNotSupported("instantiateForUnitOfWorkValueHolder");
}
@@ -69,7 +70,7 @@
}
@Override
- public ValueHolderInterface<?> getWrappedValueHolder() {
+ public ValueHolderInterface<T> getWrappedValueHolder() {
return wrappedValueHolder;
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionHandler.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionHandler.java
index 52a345f..f52c713 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionHandler.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionHandler.java
@@ -40,8 +40,8 @@
* @author Rick Barkhouse
* @since TopLink 3.0
*/
-public class ProxyIndirectionHandler implements InvocationHandler, Serializable {
- private ValueHolderInterface<?> valueHolder;
+public class ProxyIndirectionHandler<T> implements InvocationHandler, Serializable {
+ private ValueHolderInterface<T> valueHolder;
// =====================================================================
@@ -60,7 +60,7 @@
*
* Store the value holder.
*/
- private ProxyIndirectionHandler(ValueHolderInterface valueHolder) {
+ private ProxyIndirectionHandler(ValueHolderInterface<T> valueHolder) {
this.valueHolder = valueHolder;
}
@@ -126,7 +126,7 @@
*
* Utility method to create a new proxy object.
*/
- public static Object newProxyInstance(Class anInterface, Class[] interfaces, ValueHolderInterface valueHolder) {
+ public static <T> Object newProxyInstance(Class<?> anInterface, Class<?>[] interfaces, ValueHolderInterface<T> valueHolder) {
ClassLoader classLoader = null;
if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
try{
@@ -137,7 +137,7 @@
}else{
classLoader = PrivilegedAccessHelper.getClassLoaderForClass(anInterface);
}
- return Proxy.newProxyInstance(classLoader, interfaces, new ProxyIndirectionHandler(valueHolder));
+ return Proxy.newProxyInstance(classLoader, interfaces, new ProxyIndirectionHandler<>(valueHolder));
}
// =====================================================================
@@ -147,7 +147,7 @@
*
* Get the ValueHolder associated with this handler.
*/
- public ValueHolderInterface<?> getValueHolder() {
+ public ValueHolderInterface<T> getValueHolder() {
return this.valueHolder;
}
@@ -158,7 +158,7 @@
*
* Set the ValueHolder associated with this handler.
*/
- public void setValueHolder(ValueHolderInterface<?> value) {
+ public void setValueHolder(ValueHolderInterface<T> value) {
this.valueHolder = value;
}
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionPolicy.java
index 19baa81..baee885 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionPolicy.java
@@ -59,14 +59,14 @@
* @since TopLink 3.0
*/
public class ProxyIndirectionPolicy extends BasicIndirectionPolicy {
- private Class[] targetInterfaces;
+ private final Class<?>[] targetInterfaces;
- public ProxyIndirectionPolicy(Class[] targetInterfaces) {
+ public ProxyIndirectionPolicy(Class<?>[] targetInterfaces) {
this.targetInterfaces = targetInterfaces;
}
public ProxyIndirectionPolicy() {
- this.targetInterfaces = new Class[] { };
+ this.targetInterfaces = new Class<?>[] { };
}
/**
@@ -101,7 +101,7 @@
*/
@Override
public Object valueFromRow(Object object) {
- ValueHolderInterface valueHolder = new ValueHolder(object);
+ ValueHolderInterface<?> valueHolder = new ValueHolder<>(object);
return ProxyIndirectionHandler.newProxyInstance(object.getClass(), targetInterfaces, valueHolder);
}
@@ -124,7 +124,7 @@
} catch (Exception e) {
return null;
}
- ValueHolderInterface valueHolder = new QueryBasedValueHolder(query, row, session);
+ ValueHolderInterface<?> valueHolder = new QueryBasedValueHolder<>(query, row, session);
return ProxyIndirectionHandler.newProxyInstance(descriptor.getJavaClass(), targetInterfaces, valueHolder);
}
@@ -137,7 +137,7 @@
*/
@Override
public Object valueFromMethod(Object object, AbstractRecord row, AbstractSession session) {
- ValueHolderInterface valueHolder = new TransformerBasedValueHolder(this.getTransformationMapping().getAttributeTransformer(), object, row, session);
+ ValueHolderInterface<?> valueHolder = new TransformerBasedValueHolder<>(this.getTransformationMapping().getAttributeTransformer(), object, row, session);
return ProxyIndirectionHandler.newProxyInstance(object.getClass(), targetInterfaces, valueHolder);
}
@@ -159,7 +159,7 @@
d = originalQuery.getDescriptor().getInterfacePolicy().getChildDescriptors().get(0);
}
if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
- object = AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(d.getJavaClass()));
+ object = AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<>(d.getJavaClass()));
}else{
object = PrivilegedAccessHelper.newInstanceFromClass(d.getJavaClass());
}
@@ -168,7 +168,7 @@
e.printStackTrace();
return null;
}
- ValueHolderInterface valueHolder = new BatchValueHolder(batchQuery, row, this.getForeignReferenceMapping(), originalQuery, parentCacheKey);
+ ValueHolderInterface<?> valueHolder = new BatchValueHolder<>(batchQuery, row, this.getForeignReferenceMapping(), originalQuery, parentCacheKey);
return ProxyIndirectionHandler.newProxyInstance(object.getClass(), targetInterfaces, valueHolder);
}
@@ -180,7 +180,7 @@
@Override
public boolean objectIsInstantiated(Object object) {
if (object instanceof Proxy) {
- ProxyIndirectionHandler handler = (ProxyIndirectionHandler)Proxy.getInvocationHandler(object);
+ ProxyIndirectionHandler<?> handler = (ProxyIndirectionHandler<?>)Proxy.getInvocationHandler(object);
ValueHolderInterface<?> valueHolder = handler.getValueHolder();
return valueHolder.isInstantiated();
} else {
@@ -195,10 +195,10 @@
@Override
public boolean objectIsEasilyInstantiated(Object object) {
if (object instanceof Proxy) {
- ProxyIndirectionHandler handler = (ProxyIndirectionHandler)Proxy.getInvocationHandler(object);
+ ProxyIndirectionHandler<?> handler = (ProxyIndirectionHandler<?>)Proxy.getInvocationHandler(object);
ValueHolderInterface<?> valueHolder = handler.getValueHolder();
if (valueHolder instanceof DatabaseValueHolder) {
- return ((DatabaseValueHolder)valueHolder).isEasilyInstantiated();
+ return ((DatabaseValueHolder<?>)valueHolder).isEasilyInstantiated();
}
}
return true;
@@ -232,7 +232,7 @@
@Override
public Object getRealAttributeValueFromObject(Object obj, Object object) {
if (object instanceof Proxy) {
- ProxyIndirectionHandler handler = (ProxyIndirectionHandler)Proxy.getInvocationHandler(object);
+ ProxyIndirectionHandler<?> handler = (ProxyIndirectionHandler<?>)Proxy.getInvocationHandler(object);
ValueHolderInterface<?> valueHolder = handler.getValueHolder();
return valueHolder.getValue();
} else {
@@ -246,7 +246,7 @@
*/
public static Object getValueFromProxy(Object value) {
if (Proxy.isProxyClass(value.getClass())) {
- return ((ProxyIndirectionHandler)Proxy.getInvocationHandler(value)).getValueHolder().getValue();
+ return ((ProxyIndirectionHandler<?>)Proxy.getInvocationHandler(value)).getValueHolder().getValue();
}
return value;
}
@@ -267,10 +267,10 @@
@Override
public Object getOriginalIndirectionObject(Object unitOfWorkIndirectionObject, AbstractSession session) {
if (unitOfWorkIndirectionObject instanceof UnitOfWorkValueHolder) {
- ValueHolderInterface<?> valueHolder = ((UnitOfWorkValueHolder)unitOfWorkIndirectionObject).getWrappedValueHolder();
+ ValueHolderInterface<?> valueHolder = ((UnitOfWorkValueHolder<?>)unitOfWorkIndirectionObject).getWrappedValueHolder();
if ((valueHolder == null) && session.isRemoteUnitOfWork()) {
RemoteSessionController controller = ((RemoteUnitOfWork)session).getParentSessionController();
- valueHolder = controller.getRemoteValueHolders().get(((UnitOfWorkValueHolder)unitOfWorkIndirectionObject).getWrappedValueHolderRemoteID());
+ valueHolder = controller.getRemoteValueHolders().get(((UnitOfWorkValueHolder<?>)unitOfWorkIndirectionObject).getWrappedValueHolderRemoteID());
}
return valueHolder;
} else {
@@ -284,7 +284,7 @@
* remote value holders with client-side objects.
*/
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
//org.eclipse.persistence.internal.helper.Helper.toDo("*** Something tells me this isn't going to work. *** [X]");
}
@@ -299,13 +299,13 @@
return null;
}
- ProxyIndirectionHandler handler = (ProxyIndirectionHandler)Proxy.getInvocationHandler(referenceObject);
+ ProxyIndirectionHandler<?> handler = (ProxyIndirectionHandler<?>)Proxy.getInvocationHandler(referenceObject);
ValueHolderInterface<?> valueHolder = handler.getValueHolder();
if (valueHolder.isInstantiated()) {
return null;
} else {
- return ((DatabaseValueHolder)valueHolder).getRow();
+ return ((DatabaseValueHolder<?>)valueHolder).getRow();
}
}
@@ -317,31 +317,32 @@
* row, putting it in the shared cache, and then cloning the original.
*/
@Override
+ @SuppressWarnings({"unchecked"})
public Object cloneAttribute(Object attributeValue, Object original, CacheKey cacheKey, Object clone, Integer refreshCascade, AbstractSession cloningSession, boolean buildDirectlyFromRow) {
if (!(attributeValue instanceof Proxy)) {
boolean isExisting = !cloningSession.isUnitOfWork() || (((UnitOfWorkImpl)cloningSession).isObjectRegistered(clone) && (!((UnitOfWorkImpl)cloningSession).isOriginalNewObject(original)));
return this.getMapping().buildCloneForPartObject(attributeValue, original, null, clone, cloningSession, refreshCascade, isExisting, !buildDirectlyFromRow);
}
- ValueHolderInterface newValueHolder;
- ProxyIndirectionHandler handler = (ProxyIndirectionHandler)Proxy.getInvocationHandler(attributeValue);
- ValueHolderInterface<?> oldValueHolder = handler.getValueHolder();
+ ValueHolderInterface<Object> newValueHolder;
+ ProxyIndirectionHandler<Object> handler = (ProxyIndirectionHandler<Object>)Proxy.getInvocationHandler(attributeValue);
+ ValueHolderInterface<Object> oldValueHolder = handler.getValueHolder();
if (!buildDirectlyFromRow && cloningSession.isUnitOfWork() && ((UnitOfWorkImpl)cloningSession).isOriginalNewObject(original)) {
// CR#3156435 Throw a meaningful exception if a serialized/dead value holder is detected.
// This can occur if an existing serialized object is attempt to be registered as new.
if ((oldValueHolder instanceof DatabaseValueHolder)
&& (! oldValueHolder.isInstantiated())
- && (((DatabaseValueHolder) oldValueHolder).getSession() == null)
- && (! ((DatabaseValueHolder) oldValueHolder).isSerializedRemoteUnitOfWorkValueHolder())) {
+ && (((DatabaseValueHolder<?>) oldValueHolder).getSession() == null)
+ && (! ((DatabaseValueHolder<?>) oldValueHolder).isSerializedRemoteUnitOfWorkValueHolder())) {
throw DescriptorException.attemptToRegisterDeadIndirection(original, getMapping());
}
- newValueHolder = new ValueHolder();
+ newValueHolder = new ValueHolder<>();
newValueHolder.setValue(this.getMapping().buildCloneForPartObject(oldValueHolder.getValue(), original, null, clone, cloningSession, refreshCascade, false, false));
} else {
AbstractRecord row = null;
if (oldValueHolder instanceof DatabaseValueHolder) {
- row = ((DatabaseValueHolder)oldValueHolder).getRow();
+ row = ((DatabaseValueHolder<?>)oldValueHolder).getRow();
}
newValueHolder = this.getMapping().createCloneValueHolder(oldValueHolder, original, clone, row, cloningSession, buildDirectlyFromRow);
}
@@ -354,20 +355,21 @@
* Return a backup clone of the attribute.
*/
@Override
+ @SuppressWarnings({"unchecked"})
public Object backupCloneAttribute(Object attributeValue, Object clone, Object backup, UnitOfWorkImpl unitOfWork) {
if (!(attributeValue instanceof Proxy)) {
return this.getMapping().buildBackupCloneForPartObject(attributeValue, clone, backup, unitOfWork);
}
- ProxyIndirectionHandler handler = (ProxyIndirectionHandler)Proxy.getInvocationHandler(attributeValue);
- ValueHolderInterface<?> unitOfWorkValueHolder = handler.getValueHolder();
- ValueHolderInterface<?> backupValueHolder = null;
+ ProxyIndirectionHandler<Object> handler = (ProxyIndirectionHandler<Object>)Proxy.getInvocationHandler(attributeValue);
+ ValueHolderInterface<Object> unitOfWorkValueHolder = handler.getValueHolder();
+ ValueHolderInterface<Object> backupValueHolder = null;
if ((!(unitOfWorkValueHolder instanceof UnitOfWorkValueHolder)) || unitOfWorkValueHolder.isInstantiated()) {
- backupValueHolder = (ValueHolderInterface<?>) super.backupCloneAttribute(unitOfWorkValueHolder, clone, backup, unitOfWork);
+ backupValueHolder = (ValueHolderInterface<Object>) super.backupCloneAttribute(unitOfWorkValueHolder, clone, backup, unitOfWork);
} else {
// CR#2852176 Use a BackupValueHolder to handle replacing of the original.
- backupValueHolder = new BackupValueHolder(unitOfWorkValueHolder);
- ((UnitOfWorkValueHolder)unitOfWorkValueHolder).setBackupValueHolder(backupValueHolder);
+ backupValueHolder = new BackupValueHolder<>(unitOfWorkValueHolder);
+ ((UnitOfWorkValueHolder<Object>)unitOfWorkValueHolder).setBackupValueHolder(backupValueHolder);
}
return ProxyIndirectionHandler.newProxyInstance(attributeValue.getClass(), targetInterfaces, backupValueHolder);
@@ -380,7 +382,7 @@
@Override
public void iterateOnAttributeValue(DescriptorIterator iterator, Object attributeValue) {
if (attributeValue instanceof Proxy) {
- ProxyIndirectionHandler handler = (ProxyIndirectionHandler)Proxy.getInvocationHandler(attributeValue);
+ ProxyIndirectionHandler<?> handler = (ProxyIndirectionHandler<?>)Proxy.getInvocationHandler(attributeValue);
ValueHolderInterface<?> valueHolder = handler.getValueHolder();
iterator.iterateValueHolderForMapping(valueHolder, this.getMapping());
@@ -412,7 +414,7 @@
* integrity checker. In this case, the attribute type must be contained in targetInterfaces.
*/
@Override
- public void validateDeclaredAttributeType(Class attributeType, IntegrityChecker checker) throws DescriptorException {
+ public void validateDeclaredAttributeType(Class<?> attributeType, IntegrityChecker checker) throws DescriptorException {
if (!isValidType(attributeType)) {
checker.handleError(DescriptorException.invalidAttributeTypeForProxyIndirection(attributeType, targetInterfaces, getMapping()));
}
@@ -425,7 +427,7 @@
* public interface.
*/
@Override
- public void validateGetMethodReturnType(Class returnType, IntegrityChecker checker) throws DescriptorException {
+ public void validateGetMethodReturnType(Class<?> returnType, IntegrityChecker checker) throws DescriptorException {
if (!isValidType(returnType)) {
checker.handleError(DescriptorException.invalidGetMethodReturnTypeForProxyIndirection(returnType, targetInterfaces, getMapping()));
}
@@ -438,7 +440,7 @@
* public interface.
*/
@Override
- public void validateSetMethodParameterType(Class parameterType, IntegrityChecker checker) throws DescriptorException {
+ public void validateSetMethodParameterType(Class<?> parameterType, IntegrityChecker checker) throws DescriptorException {
if (!isValidType(parameterType)) {
checker.handleError(DescriptorException.invalidSetMethodParameterTypeForProxyIndirection(parameterType, targetInterfaces, getMapping()));
}
@@ -449,7 +451,7 @@
* The method validateAttributeOfInstantiatedObject(Object attributeValue) fixes the value of the attributeValue
* in cases where it is null and indirection requires that it contain some specific data structure. Return whether this will happen.
* This method is used to help determine if indirection has been triggered
- * @see validateAttributeOfInstantiatedObject(Object attributeValue)
+ * @see #validateAttributeOfInstantiatedObject(Object attributeValue)
*/
@Override
public boolean isAttributeValueFullyBuilt(Object attributeValue){
@@ -461,7 +463,7 @@
* Verify that a class type is valid to use for the proxy. The class must be one of the
* interfaces in <CODE>targetInterfaces</CODE>.
*/
- public boolean isValidType(Class attributeType) {
+ public boolean isValidType(Class<?> attributeType) {
if (!attributeType.isInterface()) {
return false;
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/QueryBasedValueHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/QueryBasedValueHolder.java
index f2b9876..bfd5466 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/QueryBasedValueHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/QueryBasedValueHolder.java
@@ -35,7 +35,7 @@
* @see ObjectLevelReadQuery
* @author Dorin Sandu
*/
-public class QueryBasedValueHolder extends DatabaseValueHolder {
+public class QueryBasedValueHolder<T> extends DatabaseValueHolder<T> {
/**
* Stores the query to be executed.
@@ -54,9 +54,7 @@
this(query, null, row, session);
}
- /**
-
- /**
+ /*
* Store the uow identity so that it can be used to determine new
* transaction logic
*/
@@ -99,9 +97,10 @@
* If null is returned then the calling UOW will instantiate as normal.
*/
@Override
- public Object getValue(UnitOfWorkImpl uow) {
+ @SuppressWarnings({"unchecked"})
+ public T getValue(UnitOfWorkImpl uow) {
if (this.query.isReadObjectQuery()){
- return this.query.getQueryMechanism().checkCacheForObject(this.query.getTranslationRow(), uow);
+ return (T) this.query.getQueryMechanism().checkCacheForObject(this.query.getTranslationRow(), uow);
}
//not able to shortcircuit cache lookup to UOW return null;
return null;
@@ -119,14 +118,15 @@
}
@Override
- protected Object instantiate() throws DatabaseException {
+ protected T instantiate() throws DatabaseException {
return instantiate(this.session);
}
/**
* Instantiate the object by executing the query on the session.
*/
- protected Object instantiate(AbstractSession session) throws DatabaseException {
+ @SuppressWarnings({"unchecked"})
+ protected T instantiate(AbstractSession session) throws DatabaseException {
if (session == null) {
throw ValidationException.instantiatingValueholderWithNullSession();
}
@@ -136,7 +136,7 @@
Object result = session.executeQuery(getQuery(), getRow());
// Bug 489898 - ensure that the query's session is dereferenced, post-execution
getQuery().setSession(null);
- return result;
+ return (T) result;
}
/**
@@ -151,7 +151,7 @@
* thread-safe. It must be used in a synchronized manner
*/
@Override
- public Object instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder unitOfWorkValueHolder) {
+ public T instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder<T> unitOfWorkValueHolder) {
return instantiate(unitOfWorkValueHolder.getUnitOfWork());
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/TransformerBasedValueHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/TransformerBasedValueHolder.java
index df7b80a..5cf89d8 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/TransformerBasedValueHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/TransformerBasedValueHolder.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
@@ -30,7 +30,7 @@
* That Transformer may be a MethodBasedAttributeTransformer or a user defined implementation.
*
*/
-public class TransformerBasedValueHolder extends DatabaseValueHolder {
+public class TransformerBasedValueHolder<T> extends DatabaseValueHolder<T> {
/**
* Stores the method to be executed. The method can take
@@ -88,13 +88,14 @@
* Instantiate the object by executing the method on the transformer.
*/
@Override
- protected Object instantiate() throws DescriptorException {
+ protected T instantiate() throws DescriptorException {
return instantiate(getObject(), getSession());
}
- protected Object instantiate(Object object, AbstractSession session) throws DescriptorException {
+ @SuppressWarnings({"unchecked"})
+ protected T instantiate(Object object, AbstractSession session) throws DescriptorException {
try {
- return transformer.buildAttributeValue(getRow(), object, session);
+ return (T) transformer.buildAttributeValue(getRow(), object, session);
} catch (DescriptorException ex) {
Throwable nestedException = ex.getInternalException();
if (nestedException instanceof IllegalAccessException) {
@@ -121,7 +122,7 @@
* Note: This method is not thread-safe. It must be used in a synchronized manner
*/
@Override
- public Object instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder unitOfWorkValueHolder) {
+ public T instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder<T> unitOfWorkValueHolder) {
return instantiate(getObject(), unitOfWorkValueHolder.getUnitOfWork());
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/TransparentIndirectionPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/TransparentIndirectionPolicy.java
index 179aa2f..815687c 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/TransparentIndirectionPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/TransparentIndirectionPolicy.java
@@ -92,11 +92,11 @@
* database will these contents be copied to the backup clone.
*/
protected Object buildBackupClone(IndirectContainer container) {
- ValueHolderInterface containerValueHolder = container.getValueHolder();
+ ValueHolderInterface<Object> containerValueHolder = container.getValueHolder();
// CR#2852176 Use a BackupValueHolder to handle replacing of the original.
- BackupValueHolder backupValueHolder = new BackupValueHolder(containerValueHolder);
+ BackupValueHolder<Object> backupValueHolder = new BackupValueHolder<>(containerValueHolder);
if (containerValueHolder instanceof UnitOfWorkValueHolder) {
- ((UnitOfWorkValueHolder) containerValueHolder).setBackupValueHolder(backupValueHolder);
+ ((UnitOfWorkValueHolder<Object>) containerValueHolder).setBackupValueHolder(backupValueHolder);
}
return this.buildIndirectContainer(backupValueHolder);
}
@@ -149,7 +149,7 @@
*/
@Override
public Object cloneAttribute(Object attributeValue, Object original, CacheKey cacheKey, Object clone, Integer refreshCascade, AbstractSession cloningSession, boolean buildDirectlyFromRow) {
- ValueHolderInterface valueHolder = null;
+ ValueHolderInterface<Object> valueHolder = null;
Object container = null;
IndirectList indirectList = null;
IndirectContainer indirectContainer = null;
@@ -165,19 +165,19 @@
// This can occur if an existing serialized object is attempt to be registered as new.
if ((valueHolder instanceof DatabaseValueHolder)
&& (! valueHolder.isInstantiated())
- && (((DatabaseValueHolder) valueHolder).getSession() == null)
- && (! ((DatabaseValueHolder) valueHolder).isSerializedRemoteUnitOfWorkValueHolder())) {
+ && (((DatabaseValueHolder<?>) valueHolder).getSession() == null)
+ && (! ((DatabaseValueHolder<?>) valueHolder).isSerializedRemoteUnitOfWorkValueHolder())) {
throw DescriptorException.attemptToRegisterDeadIndirection(original, this.mapping);
}
if (this.mapping.getRelationshipPartner() == null) {
container = this.mapping.buildCloneForPartObject(attributeValue, original, cacheKey, clone, cloningSession, refreshCascade, false, false);
} else {
if (indirectContainer == null) {
- valueHolder = new ValueHolder(attributeValue);
+ valueHolder = new ValueHolder<>(attributeValue);
}
AbstractRecord row = null;
if (valueHolder instanceof DatabaseValueHolder) {
- row = ((DatabaseValueHolder)valueHolder).getRow();
+ row = ((DatabaseValueHolder<?>)valueHolder).getRow();
}
//If a new object is being cloned then we must build a new UOWValueHolder
@@ -185,7 +185,7 @@
// here the code instantiates the valueholder in a privledged manner because a
// UOWValueHolder will assume the objects in the collection are existing if the valueholder
// Goes through it's own instantiation process.
- DatabaseValueHolder newValueHolder = this.mapping.createCloneValueHolder(valueHolder, original, clone, row, cloningSession, buildDirectlyFromRow);
+ DatabaseValueHolder<Object> newValueHolder = this.mapping.createCloneValueHolder(valueHolder, original, clone, row, cloningSession, buildDirectlyFromRow);
container = buildIndirectContainer(newValueHolder);
Object cloneCollection = this.mapping.buildCloneForPartObject(attributeValue, original, cacheKey, clone, cloningSession, refreshCascade, false, false);
newValueHolder.privilegedSetValue(cloneCollection);
@@ -193,13 +193,13 @@
}
} else {
if (indirectContainer == null) {
- valueHolder = new ValueHolder(attributeValue);
+ valueHolder = new ValueHolder<>(attributeValue);
}
AbstractRecord row = null;
if (valueHolder instanceof DatabaseValueHolder) {
- row = ((DatabaseValueHolder)valueHolder).getRow();
+ row = ((DatabaseValueHolder<?>)valueHolder).getRow();
}
- DatabaseValueHolder uowValueHolder = this.mapping.createCloneValueHolder(valueHolder, original, clone, row, cloningSession, buildDirectlyFromRow);
+ DatabaseValueHolder<?> uowValueHolder = this.mapping.createCloneValueHolder(valueHolder, original, clone, row, cloningSession, buildDirectlyFromRow);
if ((indirectContainer == null) || !buildDirectlyFromRow) {
container = buildIndirectContainer(uowValueHolder);
} else {
@@ -261,7 +261,7 @@
if (this.objectIsInstantiated(referenceObject)) {
return null;
} else {
- return ((DatabaseValueHolder)((IndirectContainer)referenceObject).getValueHolder()).getRow();
+ return ((DatabaseValueHolder<?>)((IndirectContainer)referenceObject).getValueHolder()).getRow();
}
}
@@ -272,10 +272,10 @@
* with client-side objects.
*/
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
Object container = getMapping().getAttributeValueFromObject(object);
if (container instanceof IndirectContainer && ((((IndirectContainer) container).getValueHolder() instanceof RemoteValueHolder)) ) {
- RemoteValueHolder valueHolder = (RemoteValueHolder)((IndirectContainer)container).getValueHolder();
+ RemoteValueHolder<?> valueHolder = (RemoteValueHolder)((IndirectContainer)container).getValueHolder();
valueHolder.setSession(session);
valueHolder.setMapping(getMapping());
if ((!query.shouldMaintainCache()) && ((!query.shouldCascadeParts()) || (query.shouldCascadePrivateParts() && (!this.mapping.isPrivateOwned())))) {
@@ -327,7 +327,7 @@
public Object getOriginalIndirectionObject(Object unitOfWorkIndirectionObject, AbstractSession session) {
IndirectContainer container = (IndirectContainer)unitOfWorkIndirectionObject;
if (container.getValueHolder() instanceof UnitOfWorkValueHolder) {
- return buildIndirectContainer((ValueHolderInterface) getOriginalValueHolder(unitOfWorkIndirectionObject, session));
+ return buildIndirectContainer((ValueHolderInterface<?>) getOriginalValueHolder(unitOfWorkIndirectionObject, session));
} else {
return container;
}
@@ -340,7 +340,7 @@
@Override
public Object getOriginalIndirectionObjectForMerge(Object unitOfWorkIndirectionObject, AbstractSession session) {
IndirectContainer container = (IndirectContainer) getOriginalIndirectionObject(unitOfWorkIndirectionObject, session);
- DatabaseValueHolder holder = (DatabaseValueHolder)container.getValueHolder();
+ DatabaseValueHolder<?> holder = (DatabaseValueHolder<?>)container.getValueHolder();
if (holder != null && holder.getSession()!= null){
holder.setSession(session);
}
@@ -355,23 +355,23 @@
@Override
public Object getOriginalValueHolder(Object unitOfWorkIndirectionObject, AbstractSession session) {
if (! (unitOfWorkIndirectionObject instanceof IndirectContainer)){
- return new ValueHolder();
+ return new ValueHolder<>();
}
IndirectContainer container = (IndirectContainer)unitOfWorkIndirectionObject;
if (container.getValueHolder() instanceof WrappingValueHolder) {
- ValueHolderInterface<?> valueHolder = ((WrappingValueHolder)container.getValueHolder()).getWrappedValueHolder();
+ ValueHolderInterface<?> valueHolder = ((WrappingValueHolder<?>)container.getValueHolder()).getWrappedValueHolder();
if ((valueHolder == null) && session.isRemoteUnitOfWork()) {
RemoteSessionController controller = ((RemoteUnitOfWork)session).getParentSessionController();
- valueHolder = controller.getRemoteValueHolders().get(((UnitOfWorkValueHolder)container.getValueHolder()).getWrappedValueHolderRemoteID());
+ valueHolder = controller.getRemoteValueHolders().get(((UnitOfWorkValueHolder<?>)container.getValueHolder()).getWrappedValueHolderRemoteID());
}
if (!session.isProtectedSession()){
- while (valueHolder instanceof WrappingValueHolder && ((WrappingValueHolder)valueHolder).getWrappedValueHolder() != null){
- valueHolder = ((WrappingValueHolder)valueHolder).getWrappedValueHolder();
+ while (valueHolder instanceof WrappingValueHolder && ((WrappingValueHolder<?>)valueHolder).getWrappedValueHolder() != null){
+ valueHolder = ((WrappingValueHolder<?>)valueHolder).getWrappedValueHolder();
}
}
// EL bug 470161
- if ((valueHolder != null) && (valueHolder instanceof DatabaseValueHolder)) {
- ((DatabaseValueHolder) valueHolder).releaseWrappedValueHolder(session);
+ if (valueHolder instanceof DatabaseValueHolder) {
+ ((DatabaseValueHolder<?>) valueHolder).releaseWrappedValueHolder(session);
}
return valueHolder;
} else {
@@ -404,7 +404,7 @@
* The method validateAttributeOfInstantiatedObject(Object attributeValue) fixes the value of the attributeValue
* in cases where it is null and indirection requires that it contain some specific data structure. Return whether this will happen.
* This method is used to help determine if indirection has been triggered
- * @see validateAttributeOfInstantiatedObject(Object attributeValue)
+ * @see #validateAttributeOfInstantiatedObject(Object)
*/
@Override
public boolean isAttributeValueFullyBuilt(Object attributeValue){
@@ -421,7 +421,7 @@
* specified remote value holder.
*/
@Override
- public Object getValueFromRemoteValueHolder(RemoteValueHolder remoteValueHolder) {
+ public Object getValueFromRemoteValueHolder(RemoteValueHolder<?> remoteValueHolder) {
Object result = remoteValueHolder.getServerIndirectionObject();
this.getContainerPolicy().sizeFor(result);// forgive me for this hack: but we have to do something to trigger the database read
return result;
@@ -462,7 +462,7 @@
if( attributeValue instanceof IndirectContainer) {
ValueHolderInterface valueHolder = ((IndirectContainer)attributeValue).getValueHolder();
if (valueHolder instanceof QueryBasedValueHolder) {
- ((QueryBasedValueHolder)valueHolder).setSourceObject(sourceObject);
+ ((QueryBasedValueHolder<?>)valueHolder).setSourceObject(sourceObject);
}
}
}
@@ -517,7 +517,7 @@
public void mergeRemoteValueHolder(Object clientSideDomainObject, Object serverSideDomainObject, MergeManager mergeManager) {
// This will always be a transparent with a remote.
IndirectContainer serverContainer = (IndirectContainer)getMapping().getAttributeValueFromObject(serverSideDomainObject);
- RemoteValueHolder serverValueHolder = (RemoteValueHolder)serverContainer.getValueHolder();
+ RemoteValueHolder<?> serverValueHolder = (RemoteValueHolder<?>)serverContainer.getValueHolder();
mergeClientIntoServerValueHolder(serverValueHolder, mergeManager);
getMapping().setAttributeValueInObject(clientSideDomainObject, serverContainer);
@@ -555,9 +555,9 @@
@Override
public boolean objectIsEasilyInstantiated(Object object) {
if (object instanceof IndirectContainer) {
- ValueHolderInterface valueHolder = ((IndirectContainer)object).getValueHolder();
+ ValueHolderInterface<?> valueHolder = ((IndirectContainer)object).getValueHolder();
if (valueHolder instanceof DatabaseValueHolder) {
- return ((DatabaseValueHolder)valueHolder).isEasilyInstantiated();
+ return ((DatabaseValueHolder<?>)valueHolder).isEasilyInstantiated();
}
}
return true;
@@ -590,7 +590,7 @@
* declared type [jdk1.1] or the container policy class implements
* the declared interface [jdk1.2]).
*/
- protected boolean typeIsValid(Class declaredType) {
+ protected boolean typeIsValid(Class<?> declaredType) {
if (Helper.classIsSubclass(this.getContainerClass(), declaredType)) {
return true;
}
@@ -656,7 +656,7 @@
* compatible with the one specified by the ContainerPolicy.
*/
@Override
- public void validateDeclaredAttributeType(Class attributeType, IntegrityChecker checker) throws DescriptorException {
+ public void validateDeclaredAttributeType(Class<?> attributeType, IntegrityChecker checker) throws DescriptorException {
super.validateDeclaredAttributeType(attributeType, checker);
if (!this.typeIsValid(attributeType)) {
checker.handleError(DescriptorException.attributeAndMappingWithTransparentIndirectionMismatch(this.getMapping(), attributeType, this.validTypeName()));
@@ -672,7 +672,7 @@
* compatible with the one specified by the ContainerPolicy.
*/
@Override
- public void validateGetMethodReturnType(Class returnType, IntegrityChecker checker) throws DescriptorException {
+ public void validateGetMethodReturnType(Class<?> returnType, IntegrityChecker checker) throws DescriptorException {
super.validateGetMethodReturnType(returnType, checker);
if (!this.typeIsValid(returnType)) {
checker.handleError(DescriptorException.returnAndMappingWithTransparentIndirectionMismatch(this.getMapping(), returnType, this.validTypeName()));
@@ -688,7 +688,7 @@
* compatible with the one specified by the ContainerPolicy.
*/
@Override
- public void validateSetMethodParameterType(Class parameterType, IntegrityChecker checker) throws DescriptorException {
+ public void validateSetMethodParameterType(Class<?> parameterType, IntegrityChecker checker) throws DescriptorException {
super.validateSetMethodParameterType(parameterType, checker);
if (!this.typeIsValid(parameterType)) {
checker.handleError(DescriptorException.parameterAndMappingWithTransparentIndirectionMismatch(this.getMapping(), parameterType, this.validTypeName()));
@@ -711,7 +711,7 @@
*/
@Override
public Object valueFromBatchQuery(ReadQuery batchQuery, AbstractRecord row, ObjectLevelReadQuery originalQuery, CacheKey parentCacheKey) {
- return this.buildIndirectContainer(new BatchValueHolder(batchQuery, row, getForeignReferenceMapping(), originalQuery, parentCacheKey));
+ return this.buildIndirectContainer(new BatchValueHolder<>(batchQuery, row, getForeignReferenceMapping(), originalQuery, parentCacheKey));
}
/**
@@ -734,7 +734,7 @@
*/
@Override
public Object valueFromQuery(ReadQuery query, AbstractRecord row, AbstractSession session) {
- return this.buildIndirectContainer(new QueryBasedValueHolder(query, row, session));
+ return this.buildIndirectContainer(new QueryBasedValueHolder<>(query, row, session));
}
/**
@@ -745,7 +745,7 @@
*/
@Override
public Object valueFromQuery(ReadQuery query, AbstractRecord row, Object object, AbstractSession session) {
- return this.buildIndirectContainer(new QueryBasedValueHolder(query, object, row, session));
+ return this.buildIndirectContainer(new QueryBasedValueHolder<>(query, object, row, session));
}
/**
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/UnitOfWorkQueryValueHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/UnitOfWorkQueryValueHolder.java
index fd2c12f..e787efa 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/UnitOfWorkQueryValueHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/UnitOfWorkQueryValueHolder.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,16 +30,16 @@
*
* @author Sati
*/
-public class UnitOfWorkQueryValueHolder extends UnitOfWorkValueHolder {
+public class UnitOfWorkQueryValueHolder<T> extends UnitOfWorkValueHolder<T> {
protected UnitOfWorkQueryValueHolder() {
super();
}
- protected UnitOfWorkQueryValueHolder(ValueHolderInterface attributeValue, Object clone, DatabaseMapping mapping, UnitOfWorkImpl unitOfWork) {
+ protected UnitOfWorkQueryValueHolder(ValueHolderInterface<T> attributeValue, Object clone, DatabaseMapping mapping, UnitOfWorkImpl unitOfWork) {
super(attributeValue, clone, mapping, unitOfWork);
}
- public UnitOfWorkQueryValueHolder(ValueHolderInterface attributeValue, Object clone, ForeignReferenceMapping mapping, AbstractRecord row, UnitOfWorkImpl unitOfWork) {
+ public UnitOfWorkQueryValueHolder(ValueHolderInterface<T> attributeValue, Object clone, ForeignReferenceMapping mapping, AbstractRecord row, UnitOfWorkImpl unitOfWork) {
this(attributeValue, clone, mapping, unitOfWork);
this.row = row;
}
@@ -56,15 +56,16 @@
* Clone the original attribute value.
*/
@Override
- public Object buildCloneFor(Object originalAttributeValue) {
+ @SuppressWarnings({"unchecked"})
+ public T buildCloneFor(Object originalAttributeValue) {
Integer refreshCascade = null;
if (wrappedValueHolder instanceof QueryBasedValueHolder){
- refreshCascade = ((QueryBasedValueHolder)getWrappedValueHolder()).getRefreshCascadePolicy();
+ refreshCascade = ((QueryBasedValueHolder<?>)getWrappedValueHolder()).getRefreshCascadePolicy();
}
- Object clone = this.mapping.buildCloneForPartObject(originalAttributeValue, null, null, this.relationshipSourceObject, getUnitOfWork(), refreshCascade, true, true);
+ T clone = (T) this.mapping.buildCloneForPartObject(originalAttributeValue, null, null, this.relationshipSourceObject, getUnitOfWork(), refreshCascade, true, true);
// Bug 414801
if (wrappedValueHolder.isInstantiated() && refreshCascade != null) {
- ((QueryBasedValueHolder)getWrappedValueHolder()).setRefreshCascadePolicy(null);
+ ((QueryBasedValueHolder<T>)getWrappedValueHolder()).setRefreshCascadePolicy(null);
}
return clone;
}
@@ -73,12 +74,12 @@
* Ensure that the backup value holder is populated.
*/
@Override
- public void setValue(Object theValue) {
+ public void setValue(T theValue) {
// Must force instantiation to be able to compare with the old value.
if (!this.isInstantiated) {
instantiate();
}
- Object oldValue = getValue();
+ T oldValue = getValue();
super.setValue(theValue);
updateForeignReferenceSet(theValue, oldValue);
}
@@ -116,7 +117,7 @@
}
// PERF: If the collection is not instantiated, then do not instantiated it.
if (partner.isCollectionMapping()) {
- if ((!(oldParent instanceof IndirectContainer)) || ((IndirectContainer)oldParent).isInstantiated()) {
+ if ((!(oldParent instanceof IndirectContainer)) || ((IndirectContainer<?>)oldParent).isInstantiated()) {
if (!partner.getContainerPolicy().contains(sourceObject, oldParent, getSession())) {
// value has already been set
return;
@@ -142,7 +143,7 @@
* We only worry about ObjectReferenceMappings as the collections mappings will be handled by transparentIndirection
*/
public void updateForeignReferenceSet(Object value, Object oldValue) {
- if ((value != null) && (value instanceof Collection)) {
+ if (value instanceof Collection) {
//I'm passing a collection into the valueholder not an object
return;
}
@@ -166,7 +167,7 @@
}
// PERF: If the collection is not instantiated, then do not instantiated it.
if (partner.isCollectionMapping()) {
- if ((!(oldParent instanceof IndirectContainer)) || ((IndirectContainer)oldParent).isInstantiated()) {
+ if ((!(oldParent instanceof IndirectContainer)) || ((IndirectContainer<?>)oldParent).isInstantiated()) {
if (partner.getContainerPolicy().contains(sourceObject, oldParent, getSession())) {
// value has already been set
return;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/UnitOfWorkTransformerValueHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/UnitOfWorkTransformerValueHolder.java
index bcb1fb9..0821d5b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/UnitOfWorkTransformerValueHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/UnitOfWorkTransformerValueHolder.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,17 +30,17 @@
*
* @author Sati
*/
-public class UnitOfWorkTransformerValueHolder extends UnitOfWorkValueHolder {
+public class UnitOfWorkTransformerValueHolder<T> extends UnitOfWorkValueHolder<T> {
protected transient Object cloneOfObject;
protected transient Object object;
- public UnitOfWorkTransformerValueHolder(ValueHolderInterface attributeValue, Object original, Object clone, AbstractTransformationMapping mapping, UnitOfWorkImpl unitOfWork) {
+ public UnitOfWorkTransformerValueHolder(ValueHolderInterface<T> attributeValue, Object original, Object clone, AbstractTransformationMapping mapping, UnitOfWorkImpl unitOfWork) {
this(attributeValue, clone, mapping, unitOfWork);
this.object = original;
this.cloneOfObject = clone;
}
- protected UnitOfWorkTransformerValueHolder(ValueHolderInterface attributeValue, Object clone, DatabaseMapping mapping, UnitOfWorkImpl unitOfWork) {
+ protected UnitOfWorkTransformerValueHolder(ValueHolderInterface<T> attributeValue, Object clone, DatabaseMapping mapping, UnitOfWorkImpl unitOfWork) {
super(attributeValue, clone, mapping, unitOfWork);
}
@@ -56,8 +56,9 @@
* Clone the original attribute value.
*/
@Override
- public Object buildCloneFor(Object originalAttributeValue) {
- return getMapping().buildCloneForPartObject(originalAttributeValue, getObject(), null, getCloneOfObject(), getUnitOfWork(), null, true, true);
+ @SuppressWarnings({"unchecked"})
+ public T buildCloneFor(Object originalAttributeValue) {
+ return (T) getMapping().buildCloneForPartObject(originalAttributeValue, getObject(), null, getCloneOfObject(), getUnitOfWork(), null, true, true);
}
protected Object getCloneOfObject() {
@@ -72,7 +73,7 @@
* Ensure that the backup value holder is populated.
*/
@Override
- public void setValue(Object theValue) {
+ public void setValue(T theValue) {
// Must force instantiation to be able to compare with the old value.
if (!this.isInstantiated) {
instantiate();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/UnitOfWorkValueHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/UnitOfWorkValueHolder.java
index 1940648..05b3387 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/UnitOfWorkValueHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/UnitOfWorkValueHolder.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
@@ -34,16 +34,16 @@
*
* @author Sati
*/
-public abstract class UnitOfWorkValueHolder extends DatabaseValueHolder implements WrappingValueHolder{
+public abstract class UnitOfWorkValueHolder<T> extends DatabaseValueHolder<T> implements WrappingValueHolder<T> {
/** The value holder in the original object. */
- protected transient ValueHolderInterface<?> wrappedValueHolder;
+ protected transient ValueHolderInterface<T> wrappedValueHolder;
/** The mapping for the attribute. */
protected transient DatabaseMapping mapping;
/** The value holder stored in the backup copy, should not be transient. */
- protected ValueHolderInterface<Object> backupValueHolder;
+ protected ValueHolderInterface<T> backupValueHolder;
/** These cannot be transient because they are required for a remote unit of work.
When the remote uow is serialized to the server to be committed, these
@@ -63,7 +63,7 @@
super();
}
- protected UnitOfWorkValueHolder(ValueHolderInterface attributeValue, Object clone, DatabaseMapping mapping, UnitOfWorkImpl unitOfWork) {
+ protected UnitOfWorkValueHolder(ValueHolderInterface<T> attributeValue, Object clone, DatabaseMapping mapping, UnitOfWorkImpl unitOfWork) {
this.wrappedValueHolder = attributeValue;
this.mapping = mapping;
this.session = unitOfWork;
@@ -72,7 +72,7 @@
if (unitOfWork.isRemoteUnitOfWork()) {
if (attributeValue instanceof RemoteValueHolder) {
- this.wrappedValueHolderRemoteID = ((RemoteValueHolder)attributeValue).getID();
+ this.wrappedValueHolderRemoteID = ((RemoteValueHolder<T>)attributeValue).getID();
}
this.remoteUnitOfWork = unitOfWork;
this.sourceObject = clone;
@@ -87,9 +87,9 @@
/**
* Clone the original attribute value.
*/
- public abstract Object buildCloneFor(Object originalAttributeValue);
+ public abstract T buildCloneFor(Object originalAttributeValue);
- protected ValueHolderInterface<Object> getBackupValueHolder() {
+ protected ValueHolderInterface<T> getBackupValueHolder() {
return backupValueHolder;
}
@@ -123,7 +123,8 @@
* it needs to be instantiated, then we must find the original
* object and get the appropriate attribute from it.
*/
- protected Object getValueFromServerObject() {
+ @SuppressWarnings({"unchecked"})
+ protected T getValueFromServerObject() {
setSession(getRemoteUnitOfWork());
Object primaryKey = getSession().getId(getSourceObject());
Object originalObject = getUnitOfWork().getParent().getIdentityMapAccessor().getFromIdentityMap(primaryKey, getSourceObject().getClass());
@@ -133,7 +134,7 @@
ClassDescriptor descriptor = getSession().getDescriptor(originalObject);
DatabaseMapping mapping = descriptor.getObjectBuilder().getMappingForAttributeName(getSourceAttributeName());
setMapping(mapping);
- return getMapping().getRealAttributeValueFromObject(originalObject, getSession());
+ return (T) getMapping().getRealAttributeValueFromObject(originalObject, getSession());
}
/**
@@ -141,13 +142,13 @@
* The old name is no longer correct, as query based valueholders are now
* sometimes triggered directly without triggering the underlying valueholder.
*/
- protected Object instantiateImpl() {
+ protected T instantiateImpl() {
Object value;
// Bug 3835202 - Ensure access to valueholders is thread safe. Several of the methods
// called below are not threadsafe alone.
synchronized (this.wrappedValueHolder) {
if (this.wrappedValueHolder instanceof DatabaseValueHolder) {
- DatabaseValueHolder wrapped = (DatabaseValueHolder)this.wrappedValueHolder;
+ DatabaseValueHolder<T> wrapped = (DatabaseValueHolder<T>)this.wrappedValueHolder;
UnitOfWorkImpl unitOfWork = getUnitOfWork();
if (!wrapped.isEasilyInstantiated()) {
if (wrapped.isPessimisticLockingValueHolder()) {
@@ -166,7 +167,7 @@
if (!wrapped.isInstantiated()){
//if not instantiated then try and load the UOW versions to prevent the whole loading from the cache and cloning
//process
- Object result = wrapped.getValue((UnitOfWorkImpl) this.session);
+ T result = wrapped.getValue((UnitOfWorkImpl) this.session);
if (result != null){
return result;
}
@@ -204,7 +205,7 @@
}
@Override
- public ValueHolderInterface<?> getWrappedValueHolder() {
+ public ValueHolderInterface<T> getWrappedValueHolder() {
return wrappedValueHolder;
}
@@ -229,9 +230,10 @@
* if necessary, and clone it.
*/
@Override
- protected Object instantiate() {
- Object originalAttributeValue;
- Object cloneAttributeValue;
+ @SuppressWarnings({"unchecked"})
+ protected T instantiate() {
+ T originalAttributeValue;
+ T cloneAttributeValue;
if (isSerializedRemoteUnitOfWorkValueHolder()) {
originalAttributeValue = getValueFromServerObject();
cloneAttributeValue = buildCloneFor(originalAttributeValue);
@@ -245,7 +247,7 @@
// Set the value in the backup clone also.
// In some cases we may want to force instantiation before the backup is built
if (this.backupValueHolder != null) {
- this.backupValueHolder.setValue(buildBackupCloneFor(cloneAttributeValue));
+ this.backupValueHolder.setValue((T)buildBackupCloneFor(cloneAttributeValue));
}
return cloneAttributeValue;
}
@@ -261,7 +263,7 @@
* and the query.
*/
@Override
- public Object instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder unitOfWorkValueHolder) {
+ public T instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder<T> unitOfWorkValueHolder) {
// This abstract method needs to be implemented but is not meaningful for
// this subclass.
return instantiate();
@@ -290,7 +292,7 @@
//do nothing. nothing should be reset to null;
}
- public void setBackupValueHolder(ValueHolderInterface backupValueHolder) {
+ public void setBackupValueHolder(ValueHolderInterface<T> backupValueHolder) {
this.backupValueHolder = backupValueHolder;
}
@@ -314,7 +316,7 @@
this.relationshipSourceObject = relationshipSourceObject;
}
- protected void setWrappedValueHolder(DatabaseValueHolder valueHolder) {
+ protected void setWrappedValueHolder(DatabaseValueHolder<T> valueHolder) {
wrappedValueHolder = valueHolder;
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/WeavedObjectBasicIndirectionPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/WeavedObjectBasicIndirectionPolicy.java
index 0166754..1cdc10c 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/WeavedObjectBasicIndirectionPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/WeavedObjectBasicIndirectionPolicy.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
@@ -93,7 +93,7 @@
if (setMethod == null) {
ForeignReferenceMapping sourceMapping = (ForeignReferenceMapping)mapping;
// The parameter type for the set method must always be the return type of the get method.
- Class[] parameterTypes = new Class[1];
+ Class<?>[] parameterTypes = new Class<?>[1];
parameterTypes[0] = sourceMapping.getReferenceClass();
try {
@@ -111,7 +111,7 @@
}
try {
// Get the set method type from the get method.
- Method getMethod = Helper.getDeclaredMethod(sourceMapping.getDescriptor().getJavaClass(), getGetMethodName(), new Class[0]);
+ Method getMethod = Helper.getDeclaredMethod(sourceMapping.getDescriptor().getJavaClass(), getGetMethodName(), new Class<?>[0]);
parameterTypes[0] = getMethod.getReturnType();
setMethod = Helper.getDeclaredMethod(sourceMapping.getDescriptor().getJavaClass(), setMethodName, parameterTypes);
} catch (NoSuchMethodException e2) {
@@ -175,7 +175,7 @@
try {
if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
try {
- AccessController.doPrivileged(new PrivilegedMethodInvoker(getSetMethod(), target, parameters));
+ AccessController.doPrivileged(new PrivilegedMethodInvoker<>(getSetMethod(), target, parameters));
} catch (PrivilegedActionException exception) {
Exception throwableException = exception.getException();
if (throwableException instanceof IllegalAccessException) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/WrappingValueHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/WrappingValueHolder.java
index afe228c..5cc8a46 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/WrappingValueHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/WrappingValueHolder.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
@@ -24,12 +24,12 @@
* @see ProtectedValueHolder
* @author Gordon Yorke
*/
-public interface WrappingValueHolder {
+public interface WrappingValueHolder<T> {
/**
* Returns the valueholder that is wrapped by this ValueHolder
*/
- ValueHolderInterface<?> getWrappedValueHolder();
+ ValueHolderInterface<T> getWrappedValueHolder();
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/accessor/OrmAttributeAccessor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/accessor/OrmAttributeAccessor.java
index 54c0b48..f834b01 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/accessor/OrmAttributeAccessor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/accessor/OrmAttributeAccessor.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
@@ -61,12 +61,12 @@
@Override
public Object getAttributeValueFromObject(Object object) {
if(isValueHolderProperty) {
- ValueHolderInterface vh = (ValueHolderInterface)ormAccessor.getAttributeValueFromObject(object);
+ ValueHolderInterface<?> vh = (ValueHolderInterface<?>)ormAccessor.getAttributeValueFromObject(object);
if(vh != null && !vh.isInstantiated()) {
Object value = vh.getValue();
oxmAccessor.setAttributeValueInObject(object, value);
if(vh instanceof WeavedAttributeValueHolderInterface) {
- ((WeavedAttributeValueHolderInterface)vh).setIsCoordinatedWithProperty(true);
+ ((WeavedAttributeValueHolderInterface<?>)vh).setIsCoordinatedWithProperty(true);
}
}
}
@@ -83,10 +83,11 @@
}
}
if(isValueHolderProperty) {
- ValueHolderInterface vh = (ValueHolderInterface)ormAccessor.getAttributeValueFromObject(object);
+ @SuppressWarnings({"unchecked"})
+ ValueHolderInterface<Object> vh = (ValueHolderInterface<Object>)ormAccessor.getAttributeValueFromObject(object);
if(vh == null) {
- vh = new ValueHolder();
- ((ValueHolder)vh).setIsNewlyWeavedValueHolder(true);
+ vh = new ValueHolder<>();
+ ((ValueHolder<?>)vh).setIsNewlyWeavedValueHolder(true);
}
vh.setValue(value);
ormAccessor.setAttributeValueInObject(object, vh);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/mappings/Field.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/mappings/Field.java
index cb6d789..5907698 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/mappings/Field.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/mappings/Field.java
@@ -71,7 +71,7 @@
*/
QName getSchemaTypeForValue(Object value, CoreAbstractSession session);
- @Override Class getType();
+ @Override Class<?> getType();
/**
* Return the qualified XML Schema type for a given class
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/ArrayListContainerPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/ArrayListContainerPolicy.java
index 3ccc1ed..3ffa452 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/ArrayListContainerPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/ArrayListContainerPolicy.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
@@ -62,7 +62,7 @@
}
// Could potentially be another Collection type as well.
- return new ArrayList((Collection) container);
+ return new ArrayList<>((Collection) container);
}
/**
@@ -71,7 +71,7 @@
*/
@Override
public Object buildContainerFromVector(Vector vector, AbstractSession session) {
- return new ArrayList(vector);
+ return new ArrayList<>(vector);
}
/**
@@ -80,7 +80,7 @@
*/
@Override
public Object containerInstance() {
- return new ArrayList();
+ return new ArrayList<>();
}
/**
@@ -89,6 +89,6 @@
*/
@Override
public Object containerInstance(int initialCapacity) {
- return new ArrayList(initialCapacity);
+ return new ArrayList<>(initialCapacity);
}
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/VectorContainerPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/VectorContainerPolicy.java
index b539ee1..e0ab8d0 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/VectorContainerPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/VectorContainerPolicy.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
@@ -62,7 +62,7 @@
}
// Could potentially be another Collection type as well.
- return new Vector((Collection) container);
+ return new Vector<>((Collection) container);
}
/**
@@ -80,7 +80,7 @@
*/
@Override
public Object containerInstance() {
- return new Vector();
+ return new Vector<>();
}
/**
@@ -89,6 +89,6 @@
*/
@Override
public Object containerInstance(int initialCapacity) {
- return new Vector(initialCapacity);
+ return new Vector<>(initialCapacity);
}
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/AbstractSession.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/AbstractSession.java
index 29b0126..cd0ec69 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/AbstractSession.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/AbstractSession.java
@@ -1167,12 +1167,12 @@
return getDefaultReadOnlyClasses();
}
- public DatabaseValueHolder createCloneQueryValueHolder(ValueHolderInterface attributeValue, Object clone, AbstractRecord row, ForeignReferenceMapping mapping) {
- return new ProtectedValueHolder(attributeValue, mapping, this);
+ public <T> DatabaseValueHolder<T> createCloneQueryValueHolder(ValueHolderInterface<T> attributeValue, Object clone, AbstractRecord row, ForeignReferenceMapping mapping) {
+ return new ProtectedValueHolder<>(attributeValue, mapping, this);
}
- public DatabaseValueHolder createCloneTransformationValueHolder(ValueHolderInterface attributeValue, Object original, Object clone, AbstractTransformationMapping mapping) {
- return new ProtectedValueHolder(attributeValue, mapping, this);
+ public <T> DatabaseValueHolder<T> createCloneTransformationValueHolder(ValueHolderInterface<T> attributeValue, Object original, Object clone, AbstractTransformationMapping mapping) {
+ return new ProtectedValueHolder<>(attributeValue, mapping, this);
}
public <T> InjectionManager<T> createInjectionManager(Object beanManager){
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/MergeManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/MergeManager.java
index 88ff26d..9f4688f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/MergeManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/MergeManager.java
@@ -60,13 +60,13 @@
protected AbstractSession session;
/** Used only while refreshing objects on remote session */
- protected Map objectDescriptors;
+ protected Map<Object, ObjectDescriptor> objectDescriptors;
/** Used to unravel recursion. */
protected Map<AbstractSession, Map<Object, Object>> objectsAlreadyMerged;
/** Used to keep track of merged new objects. */
- protected IdentityHashMap mergedNewObjects;
+ protected IdentityHashMap<Object, Object> mergedNewObjects;
/** Used to store the list of locks that this merge manager has acquired for this merge */
protected ArrayList<CacheKey> acquiredLocks;
@@ -115,8 +115,8 @@
public MergeManager(AbstractSession session) {
this.session = session;
- this.mergedNewObjects = new IdentityHashMap();
- this.objectsAlreadyMerged = new IdentityHashMap();
+ this.mergedNewObjects = new IdentityHashMap<>();
+ this.objectsAlreadyMerged = new IdentityHashMap<>();
this.cascadePolicy = CASCADE_ALL_PARTS;
this.mergePolicy = WORKING_COPY_INTO_ORIGINAL;
this.acquiredLocks = new ArrayList<>();
@@ -155,14 +155,14 @@
return mergePolicy;
}
- public Map getObjectDescriptors() {
+ public Map<Object, ObjectDescriptor> getObjectDescriptors() {
if (this.objectDescriptors == null) {
- this.objectDescriptors = new IdentityHashMap();
+ this.objectDescriptors = new IdentityHashMap<>();
}
return this.objectDescriptors;
}
- public Map getObjectsAlreadyMerged() {
+ public Map<AbstractSession, Map<Object, Object>> getObjectsAlreadyMerged() {
return objectsAlreadyMerged;
}
@@ -338,7 +338,7 @@
public void recordMerge(Object key, Object value, AbstractSession targetSession) {
Map<Object, Object> sessionMap = this.objectsAlreadyMerged.get(targetSession);
if (sessionMap == null){
- sessionMap = new IdentityHashMap();
+ sessionMap = new IdentityHashMap<>();
this.objectsAlreadyMerged.put(targetSession, sessionMap);
}
sessionMap.put(key, value);
@@ -371,7 +371,7 @@
Object clientSideDomainObject = this.session.getIdentityMapAccessorInstance().getFromIdentityMap(primaryKey, serverSideDomainObject.getClass(), descriptor);
if (clientSideDomainObject == null) {
//the referenced object came back as null from the cache.
- ObjectDescriptor objectDescriptor = (ObjectDescriptor)getObjectDescriptors().get(serverSideDomainObject);
+ ObjectDescriptor objectDescriptor = getObjectDescriptors().get(serverSideDomainObject);
if (objectDescriptor == null){
//the object must have been added concurently before serialize generate a new ObjectDescriptor on this side
objectDescriptor = new ObjectDescriptor();
@@ -394,7 +394,7 @@
// merge into the clientSideDomainObject from the serverSideDomainObject;
// use clientSideDomainObject as the backup, as anything different should be merged
descriptor.getObjectBuilder().mergeIntoObject(clientSideDomainObject, false, serverSideDomainObject, this, getSession());
- ObjectDescriptor objectDescriptor = (ObjectDescriptor)getObjectDescriptors().get(serverSideDomainObject);
+ ObjectDescriptor objectDescriptor = getObjectDescriptors().get(serverSideDomainObject);
if (objectDescriptor == null){
//the object must have been added concurently before serialize generate a new ObjectDescriptor on this side
objectDescriptor = new ObjectDescriptor();
@@ -436,7 +436,7 @@
// Iterate over each clone and let the object build merge to clones into the originals.
this.session.getIdentityMapAccessorInstance().getWriteLockManager().acquireRequiredLocks(this, uowChangeSet);
Iterator<ObjectChangeSet> objectChangeEnum = uowChangeSet.getAllChangeSets().keySet().iterator();
- Set<Class> classesChanged = new HashSet<>();
+ Set<Class<?>> classesChanged = new HashSet<>();
while (objectChangeEnum.hasNext()) {
ObjectChangeSet objectChangeSet = objectChangeEnum.next();
// Don't read the object here. If it is null then we won't merge it at this stage, unless it
@@ -462,7 +462,7 @@
}
}
// Clear the query cache as well.
- for (Class changedClass : classesChanged) {
+ for (Class<?> changedClass : classesChanged) {
this.session.getIdentityMapAccessorInstance().invalidateQueryCache(changedClass);
}
} catch (RuntimeException exception) {
@@ -486,7 +486,7 @@
// Determine if the object needs to be registered in the parent's clone mapping,
// This is required for registered new objects in a nested unit of work.
- Class localClassType = changeSet.getClassType(session);
+ Class<?> localClassType = changeSet.getClassType(session);
ClassDescriptor descriptor = session.getDescriptor(localClassType);
// Perform invalidation of a cached object (when set on the ChangeSet) to avoid refreshing or merging
@@ -1003,7 +1003,7 @@
* The newly merged object will then be added to the cache.
*/
public Object mergeNewObjectIntoCache(ObjectChangeSet changeSet) {
- Class localClassType = changeSet.getClassType(session);
+ Class<?> localClassType = changeSet.getClassType(session);
ClassDescriptor descriptor = this.session.getDescriptor(localClassType);
Object newObject = null;
@@ -1158,11 +1158,11 @@
this.forceCascade = forceCascade;
}
- public void setObjectDescriptors(Map objectDescriptors) {
+ public void setObjectDescriptors(Map<Object, ObjectDescriptor> objectDescriptors) {
this.objectDescriptors = objectDescriptors;
}
- protected void setObjectsAlreadyMerged(Map objectsAlreadyMerged) {
+ protected void setObjectsAlreadyMerged(Map<AbstractSession, Map<Object, Object>> objectsAlreadyMerged) {
this.objectsAlreadyMerged = objectsAlreadyMerged;
}
@@ -1290,7 +1290,7 @@
* registerObjectForMergeCloneIntoWorkingCopy method.
* @return Map
*/
- public IdentityHashMap getMergedNewObjects(){
+ public IdentityHashMap<Object, Object> getMergedNewObjects(){
return mergedNewObjects;
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/UnitOfWorkImpl.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/UnitOfWorkImpl.java
index 7d5da5c..6e25b93 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/UnitOfWorkImpl.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/UnitOfWorkImpl.java
@@ -6155,13 +6155,13 @@
}
@Override
- public DatabaseValueHolder createCloneQueryValueHolder(ValueHolderInterface attributeValue, Object clone, AbstractRecord row, ForeignReferenceMapping mapping) {
- return new UnitOfWorkQueryValueHolder(attributeValue, clone, mapping, row, this);
+ public <T> DatabaseValueHolder<T> createCloneQueryValueHolder(ValueHolderInterface<T> attributeValue, Object clone, AbstractRecord row, ForeignReferenceMapping mapping) {
+ return new UnitOfWorkQueryValueHolder<>(attributeValue, clone, mapping, row, this);
}
@Override
- public DatabaseValueHolder createCloneTransformationValueHolder(ValueHolderInterface attributeValue, Object original, Object clone, AbstractTransformationMapping mapping) {
- return new UnitOfWorkTransformerValueHolder(attributeValue, original, clone, mapping, this);
+ public <T> DatabaseValueHolder<T> createCloneTransformationValueHolder(ValueHolderInterface<T> attributeValue, Object original, Object clone, AbstractTransformationMapping mapping) {
+ return new UnitOfWorkTransformerValueHolder<>(attributeValue, original, clone, mapping, this);
}
/**
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/remote/RemoteValueHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/remote/RemoteValueHolder.java
index 1d46d0c..5a4e26e 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/remote/RemoteValueHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/remote/RemoteValueHolder.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
@@ -28,7 +28,7 @@
* Remote value holders can be invoked locally and remotely.
* In both situations the associated indirect object is invoked.
*/
-public class RemoteValueHolder extends DatabaseValueHolder implements Externalizable {
+public class RemoteValueHolder<T> extends DatabaseValueHolder<T> implements Externalizable {
// This is a unique id for remote value holder.
protected ObjID id;
@@ -38,7 +38,7 @@
protected transient ObjectLevelReadQuery query;
// The server side original value holder.
- protected transient ValueHolderInterface<Object> wrappedServerValueHolder;
+ protected transient ValueHolderInterface<T> wrappedServerValueHolder;
// point back to the object holding the remote value holder;
// for the moment, used only by TransparentIndirection
@@ -74,7 +74,7 @@
return false;
}
- return getID().equals(((RemoteValueHolder)object).getID());
+ return getID().equals(((RemoteValueHolder<?>)object).getID());
}
/**
@@ -149,7 +149,7 @@
* This is how we know whether the remote value holder is
* being invoked on the client or on the server.
*/
- public ValueHolderInterface<Object> getWrappedServerValueHolder() {
+ public ValueHolderInterface<T> getWrappedServerValueHolder() {
return wrappedServerValueHolder;
}
@@ -165,20 +165,21 @@
* Return the object.
*/
@Override
- public synchronized Object instantiate() {
- Object valueOfServerValueHolder = null;
+ @SuppressWarnings({"unchecked"})
+ public synchronized T instantiate() {
+ T valueOfServerValueHolder = null;
if (getWrappedServerValueHolder() != null) {// server invocation
valueOfServerValueHolder = getWrappedServerValueHolder().getValue();
} else {// client invocation
// check whether object exists on the client
if (canDoCacheCheck()) {
- valueOfServerValueHolder = getObjectFromCache();
+ valueOfServerValueHolder = (T) getObjectFromCache();
}
// does not exist on the client - so invoke the value holder on the server
if (valueOfServerValueHolder == null) {
- valueOfServerValueHolder = ((DistributedSession)getSession()).instantiateRemoteValueHolderOnServer(this);
+ valueOfServerValueHolder = (T) ((DistributedSession)getSession()).instantiateRemoteValueHolderOnServer(this);
}
}
return valueOfServerValueHolder;
@@ -193,7 +194,7 @@
public boolean isEasilyInstantiated() {
// Nothing is easily instantiated when on the client side.
return this.isInstantiated || ((this.wrappedServerValueHolder != null)
- && (!(this.wrappedServerValueHolder instanceof DatabaseValueHolder) || ((DatabaseValueHolder)this.wrappedServerValueHolder).isEasilyInstantiated()));
+ && (!(this.wrappedServerValueHolder instanceof DatabaseValueHolder) || ((DatabaseValueHolder<T>)this.wrappedServerValueHolder).isEasilyInstantiated()));
}
/**
@@ -210,7 +211,7 @@
// This abstract method needs to be implemented but is not meaningfull for
// this subclass.
if (getWrappedServerValueHolder() != null) {
- return ((getWrappedServerValueHolder() instanceof DatabaseValueHolder) && ((DatabaseValueHolder)getWrappedServerValueHolder()).isPessimisticLockingValueHolder());
+ return ((getWrappedServerValueHolder() instanceof DatabaseValueHolder) && ((DatabaseValueHolder<T>)getWrappedServerValueHolder()).isPessimisticLockingValueHolder());
} else {
// Pessimistic locking may not be supported on remote sessions, but if
// it is make every attempt to do the right thing.
@@ -230,9 +231,9 @@
* Note: This method is not thread-safe. It must be used in a synchronizaed manner
*/
@Override
- public Object instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder unitOfWorkValueHolder) {
+ public T instantiateForUnitOfWorkValueHolder(UnitOfWorkValueHolder<T> unitOfWorkValueHolder) {
if ((getWrappedServerValueHolder() != null) && (getWrappedServerValueHolder() instanceof DatabaseValueHolder)) {
- DatabaseValueHolder wrapped = (DatabaseValueHolder)getWrappedServerValueHolder();
+ DatabaseValueHolder<T> wrapped = (DatabaseValueHolder<T>)getWrappedServerValueHolder();
return wrapped.instantiateForUnitOfWorkValueHolder(unitOfWorkValueHolder);
}
@@ -296,7 +297,7 @@
* Set the object.
*/
@Override
- public void setValue(Object theValue) {
+ public void setValue(T theValue) {
super.setValue(theValue);
if (getWrappedServerValueHolder() != null) {
// This is a local setting of remote value holder
@@ -308,7 +309,7 @@
/**
* Set the original value holder.
*/
- public void setWrappedServerValueHolder(ValueHolderInterface wrappedServerValueHolder) {
+ public void setWrappedServerValueHolder(ValueHolderInterface<T> wrappedServerValueHolder) {
this.wrappedServerValueHolder = wrappedServerValueHolder;
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/remote/Transporter.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/remote/Transporter.java
index ae6400c..c04f69e 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/remote/Transporter.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/remote/Transporter.java
@@ -33,7 +33,7 @@
public boolean wasOperationSuccessful;
// Changed to public to allow access to TransporterHolder and TransporterHepler in org.eclipse.persistence.sessions.remote.corba.orbix.
- protected Map objectDescriptors;
+ protected Map<Object, ObjectDescriptor> objectDescriptors;
protected DatabaseQuery query;
public Transporter() {
@@ -85,7 +85,7 @@
/**
* Returns a hashtable of object descriptors.
*/
- public Map getObjectDescriptors() {
+ public Map<Object, ObjectDescriptor> getObjectDescriptors() {
return objectDescriptors;
}
@@ -115,7 +115,7 @@
/**
* Get object to object descriptor
*/
- public void setObjectDescriptors(Map objectDescriptors) {
+ public void setObjectDescriptors(Map<Object, ObjectDescriptor> objectDescriptors) {
this.objectDescriptors = objectDescriptors;
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateCollectionMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateCollectionMapping.java
index 15be2c5..0f19c14 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateCollectionMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateCollectionMapping.java
@@ -2203,7 +2203,7 @@
@Override
public void mergeChangesIntoObject(Object target, ChangeRecord changeRecord, Object source, MergeManager mergeManager, AbstractSession targetSession) {
if (this.descriptor.getCachePolicy().isProtectedIsolation() && !this.isCacheable && !targetSession.isProtectedSession()) {
- setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder(null)));
+ setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder<>(null)));
return;
}
//Check to see if the target has an instantiated collection
@@ -2264,7 +2264,7 @@
@Override
public void mergeIntoObject(Object target, boolean isTargetUnInitialized, Object source, MergeManager mergeManager, AbstractSession targetSession) {
if (this.descriptor.getCachePolicy().isProtectedIsolation() && !this.isCacheable && !targetSession.isProtectedSession()) {
- setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder(null)));
+ setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder<>(null)));
return;
}
if (isTargetUnInitialized) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateMapping.java
index a49176b..a526f10 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateMapping.java
@@ -41,6 +41,7 @@
import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
import org.eclipse.persistence.internal.security.PrivilegedClassForName;
import org.eclipse.persistence.internal.sessions.*;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.queries.*;
import org.eclipse.persistence.sessions.remote.*;
import org.eclipse.persistence.sessions.CopyGroup;
@@ -409,7 +410,7 @@
* Replace the transient attributes of the remote value holders
* with client-side objects.
*/
- protected void fixAttributeValue(Object attributeValue, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ protected void fixAttributeValue(Object attributeValue, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
if (attributeValue == null) {
return;
}
@@ -423,7 +424,7 @@
* with client-side objects.
*/
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
Object attributeValue = getAttributeValueFromObject(object);
fixAttributeValue(attributeValue, objectDescriptors, processedObjects, query, session);
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/CollectionMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/CollectionMapping.java
index cc50897..dd540db 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/CollectionMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/CollectionMapping.java
@@ -1046,7 +1046,7 @@
* the corresponding object(s) from the remote session.
*/
@Override
- public void fixRealObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixRealObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
//bug 4147755 getRealAttribute... / setReal
Object attributeValue = getRealAttributeValueFromObject(object, session);
@@ -1106,7 +1106,7 @@
* maintaining object identity.
*/
@Override
- public Object getObjectCorrespondingTo(Object object, DistributedSession session, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query) {
+ public Object getObjectCorrespondingTo(Object object, DistributedSession session, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query) {
return session.getObjectsCorrespondingToAll(object, objectDescriptors, processedObjects, query, this.containerPolicy);
}
@@ -1458,7 +1458,7 @@
@Override
public void mergeChangesIntoObject(Object target, ChangeRecord chgRecord, Object source, MergeManager mergeManager, AbstractSession targetSession) {
if (this.descriptor.getCachePolicy().isProtectedIsolation()&& !this.isCacheable && !targetSession.isProtectedSession()){
- setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder(null)));
+ setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder<>(null)));
return;
}
Object valueOfTarget = null;
@@ -1523,7 +1523,7 @@
@Override
public void mergeIntoObject(Object target, boolean isTargetUnInitialized, Object source, MergeManager mergeManager, AbstractSession targetSession) {
if (this.descriptor.getCachePolicy().isProtectedIsolation() && !this.isCacheable && !targetSession.isProtectedSession()){
- setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder(null)));
+ setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder<>(null)));
return;
}
if (isTargetUnInitialized) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DatabaseMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DatabaseMapping.java
index 50a3773..0af1fe4 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DatabaseMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DatabaseMapping.java
@@ -73,6 +73,7 @@
import org.eclipse.persistence.internal.sessions.ObjectChangeSet;
import org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.internal.sessions.remote.RemoteSessionController;
import org.eclipse.persistence.internal.sessions.remote.RemoteValueHolder;
import org.eclipse.persistence.mappings.converters.Converter;
@@ -588,7 +589,7 @@
* @param classLoader TODO
*/
protected void convertConverterClassNamesToClasses(Converter converter, ClassLoader classLoader) {
- if (converter != null && converter instanceof ClassNameConversionRequired) {
+ if (converter instanceof ClassNameConversionRequired) {
((ClassNameConversionRequired)converter).convertClassNamesToClasses(classLoader);
}
}
@@ -607,7 +608,7 @@
* the shared cache, and then cloning the original.
* @return TODO
*/
- public DatabaseValueHolder createCloneValueHolder(ValueHolderInterface attributeValue, Object original, Object clone, AbstractRecord row, AbstractSession cloningSession, boolean buildDirectlyFromRow) {
+ public <T> DatabaseValueHolder<T> createCloneValueHolder(ValueHolderInterface<T> attributeValue, Object original, Object clone, AbstractRecord row, AbstractSession cloningSession, boolean buildDirectlyFromRow) {
throw DescriptorException.invalidMappingOperation(this, "createUnitOfWorkValueHolder");
}
@@ -641,7 +642,7 @@
* @return TODO
*/
protected List<Expression> extractNestedExpressions(List<Expression> expressions, ExpressionBuilder newRoot) {
- List<Expression> nestedExpressions = new ArrayList(expressions.size());
+ List<Expression> nestedExpressions = new ArrayList<>(expressions.size());
/*
* If the expression closest to to the Builder is for this mapping, that expression is rebuilt using
@@ -685,7 +686,7 @@
* @return TODO
*/
protected List<Expression> extractNestedNonAggregateExpressions(List<Expression> expressions, ExpressionBuilder newRoot, boolean rootExpressionsAllowed) {
- List<Expression> nestedExpressions = new ArrayList(expressions.size());
+ List<Expression> nestedExpressions = new ArrayList<>(expressions.size());
/*
* need to work on all expressions with at least 2 nestings off the base expression builder, excluding
@@ -777,7 +778,7 @@
* @param query TODO
* @param session TODO
*/
- public abstract void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session);
+ public abstract void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session);
/**
* INTERNAL:
@@ -792,7 +793,7 @@
* @param query TODO
* @param session TODO
*/
- public void fixRealObjectReferences(Object object, Map objectInformation, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixRealObjectReferences(Object object, Map<Object, ObjectDescriptor> objectInformation, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
// do nothing
}
@@ -996,7 +997,7 @@
* @param query TODO
* @return TODO
*/
- public Object getObjectCorrespondingTo(Object object, DistributedSession session, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query) {
+ public Object getObjectCorrespondingTo(Object object, DistributedSession session, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query) {
return object;
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DirectCollectionMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DirectCollectionMapping.java
index 0f3a177..3e6ff18 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DirectCollectionMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DirectCollectionMapping.java
@@ -91,6 +91,7 @@
import org.eclipse.persistence.internal.sessions.MergeManager;
import org.eclipse.persistence.internal.sessions.ObjectChangeSet;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.internal.sessions.remote.RemoteSessionController;
import org.eclipse.persistence.mappings.converters.Converter;
import org.eclipse.persistence.mappings.converters.ObjectTypeConverter;
@@ -1146,7 +1147,7 @@
* are primitives, so they do not need to be replaced.
*/
@Override
- public void fixRealObjectReferences(Object object, Map objectInformation, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixRealObjectReferences(Object object, Map<Object, ObjectDescriptor> objectInformation, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
// do nothing
}
@@ -1282,7 +1283,7 @@
* maintaining object identity.
*/
@Override
- public Object getObjectCorrespondingTo(Object object, DistributedSession session, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query) {
+ public Object getObjectCorrespondingTo(Object object, DistributedSession session, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query) {
return object;
}
@@ -1973,7 +1974,7 @@
@Override
public void mergeChangesIntoObject(Object target, ChangeRecord changeRecord, Object source, MergeManager mergeManager, AbstractSession targetSession) {
if (this.descriptor.getCachePolicy().isProtectedIsolation()&& !this.isCacheable && !targetSession.isProtectedSession()){
- setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder(null)));
+ setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder<>(null)));
return;
}
ContainerPolicy containerPolicy = getContainerPolicy();
@@ -2104,7 +2105,7 @@
@Override
public void mergeIntoObject(Object target, boolean isTargetUnInitialized, Object source, MergeManager mergeManager, AbstractSession targetSession) {
if (this.descriptor.getCachePolicy().isProtectedIsolation() && !this.isCacheable && !targetSession.isProtectedSession()){
- setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder(null)));
+ setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder<>(null)));
return;
}
if (isTargetUnInitialized) {
@@ -3195,7 +3196,7 @@
}
return result;
} else if (!this.isCacheable && !isTargetProtected && cacheKey != null) {
- return this.indirectionPolicy.buildIndirectObject(new ValueHolder(null));
+ return this.indirectionPolicy.buildIndirectObject(new ValueHolder<>(null));
}
}
if (row.hasSopObject()) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DirectMapMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DirectMapMapping.java
index 8fad0ff..fea4c8e 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DirectMapMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DirectMapMapping.java
@@ -518,7 +518,7 @@
@Override
public void mergeChangesIntoObject(Object target, ChangeRecord changeRecord, Object source, MergeManager mergeManager, AbstractSession targetSession) {
if (this.descriptor.getCachePolicy().isProtectedIsolation()&& !this.isCacheable && !targetSession.isProtectedSession()){
- setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder(null)));
+ setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder<>(null)));
return;
}
Map valueOfTarget = null;
@@ -585,7 +585,7 @@
@Override
public void mergeIntoObject(Object target, boolean isTargetUnInitialized, Object source, MergeManager mergeManager, AbstractSession targetSession) {
if (this.descriptor.getCachePolicy().isProtectedIsolation()&& !this.isCacheable && !targetSession.isProtectedSession()){
- setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder(null)));
+ setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder<>(null)));
return;
}
if (isTargetUnInitialized) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ForeignReferenceMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ForeignReferenceMapping.java
index afc1cc3..fed4f9a 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ForeignReferenceMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ForeignReferenceMapping.java
@@ -78,6 +78,7 @@
import org.eclipse.persistence.internal.sessions.MergeManager;
import org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.internal.sessions.remote.RemoteSessionController;
import org.eclipse.persistence.internal.sessions.remote.RemoteValueHolder;
import org.eclipse.persistence.logging.SessionLog;
@@ -448,10 +449,9 @@
* Ignore the original object.
* @param buildDirectlyFromRow indicates that we are building the clone directly
* from a row as opposed to building the original from the row, putting it in
- * the shared cache, and then cloning the original.
*/
@Override
- public DatabaseValueHolder createCloneValueHolder(ValueHolderInterface attributeValue, Object original, Object clone, AbstractRecord row, AbstractSession cloningSession, boolean buildDirectlyFromRow) {
+ public <T> DatabaseValueHolder<T> createCloneValueHolder(ValueHolderInterface<T> attributeValue, Object original, Object clone, AbstractRecord row, AbstractSession cloningSession, boolean buildDirectlyFromRow) {
return cloningSession.createCloneQueryValueHolder(attributeValue, clone, row, this);
}
@@ -997,7 +997,7 @@
* with client-side objects.
*/
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
this.indirectionPolicy.fixObjectReferences(object, objectDescriptors, processedObjects, query, session);
}
@@ -1087,7 +1087,7 @@
* maintaining object identity.
*/
@Override
- public Object getObjectCorrespondingTo(Object object, DistributedSession session, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query) {
+ public Object getObjectCorrespondingTo(Object object, DistributedSession session, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query) {
return session.getObjectCorrespondingTo(object, objectDescriptors, processedObjects, query);
}
@@ -2157,7 +2157,7 @@
return getAttributeValueFromObject(cached);
}
} else if (!this.isCacheable && !isTargetProtected && cacheKey != null) {
- return this.indirectionPolicy.buildIndirectObject(new ValueHolder(null));
+ return this.indirectionPolicy.buildIndirectObject(new ValueHolder<>(null));
}
}
if (row.hasSopObject()) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ObjectReferenceMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ObjectReferenceMapping.java
index 005ef2c..2ace71d 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ObjectReferenceMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ObjectReferenceMapping.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
@@ -46,6 +46,7 @@
import org.eclipse.persistence.internal.sessions.ObjectReferenceChangeRecord;
import org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.queries.DeleteObjectQuery;
import org.eclipse.persistence.queries.InsertObjectQuery;
import org.eclipse.persistence.queries.ObjectBuildingQuery;
@@ -320,7 +321,7 @@
* reference object.
*/
@Override
- public void fixRealObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixRealObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
//bug 4147755 getRealAttribute... / setReal...
Object attributeValue = getRealAttributeValueFromObject(object, session);
attributeValue = getReferenceDescriptor().getObjectBuilder().unwrapObject(attributeValue, session);
@@ -397,7 +398,7 @@
@Override
public void mergeChangesIntoObject(Object target, ChangeRecord changeRecord, Object source, MergeManager mergeManager, AbstractSession targetSession) {
if (this.descriptor.getCachePolicy().isProtectedIsolation()&& !this.isCacheable && !targetSession.isProtectedSession()){
- setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder(null)));
+ setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder<>(null)));
return;
}
Object targetValueOfSource = null;
@@ -467,7 +468,7 @@
@Override
public void mergeIntoObject(Object target, boolean isTargetUnInitialized, Object source, MergeManager mergeManager, AbstractSession targetSession) {
if (this.descriptor.getCachePolicy().isProtectedIsolation()&& !this.isCacheable && !targetSession.isProtectedSession()){
- setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder(null)));
+ setAttributeValueInObject(target, this.indirectionPolicy.buildIndirectObject(new ValueHolder<>(null)));
return;
}
if (isTargetUnInitialized) {
@@ -1037,8 +1038,8 @@
* the shared cache, and then cloning the original.
*/
@Override
- public DatabaseValueHolder createCloneValueHolder(ValueHolderInterface attributeValue, Object original, Object clone, AbstractRecord row, AbstractSession cloningSession, boolean buildDirectlyFromRow) {
- DatabaseValueHolder valueHolder = null;
+ public <T> DatabaseValueHolder<T> createCloneValueHolder(ValueHolderInterface<T> attributeValue, Object original, Object clone, AbstractRecord row, AbstractSession cloningSession, boolean buildDirectlyFromRow) {
+ DatabaseValueHolder<T> valueHolder = null;
//Bug#457480 : If original (from cache) is null, load from row
if ((row == null && original != null) && (isPrimaryKeyMapping())) {
// The row must be built if a primary key mapping for remote case.
@@ -1054,7 +1055,7 @@
// Note that this UOW valueholder starts off as instantiated but that
// is fine, for the reality is that it is.
if (buildDirectlyFromRow && attributeValue.isInstantiated()) {
- Object cloneAttributeValue = attributeValue.getValue();
+ T cloneAttributeValue = attributeValue.getValue();
valueHolder.privilegedSetValue(cloneAttributeValue);
valueHolder.setInstantiated();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/VariableOneToOneMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/VariableOneToOneMapping.java
index 86e7678..9ae73e2 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/VariableOneToOneMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/VariableOneToOneMapping.java
@@ -763,7 +763,7 @@
return this.getAttributeValueFromObject(cached);
}
} else if (!this.isCacheable && !isTargetProtected && cacheKey != null) {
- return this.indirectionPolicy.buildIndirectObject(new ValueHolder(null));
+ return this.indirectionPolicy.buildIndirectObject(new ValueHolder<>(null));
}
}
if (row.hasSopObject()) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractColumnMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractColumnMapping.java
index 437974e..6e62561 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractColumnMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractColumnMapping.java
@@ -37,6 +37,7 @@
import org.eclipse.persistence.internal.sessions.AbstractRecord;
import org.eclipse.persistence.internal.sessions.AbstractSession;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.mappings.converters.Converter;
import org.eclipse.persistence.queries.ObjectLevelReadQuery;
@@ -180,7 +181,7 @@
* with client-side objects.
*/
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
}
/**
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractCompositeCollectionMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractCompositeCollectionMapping.java
index e22a7c0..77b3865 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractCompositeCollectionMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractCompositeCollectionMapping.java
@@ -26,6 +26,7 @@
import org.eclipse.persistence.internal.identitymaps.CacheKey;
import org.eclipse.persistence.internal.queries.*;
import org.eclipse.persistence.internal.sessions.*;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.mappings.*;
import org.eclipse.persistence.mappings.converters.Converter;
import org.eclipse.persistence.mappings.structures.ArrayCollectionMapping;
@@ -328,7 +329,7 @@
* with client-side objects.
*/
@Override
- protected void fixAttributeValue(Object attributeValue, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ protected void fixAttributeValue(Object attributeValue, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
if (attributeValue == null) {
return;
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractCompositeDirectCollectionMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractCompositeDirectCollectionMapping.java
index e0d03c1..eb9467b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractCompositeDirectCollectionMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractCompositeDirectCollectionMapping.java
@@ -25,6 +25,7 @@
import org.eclipse.persistence.internal.oxm.mappings.Field;
import org.eclipse.persistence.internal.queries.*;
import org.eclipse.persistence.internal.sessions.*;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.mappings.*;
import org.eclipse.persistence.mappings.converters.*;
import org.eclipse.persistence.mappings.structures.ArrayCollectionMapping;
@@ -289,7 +290,7 @@
* with client-side objects.
*/
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
// Do nothing....
// The nested collection should de-serialize without need for any further manipulation.
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractTransformationMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractTransformationMapping.java
index a96f78d..8c4bb49 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractTransformationMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractTransformationMapping.java
@@ -62,6 +62,7 @@
import org.eclipse.persistence.internal.sessions.ObjectChangeSet;
import org.eclipse.persistence.internal.sessions.TransformationMappingChangeRecord;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.internal.sessions.remote.RemoteValueHolder;
import org.eclipse.persistence.mappings.Association;
import org.eclipse.persistence.mappings.DatabaseMapping;
@@ -608,7 +609,7 @@
* the shared cache, and then cloning the original.
*/
@Override
- public DatabaseValueHolder createCloneValueHolder(ValueHolderInterface attributeValue, Object original, Object clone, AbstractRecord row, AbstractSession cloningSession, boolean buildDirectlyFromRow) {
+ public <T> DatabaseValueHolder<T> createCloneValueHolder(ValueHolderInterface<T> attributeValue, Object original, Object clone, AbstractRecord row, AbstractSession cloningSession, boolean buildDirectlyFromRow) {
return cloningSession.createCloneTransformationValueHolder(attributeValue, original, clone, this);
}
@@ -628,7 +629,7 @@
* with client-side objects.
*/
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
this.indirectionPolicy.fixObjectReferences(object, objectDescriptors, processedObjects, query, session);
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/structures/ReferenceMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/structures/ReferenceMapping.java
index 1196391..542f84a 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/structures/ReferenceMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/structures/ReferenceMapping.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
@@ -313,7 +313,7 @@
}
return result;
} else if (!this.isCacheable && !isTargetProtected && cacheKey != null) {
- return this.indirectionPolicy.buildIndirectObject(new ValueHolder(null));
+ return this.indirectionPolicy.buildIndirectObject(new ValueHolder<>(null));
}
}
AbstractRecord targetRow = null;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyAttributeMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyAttributeMapping.java
index fcde74c..2cba131 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyAttributeMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyAttributeMapping.java
@@ -44,6 +44,7 @@
import org.eclipse.persistence.internal.sessions.MergeManager;
import org.eclipse.persistence.internal.sessions.ObjectChangeSet;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.mappings.AttributeAccessor;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.oxm.NamespaceResolver;
@@ -171,7 +172,7 @@
* with client-side objects.
*/
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
throw DescriptorException.invalidMappingOperation(this, "fixObjectReferences");
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyCollectionMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyCollectionMapping.java
index 06888b6..722c1bd 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyCollectionMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyCollectionMapping.java
@@ -43,6 +43,7 @@
import org.eclipse.persistence.internal.sessions.MergeManager;
import org.eclipse.persistence.internal.sessions.ObjectChangeSet;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.mappings.AttributeAccessor;
import org.eclipse.persistence.mappings.ContainerMapping;
import org.eclipse.persistence.mappings.DatabaseMapping;
@@ -264,7 +265,7 @@
* with client-side objects.
*/
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
throw DescriptorException.invalidMappingOperation(this, "fixObjectReferences");
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyObjectMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyObjectMapping.java
index 9efc297..cd47875 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyObjectMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyObjectMapping.java
@@ -41,6 +41,7 @@
import org.eclipse.persistence.internal.sessions.MergeManager;
import org.eclipse.persistence.internal.sessions.ObjectChangeSet;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.mappings.AttributeAccessor;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.oxm.XMLConstants;
@@ -253,7 +254,7 @@
* with client-side objects.
*/
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
throw DescriptorException.invalidMappingOperation(this, "fixObjectReferences");
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceCollectionMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceCollectionMapping.java
index 9f026b1..6f64881 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceCollectionMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceCollectionMapping.java
@@ -55,6 +55,7 @@
import org.eclipse.persistence.internal.sessions.MergeManager;
import org.eclipse.persistence.internal.sessions.ObjectChangeSet;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.mappings.AttributeAccessor;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.mappings.converters.Converter;
@@ -224,7 +225,7 @@
* with client-side objects.
*/
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
throw DescriptorException.invalidMappingOperation(this, "fixObjectReferences");
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceObjectMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceObjectMapping.java
index b647a13..52170b5 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceObjectMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceObjectMapping.java
@@ -43,6 +43,7 @@
import org.eclipse.persistence.internal.sessions.MergeManager;
import org.eclipse.persistence.internal.sessions.ObjectChangeSet;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.mappings.AttributeAccessor;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.mappings.converters.Converter;
@@ -213,7 +214,7 @@
* with client-side objects.
*/
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) {
throw DescriptorException.invalidMappingOperation(this, "fixObjectReferences");
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLInverseReferenceMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLInverseReferenceMapping.java
index b0c9584..3128a15 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLInverseReferenceMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLInverseReferenceMapping.java
@@ -36,6 +36,7 @@
import org.eclipse.persistence.internal.sessions.MergeManager;
import org.eclipse.persistence.internal.sessions.ObjectChangeSet;
import org.eclipse.persistence.internal.sessions.UnitOfWorkImpl;
+import org.eclipse.persistence.internal.sessions.remote.ObjectDescriptor;
import org.eclipse.persistence.mappings.AggregateMapping;
import org.eclipse.persistence.mappings.AttributeAccessor;
import org.eclipse.persistence.mappings.ContainerMapping;
@@ -220,9 +221,9 @@
}
@Override
- public void fixObjectReferences(Object object, Map objectDescriptors,
- Map processedObjects, ObjectLevelReadQuery query,
- DistributedSession session) {
+ public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors,
+ Map<Object, Object> processedObjects, ObjectLevelReadQuery query,
+ DistributedSession session) {
}
@Override
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/xml/XMLPlatformFactory.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/xml/XMLPlatformFactory.java
index 3d5429b..e62c2b3 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/xml/XMLPlatformFactory.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/xml/XMLPlatformFactory.java
@@ -106,7 +106,7 @@
try {
if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
try{
- return (XMLPlatform)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(getXMLPlatformClass()));
+ return AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<>(getXMLPlatformClass()));
}catch (PrivilegedActionException ex){
throw (RuntimeException) ex.getCause();
}
@@ -114,9 +114,7 @@
return PrivilegedAccessHelper.newInstanceFromClass(getXMLPlatformClass());
}
- } catch (IllegalAccessException e) {
- throw XMLPlatformException.xmlPlatformCouldNotInstantiate(getXMLPlatformClass().getName(), e);
- } catch (InstantiationException e) {
+ } catch (ReflectiveOperationException e) {
throw XMLPlatformException.xmlPlatformCouldNotInstantiate(getXMLPlatformClass().getName(), e);
}
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/remote/DistributedSession.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/remote/DistributedSession.java
index 2bcdcfe..d0d39a2 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/remote/DistributedSession.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/remote/DistributedSession.java
@@ -270,13 +270,13 @@
* INTERNAL:
* Return the corresponding objects from the remote session for the objects read from the server.
*/
- public abstract Object getObjectCorrespondingTo(Object serverSideDomainObject, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query);
+ public abstract Object getObjectCorrespondingTo(Object serverSideDomainObject, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query);
/**
* INTERNAL:
* Return the corresponding objects from the remote session for the objects read from the server.
*/
- public abstract Object getObjectsCorrespondingToAll(Object serverSideDomainObjects, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, ContainerPolicy containerPolicy);
+ public abstract Object getObjectsCorrespondingToAll(Object serverSideDomainObjects, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, ContainerPolicy containerPolicy);
/**
* INTERNAL:
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/remote/RemoteSession.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/remote/RemoteSession.java
index 5031eef..b1d1ab4 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/remote/RemoteSession.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/remote/RemoteSession.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
@@ -168,7 +168,7 @@
* Return the corresponding objects from the remote session for the objects read from the server.
*/
@Override
- public Object getObjectCorrespondingTo(Object serverSideDomainObject, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query) {
+ public Object getObjectCorrespondingTo(Object serverSideDomainObject, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query) {
if (serverSideDomainObject == null) {
return null;
}
@@ -187,7 +187,7 @@
// with this primary key then that's the corresponding object. Other wise its a new object for the remote
// session which needs to be registered in the remote sessions identity map and this is also a corresponding
// object.
- ObjectDescriptor objectDescriptor = (ObjectDescriptor)objectDescriptors.get(serverSideDomainObject);
+ ObjectDescriptor objectDescriptor = objectDescriptors.get(serverSideDomainObject);
if (objectDescriptor == null){
//the object must have been added concurrently before serialize generate a new ObjectDescriptor on this side
objectDescriptor = new ObjectDescriptor();
@@ -243,7 +243,7 @@
* Return the corresponding objects from the remote session for the objects read from the server.
*/
@Override
- public Object getObjectsCorrespondingToAll(Object serverSideDomainObjects, Map objectDescriptors, Map processedObjects, ObjectLevelReadQuery query, ContainerPolicy containerPolicy) {
+ public Object getObjectsCorrespondingToAll(Object serverSideDomainObjects, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, ContainerPolicy containerPolicy) {
Object clientSideDomainObjects = containerPolicy.containerInstance(containerPolicy.sizeFor(serverSideDomainObjects));
for (Object iter = containerPolicy.iteratorFor(serverSideDomainObjects);
@@ -264,7 +264,7 @@
startOperationProfile(SessionProfiler.RemoteLazy, null, SessionProfiler.ALL);
Transporter transporter = getRemoteConnection().instantiateRemoteValueHolderOnServer(remoteValueHolder);
endOperationProfile(SessionProfiler.RemoteLazy, null, SessionProfiler.ALL);
- return remoteValueHolder.getMapping().getObjectCorrespondingTo(transporter.getObject(), this, transporter.getObjectDescriptors(), new IdentityHashMap(), remoteValueHolder.getQuery());
+ return remoteValueHolder.getMapping().getObjectCorrespondingTo(transporter.getObject(), this, transporter.getObjectDescriptors(), new IdentityHashMap<>(), remoteValueHolder.getQuery());
}
/**
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/SchemaManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/SchemaManager.java
index 839b1a6..bac8d15 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/SchemaManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/SchemaManager.java
@@ -35,6 +35,7 @@
import org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor;
import org.eclipse.persistence.internal.helper.Helper;
import org.eclipse.persistence.internal.sequencing.Sequencing;
+import org.eclipse.persistence.internal.sessions.AbstractRecord;
import org.eclipse.persistence.internal.sessions.AbstractSession;
import org.eclipse.persistence.internal.sessions.DatabaseSessionImpl;
import org.eclipse.persistence.sequencing.DefaultSequence;
@@ -708,7 +709,7 @@
* @param tableName a table name pattern
* @return a Vector of Records.
*/
- public Vector getAllColumnNames(String tableName) throws DatabaseException {
+ public Vector<AbstractRecord> getAllColumnNames(String tableName) throws DatabaseException {
return getAccessor().getColumnInfo(null, null, tableName, null, getSession());
}
@@ -753,7 +754,7 @@
* @param tableName a table name pattern
* @return a Vector of Records.
*/
- public Vector getAllColumnNames(String creatorName, String tableName) throws DatabaseException {
+ public Vector<AbstractRecord> getAllColumnNames(String creatorName, String tableName) throws DatabaseException {
return getAccessor().getColumnInfo(null, creatorName, tableName, null, getSession());
}
@@ -776,7 +777,7 @@
*
* @return a Vector of Records.
*/
- public Vector getAllTableNames() throws DatabaseException {
+ public Vector<AbstractRecord> getAllTableNames() throws DatabaseException {
return getAccessor().getTableInfo(null, null, null, null, getSession());
}
@@ -820,7 +821,7 @@
* without a schema
* @return a Vector of Records.
*/
- public Vector getAllTableNames(String creatorName) throws DatabaseException {
+ public Vector<AbstractRecord> getAllTableNames(String creatorName) throws DatabaseException {
return getAccessor().getTableInfo(null, creatorName, null, null, getSession());
}
@@ -872,7 +873,7 @@
* @param columnName a column name pattern
* @return a Vector of Records.
*/
- public Vector getColumnInfo(String catalog, String schema, String tableName, String columnName) throws DatabaseException {
+ public Vector<AbstractRecord> getColumnInfo(String catalog, String schema, String tableName, String columnName) throws DatabaseException {
return getAccessor().getColumnInfo(catalog, schema, tableName, columnName, getSession());
}
@@ -909,7 +910,7 @@
* @param types a list of table types to include; null returns all types
* @return a Vector of Records.
*/
- public Vector getTableInfo(String catalog, String schema, String tableName, String[] types) throws DatabaseException {
+ public Vector<AbstractRecord> getTableInfo(String catalog, String schema, String tableName, String[] types) throws DatabaseException {
return getAccessor().getTableInfo(catalog, schema, tableName, types, getSession());
}
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/TableCreator.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/TableCreator.java
index a29aa03..4e61ba0 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/TableCreator.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/TableCreator.java
@@ -27,6 +27,7 @@
import org.eclipse.persistence.exceptions.DatabaseException;
import org.eclipse.persistence.internal.helper.DatabaseField;
+import org.eclipse.persistence.internal.sessions.AbstractRecord;
import org.eclipse.persistence.internal.sessions.AbstractSession;
import org.eclipse.persistence.logging.SessionLog;
import org.eclipse.persistence.platform.database.DatabasePlatform;
@@ -479,7 +480,7 @@
//as it is stored internally.
String tableName = table.getTable()==null? table.getName(): table.getTable().getName();
final boolean usesDelimiting = (table.getTable()!=null && table.getTable().shouldUseDelimiters());
- List<DatabaseRecord> columnInfo = null;
+ List<AbstractRecord> columnInfo = null;
//I need the actual table catalog, schema and tableName for getTableInfo.
columnInfo = abstractSession.getAccessor().getColumnInfo(null, null, tableName, null, abstractSession);
@@ -496,7 +497,7 @@
//Table exists, add individual fields as necessary
//hash the table's existing columns by name
- final Map<DatabaseField, DatabaseRecord> columns = new HashMap<>(columnInfo.size());
+ final Map<DatabaseField, AbstractRecord> columns = new HashMap<>(columnInfo.size());
final DatabaseField columnNameLookupField = new DatabaseField("COLUMN_NAME");
final DatabaseField schemaLookupField = new DatabaseField("TABLE_SCHEM");
boolean schemaMatchFound = false;
@@ -516,7 +517,7 @@
}
}
final boolean checkSchema = (qualifier != null) && (qualifier.length() > 0);
- for (final DatabaseRecord record : columnInfo) {
+ for (final AbstractRecord record : columnInfo) {
final String fieldName = (String)record.get(columnNameLookupField);
if (fieldName != null && fieldName.length() > 0) {
final DatabaseField column = new DatabaseField(fieldName);
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityClassListener.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityClassListener.java
index 1df7bbf..84b2814 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityClassListener.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityClassListener.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,7 +35,7 @@
/**
* INTERNAL:
*/
- public EntityClassListener(Class entityClass) {
+ public EntityClassListener(Class<?> entityClass) {
super(entityClass);
}
@@ -57,7 +57,7 @@
* INTERNAL:
*/
@Override
- public Class getListenerClass() {
+ public Class<?> getListenerClass() {
return getEntityClass();
}
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/JPAEntityListenerHolder.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/JPAEntityListenerHolder.java
index d9dd77d..28c73e8 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/JPAEntityListenerHolder.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/JPAEntityListenerHolder.java
@@ -59,12 +59,12 @@
if (listener == null) {
if (listenerClassName !=null) {
- Class listenerClass = getListenerClass(loader);
+ Class<?> listenerClass = getListenerClass(loader);
if (DescriptorEventListener.class.isAssignableFrom(listenerClass)){
listener = (DescriptorEventListener)constructListenerInstance(listenerClass);
} else {
- EntityListener entityListener = new EntityListener(listenerClass, descriptor.getJavaClass());
+ EntityListener<?> entityListener = new EntityListener<>(listenerClass, descriptor.getJavaClass());
entityListener.setOwningSession(session);
if (!(serializableMethods == null)) {
//The user class is not a DescriptorEventListener, so wrap it in a JPA EntityListener instance
@@ -76,7 +76,7 @@
} else {
//it must be an EntityClassListener
- EntityListener entityListener = new EntityClassListener(descriptor.getJavaClass());
+ EntityListener<?> entityListener = new EntityClassListener<>(descriptor.getJavaClass());
entityListener.setAllEventMethods(this.convertToMethods(loader));
listener = entityListener;
}
@@ -94,21 +94,19 @@
}
- protected Object constructListenerInstance(Class listenerClass){
- Object entityListenerClassInstance = null;
+ protected Object constructListenerInstance(Class<?> listenerClass){
+ Object entityListenerClassInstance;
try {
if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
try {
- entityListenerClassInstance = AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(listenerClass));
+ entityListenerClassInstance = AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<>(listenerClass));
} catch (PrivilegedActionException exception) {
throw ValidationException.errorInstantiatingClass(listenerClass, exception.getException());
}
} else {
entityListenerClassInstance = PrivilegedAccessHelper.newInstanceFromClass(listenerClass);
}
- } catch (IllegalAccessException exception) {
- throw ValidationException.errorInstantiatingClass(listenerClass, exception);
- } catch (InstantiationException exception) {
+ } catch (ReflectiveOperationException exception) {
throw ValidationException.errorInstantiatingClass(listenerClass, exception);
}
return entityListenerClassInstance;
@@ -137,8 +135,8 @@
* used to return an instance of the listenerClassName
* @return an instance of listenerClassName
*/
- private Class getListenerClass(ClassLoader loader){
- Class entityListenerClass = null;
+ private Class<?> getListenerClass(ClassLoader loader){
+ Class<?> entityListenerClass;
try {
if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
try {
@@ -180,7 +178,7 @@
Map<String,java.util.List<Method>> table = new ConcurrentHashMap<>();
for (String event: serializableMethods.keySet()){
java.util.List<MethodSerialImpl> methodList = serializableMethods.get(event);
- java.util.List<Method> newMethodList = new java.util.ArrayList();
+ java.util.List<Method> newMethodList = new java.util.ArrayList<>();
for (MethodSerialImpl serializedMethod: methodList) {
try {
Method method = serializedMethod.convertToMethod(loader);
@@ -196,7 +194,7 @@
public Map<String,java.util.List<MethodSerialImpl>> getMethods() {
if (serializableMethods == null) {
- serializableMethods = new ConcurrentHashMap<String, List<MethodSerialImpl>>();
+ serializableMethods = new ConcurrentHashMap<>();
}
return serializableMethods;
}
diff --git a/jpa/org.eclipse.persistence.jpars.server/src/main/java/org/eclipse/persistence/jpa/rs/resources/common/AbstractEntityResource.java b/jpa/org.eclipse.persistence.jpars.server/src/main/java/org/eclipse/persistence/jpa/rs/resources/common/AbstractEntityResource.java
index 9893887..5c0bb55 100644
--- a/jpa/org.eclipse.persistence.jpars.server/src/main/java/org/eclipse/persistence/jpa/rs/resources/common/AbstractEntityResource.java
+++ b/jpa/org.eclipse.persistence.jpars.server/src/main/java/org/eclipse/persistence/jpa/rs/resources/common/AbstractEntityResource.java
@@ -231,7 +231,7 @@
private void processBidirectionalRelationships(PersistenceContext context, ClassDescriptor descriptor, Object entity) {
final List<DatabaseMapping> mappings = descriptor.getMappings();
for (DatabaseMapping mapping : mappings) {
- if ((mapping != null) && (mapping instanceof ForeignReferenceMapping)) {
+ if (mapping instanceof ForeignReferenceMapping) {
final ForeignReferenceMapping jpaMapping = (ForeignReferenceMapping) mapping;
final Object attributeValue = mapping.getAttributeAccessor().getAttributeValueFromObject(entity);
if (jpaMapping.isCascadePersist()) {
@@ -242,7 +242,7 @@
if (inverseMapping != null) {
if (attributeValue != null) {
if (attributeValue instanceof ValueHolder) {
- final ValueHolder holder = (ValueHolder) attributeValue;
+ final ValueHolder<?> holder = (ValueHolder<?>) attributeValue;
final Object obj = holder.getValue();
if (obj != null) {
inverseMapping.setAttributeValueInObject(obj, entity);
@@ -287,7 +287,7 @@
final Object value = mapping.getAttributeAccessor().getAttributeValueFromObject(entity);
if (value != null) {
if (value instanceof ValueHolder) {
- final ValueHolder holder = (ValueHolder) value;
+ final ValueHolder<?> holder = (ValueHolder<?>) value;
if (holder.getValue() != null) {
return false;
}
@@ -318,10 +318,8 @@
final AbstractDirectMapping sequenceMapping = descriptor.getObjectBuilder().getSequenceMapping();
if (sequenceMapping != null) {
final Object value = sequenceMapping.getAttributeAccessor().getAttributeValueFromObject(entity);
- if (descriptor.getObjectBuilder().isPrimaryKeyComponentInvalid(value, descriptor.getPrimaryKeyFields().indexOf(descriptor.getSequenceNumberField()))
- || descriptor.getSequence().shouldAlwaysOverrideExistingValue()) {
- return false;
- }
+ return !descriptor.getObjectBuilder().isPrimaryKeyComponentInvalid(value, descriptor.getPrimaryKeyFields().indexOf(descriptor.getSequenceNumberField()))
+ && !descriptor.getSequence().shouldAlwaysOverrideExistingValue();
}
return true;
}
@@ -369,7 +367,7 @@
Map<String, String> matrixParams = getMatrixParameters(uriInfo, attribute);
Map<String, Object> queryParams = getQueryParameters(uriInfo);
- if ((queryParams != null) && (!queryParams.isEmpty())) {
+ if (!queryParams.isEmpty()) {
listItemId = (String) queryParams.get(QueryParameters.JPARS_LIST_ITEM_ID);
}