fix equals on incomparable types
Signed-off-by: Lukas Jungmann <lukas.jungmann@oracle.com>
diff --git a/jpa/org.eclipse.persistence.jpa.modelgen/src/main/java/org/eclipse/persistence/internal/jpa/modelgen/MetadataMirrorFactory.java b/jpa/org.eclipse.persistence.jpa.modelgen/src/main/java/org/eclipse/persistence/internal/jpa/modelgen/MetadataMirrorFactory.java
index f291fa9..c9b25d9 100644
--- a/jpa/org.eclipse.persistence.jpa.modelgen/src/main/java/org/eclipse/persistence/internal/jpa/modelgen/MetadataMirrorFactory.java
+++ b/jpa/org.eclipse.persistence.jpa.modelgen/src/main/java/org/eclipse/persistence/internal/jpa/modelgen/MetadataMirrorFactory.java
@@ -334,7 +334,7 @@ public void setEnvironments(ProcessingEnvironment processingEnvironment, RoundEn
List<? extends AnnotationMirror> annotationMirrors = element.getAnnotationMirrors();
for (AnnotationMirror am : annotationMirrors) {
Name qn = ((TypeElement) am.getAnnotationType().asElement()).getQualifiedName();
- if ("jakarta.annotation.Generated".equals(qn) || "jakarta.annotation.processing.Generated".equals(qn)) {
+ if ("jakarta.annotation.Generated".equals(qn.toString()) || "jakarta.annotation.processing.Generated".equals(qn.toString())) {
isGenerated = true;
break;
}
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/classes/ClassAccessor.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/classes/ClassAccessor.java
index e1880f5..8d52c6d 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/classes/ClassAccessor.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/classes/ClassAccessor.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
@@ -307,7 +307,7 @@ protected void addAccessor(MappingAccessor accessor) {
// If the map key class is not specified, we need to look it
// up from the accessor type.
- if (mapKeyClass == null || mapKeyClass.equals(void.class)) {
+ if (mapKeyClass == null || mapKeyClass.isClass(void.class)) {
// Try to extract the map key class from a generic
// specification. This will throw an exception if it can't.
mapKeyClass = accessor.getMapKeyReferenceClass();
@@ -1043,7 +1043,7 @@ public boolean hasDerivedId() {
* INTERNAL:
*/
protected boolean hasParentClass() {
- return m_parentClass != null && ! m_parentClass.equals(void.class);
+ return m_parentClass != null && ! m_parentClass.isClass(void.class);
}
/**
@@ -1571,7 +1571,7 @@ protected void processCopyPolicy(){
protected void processCustomizer() {
MetadataAnnotation customizer = getAnnotation(Customizer.class);
- if ((m_customizerClass != null && ! m_customizerClass.equals(void.class)) || customizer != null) {
+ if ((m_customizerClass != null && ! m_customizerClass.isClass(void.class)) || customizer != null) {
if (getDescriptor().hasCustomizer()) {
// We must be processing a mapped superclass and its subclass
// override the customizer class, that is, defined its own. Log
@@ -1579,7 +1579,7 @@ protected void processCustomizer() {
// mapped superclass for the descriptor's java class.
getLogger().logConfigMessage(MetadataLogger.IGNORE_MAPPED_SUPERCLASS_CUSTOMIZER, getDescriptor().getJavaClass(), getJavaClass());
} else {
- if (m_customizerClass == null || m_customizerClass.equals(void.class)) {
+ if (m_customizerClass == null || m_customizerClass.isClass(void.class)) {
// Use the annotation value.
m_customizerClass = getMetadataClass(customizer.getAttributeString("value"));
} else {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/classes/MappedSuperclassAccessor.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/classes/MappedSuperclassAccessor.java
index 4c61d85..5a7cec7 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/classes/MappedSuperclassAccessor.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/classes/MappedSuperclassAccessor.java
@@ -603,7 +603,7 @@ protected boolean hasObjectRelationalMethodMappingAnnotationsDefined() {
* reference an id class type.
*/
protected void initIdClass() {
- if (m_idClass == null || m_idClass.equals(void.class)) {
+ if (m_idClass == null || m_idClass.isClass(void.class)) {
// Check for an IdClass annotation.
if (isAnnotationPresent(JPA_ID_CLASS)) {
m_idClass = getMetadataClass(getAnnotation(JPA_ID_CLASS).getAttributeString("value"));
@@ -616,7 +616,7 @@ protected void initIdClass() {
}
// Add the id class to the known list of id classes for this project.
- if (m_idClass != null && ! m_idClass.equals(void.class)) {
+ if (m_idClass != null && ! m_idClass.isClass(void.class)) {
getProject().addIdClass(m_idClass.getName());
// 266912: We store the IdClass (not an EmbeddableId) for use by the Metamodel API
getProject().getProject().addMetamodelIdClassMapEntry(getAccessibleObject().getName(), m_idClass.getName().replace('$', '.'));
@@ -1190,7 +1190,7 @@ protected void processFetchGroups() {
* type of the entity for which it is the primary key.
*/
protected void processIdClass() {
- if (m_idClass != null && !m_idClass.equals(void.class)) {
+ if (m_idClass != null && !m_idClass.isClass(void.class)) {
getDescriptor().setPKClass(m_idClass);
if (getDescriptor().usesDefaultPropertyAccess()) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/ElementCollectionAccessor.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/ElementCollectionAccessor.java
index 80ee6d0..3a5c703 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/ElementCollectionAccessor.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/ElementCollectionAccessor.java
@@ -796,7 +796,7 @@ public boolean hasMapKey() {
*/
@Override
protected boolean hasMapKeyClass() {
- return m_mapKeyClass != null && ! m_mapKeyClass.equals(void.class);
+ return m_mapKeyClass != null && ! m_mapKeyClass.isClass(void.class);
}
/**
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/MappingAccessor.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/MappingAccessor.java
index 9e1de4d..2891a7b 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/MappingAccessor.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/MappingAccessor.java
@@ -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.
* Copyright (c) 1998, 2018 IBM Corporation. All rights reserved.
*
* This program and the accompanying materials are made available under the
@@ -1357,9 +1357,9 @@ public boolean isOneToOne() {
*/
protected boolean isPrimitiveWrapperClass(MetadataClass cls) {
return cls.extendsClass(Number.class) ||
- cls.equals(Boolean.class) ||
- cls.equals(Character.class) ||
- cls.equals(String.class) ||
+ cls.isClass(Boolean.class) ||
+ cls.isClass(Character.class) ||
+ cls.isClass(String.class) ||
cls.extendsClass(java.math.BigInteger.class) ||
cls.extendsClass(java.math.BigDecimal.class) ||
cls.extendsClass(java.util.Date.class) ||
@@ -2119,17 +2119,17 @@ protected void setIndirectionPolicy(ContainerMapping mapping, String mapKey, boo
if (usesIndirection && (mapping instanceof ForeignReferenceMapping)) {
containerPolicySet = true;
CollectionMapping collectionMapping = (CollectionMapping)mapping;
- if (rawClass.equals(Map.class)) {
+ if (rawClass.isClass(Map.class)) {
if (collectionMapping.isDirectMapMapping()) {
((DirectMapMapping) mapping).useTransparentMap();
} else {
collectionMapping.useTransparentMap(mapKey);
}
- } else if (rawClass.equals(List.class)) {
+ } else if (rawClass.isClass(List.class)) {
collectionMapping.useTransparentList();
- } else if (rawClass.equals(Collection.class)) {
+ } else if (rawClass.isClass(Collection.class)) {
collectionMapping.useTransparentCollection();
- } else if (rawClass.equals(Set.class)) {
+ } else if (rawClass.isClass(Set.class)) {
collectionMapping.useTransparentSet();
} else {
getLogger().logWarningMessage(MetadataLogger.WARNING_INVALID_COLLECTION_USED_ON_LAZY_RELATION, getJavaClass(), getAnnotatedElement(), rawClass);
@@ -2142,20 +2142,20 @@ protected void setIndirectionPolicy(ContainerMapping mapping, String mapKey, boo
}
}
if (!containerPolicySet) {
- if (rawClass.equals(Map.class)) {
+ if (rawClass.isClass(Map.class)) {
if (mapping instanceof DirectMapMapping) {
((DirectMapMapping) mapping).useMapClass(java.util.Hashtable.class);
} else {
mapping.useMapClass(java.util.Hashtable.class, mapKey);
}
- } else if (rawClass.equals(Set.class)) {
+ } else if (rawClass.isClass(Set.class)) {
// This will cause it to use a CollectionContainerPolicy type
mapping.useCollectionClass(java.util.HashSet.class);
- } else if (rawClass.equals(List.class)) {
+ } else if (rawClass.isClass(List.class)) {
// This will cause a ListContainerPolicy type to be used or
// OrderedListContainerPolicy if ordering is specified.
mapping.useCollectionClass(java.util.Vector.class);
- } else if (rawClass.equals(Collection.class)) {
+ } else if (rawClass.isClass(Collection.class)) {
// Force CollectionContainerPolicy type to be used with a
// collection implementation.
mapping.setContainerPolicy(new CollectionContainerPolicy(java.util.Vector.class));
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/VersionAccessor.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/VersionAccessor.java
index 2e0a746..f149105 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/VersionAccessor.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/VersionAccessor.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
@@ -85,7 +85,7 @@ public int hashCode() {
* Returns true if the given class is a valid timestamp locking type.
*/
protected boolean isValidTimestampVersionLockingType(MetadataClass cls) {
- return cls.equals(java.sql.Timestamp.class);
+ return cls.isClass(java.sql.Timestamp.class);
}
/**
@@ -93,12 +93,12 @@ protected boolean isValidTimestampVersionLockingType(MetadataClass cls) {
* Returns true if the given class is a valid version locking type.
*/
protected boolean isValidVersionLockingType(MetadataClass cls) {
- return (cls.equals(int.class) ||
- cls.equals(Integer.class) ||
- cls.equals(short.class) ||
- cls.equals(Short.class) ||
- cls.equals(long.class) ||
- cls.equals(Long.class));
+ return (cls.isClass(int.class) ||
+ cls.isClass(Integer.class) ||
+ cls.isClass(short.class) ||
+ cls.isClass(Short.class) ||
+ cls.isClass(long.class) ||
+ cls.isClass(Long.class));
}
/**
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataClass.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataClass.java
index ac945e5..6b222d1 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataClass.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataClass.java
@@ -152,18 +152,11 @@ public void addMethod(MetadataMethod method) {
/**
* Allow comparison to Java classes and Metadata classes.
*/
- @Override
- public boolean equals(Object object) {
- if (object instanceof Class) {
- if (getName() == null) {
- // Void's name is null.
- return ((Class)object).getName() == null;
- }
-
- return getName().equals(((Class)object).getName());
+ public boolean isClass(Class<?> clazz) {
+ if (getName() == null) {
+ return false;
}
-
- return super.equals(object);
+ return getName().equals(clazz.getName());
}
/**
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/converters/LobMetadata.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/converters/LobMetadata.java
index c7bbcff..f0a0924 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/converters/LobMetadata.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/converters/LobMetadata.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
@@ -86,9 +86,9 @@ public int hashCode() {
* Returns true if the given class is a valid blob type.
*/
public static boolean isValidBlobType(MetadataClass cls) {
- return cls.equals(byte[].class) ||
- cls.equals(Byte[].class) ||
- cls.equals(java.sql.Blob.class);
+ return cls.isClass(byte[].class) ||
+ cls.isClass(Byte[].class) ||
+ cls.isClass(java.sql.Blob.class);
}
/**
@@ -96,10 +96,10 @@ public static boolean isValidBlobType(MetadataClass cls) {
* Returns true if the given class is a valid clob type.
*/
public static boolean isValidClobType(MetadataClass cls) {
- return cls.equals(char[].class) ||
- cls.equals(String.class) ||
- cls.equals(Character[].class) ||
- cls.equals(java.sql.Clob.class);
+ return cls.isClass(char[].class) ||
+ cls.isClass(String.class) ||
+ cls.isClass(Character[].class) ||
+ cls.isClass(java.sql.Clob.class);
}
/**
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/converters/TemporalMetadata.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/converters/TemporalMetadata.java
index fbda1bb..fc2ccb6 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/converters/TemporalMetadata.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/converters/TemporalMetadata.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
@@ -102,9 +102,9 @@ public String getTemporalType() {
* marked temporal.
*/
public static boolean isValidTemporalType(MetadataClass cls) {
- return (cls.equals(java.util.Date.class) ||
- cls.equals(java.util.Calendar.class) ||
- cls.equals(java.util.GregorianCalendar.class));
+ return (cls.isClass(java.util.Date.class) ||
+ cls.isClass(java.util.Calendar.class) ||
+ cls.isClass(java.util.GregorianCalendar.class));
}
/**