Skip to content

Commit

Permalink
Avoid usage of raw Class
Browse files Browse the repository at this point in the history
  • Loading branch information
yurloc authored and ge0ffrey committed Dec 10, 2016
1 parent 69e6903 commit b92c403
Show file tree
Hide file tree
Showing 10 changed files with 36 additions and 35 deletions.
Expand Up @@ -98,7 +98,7 @@ public static boolean isGetterMethod(Method method) {
* @param propertyName never null
* @return true if that getter exists
*/
public static boolean hasGetterMethod(Class containingClass, String propertyName) {
public static boolean hasGetterMethod(Class<?> containingClass, String propertyName) {
return getGetterMethod(containingClass, propertyName) != null;
}

Expand All @@ -107,7 +107,7 @@ public static boolean hasGetterMethod(Class containingClass, String propertyName
* @param propertyName never null
* @return true if that getter exists
*/
public static Method getGetterMethod(Class containingClass, String propertyName) {
public static Method getGetterMethod(Class<?> containingClass, String propertyName) {
String getterName = PROPERTY_ACCESSOR_PREFIX_GET
+ (propertyName.isEmpty() ? "" : propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1));
try {
Expand All @@ -134,7 +134,7 @@ public static Method getGetterMethod(Class containingClass, String propertyName)
* @param propertyName never null
* @return null if it doesn't exist
*/
public static Method getSetterMethod(Class containingClass, Class propertyType, String propertyName) {
public static Method getSetterMethod(Class<?> containingClass, Class<?> propertyType, String propertyName) {
String setterName = PROPERTY_MUTATOR_PREFIX
+ (propertyName.isEmpty() ? "" : propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1));
try {
Expand Down
Expand Up @@ -36,7 +36,7 @@ public final class BeanPropertyMemberAccessor implements MemberAccessor {
public BeanPropertyMemberAccessor(Method getterMethod) {
this.getterMethod = getterMethod;
getterMethod.setAccessible(true); // Performance hack by avoiding security checks
Class declaringClass = getterMethod.getDeclaringClass();
Class<?> declaringClass = getterMethod.getDeclaringClass();
if (!ReflectionHelper.isGetterMethod(getterMethod)) {
throw new IllegalArgumentException("The getterMethod (" + getterMethod + ") is not a valid getter.");
}
Expand Down
Expand Up @@ -41,7 +41,7 @@ public class LocationStrategyResolver {

private final LocationStrategyType locationStrategyType;

private final ConcurrentMap<Class, LocationStrategy> decisionCache = new ConcurrentHashMap<>();
private final ConcurrentMap<Class<?>, LocationStrategy> decisionCache = new ConcurrentHashMap<>();

public LocationStrategyResolver(LocationStrategyType locationStrategyType) {
this.locationStrategyType = locationStrategyType;
Expand Down
Expand Up @@ -103,7 +103,7 @@ private void addProblemFactsFromClass(List<Object> factList, Class<?> instanceCl
}

private boolean isFieldAPlanningEntityPropertyOrPlanningEntityCollectionProperty(Field field,
Class fieldInstanceClass) {
Class<?> fieldInstanceClass) {
if (field.isAnnotationPresent(PlanningEntityProperty.class)
|| field.isAnnotationPresent(PlanningEntityCollectionProperty.class)) {
return true;
Expand Down
Expand Up @@ -59,10 +59,10 @@ public class FieldAccessingSolutionCloner<Solution_> implements SolutionCloner<S

protected final SolutionDescriptor<Solution_> solutionDescriptor;

protected final ConcurrentMap<Class, Constructor> constructorCache = new ConcurrentHashMap<>();
protected final ConcurrentMap<Class, List<Field>> fieldListCache = new ConcurrentHashMap<>();
protected final ConcurrentMap<Pair<Field, Class>, Boolean> deepCloneDecisionFieldCache = new ConcurrentHashMap<>();
protected final ConcurrentMap<Class, Boolean> deepCloneDecisionActualValueClassCache = new ConcurrentHashMap<>();
protected final ConcurrentMap<Class<?>, Constructor<?>> constructorCache = new ConcurrentHashMap<>();
protected final ConcurrentMap<Class<?>, List<Field>> fieldListCache = new ConcurrentHashMap<>();
protected final ConcurrentMap<Pair<Field, Class<?>>, Boolean> deepCloneDecisionFieldCache = new ConcurrentHashMap<>();
protected final ConcurrentMap<Class<?>, Boolean> deepCloneDecisionActualValueClassCache = new ConcurrentHashMap<>();

public FieldAccessingSolutionCloner(SolutionDescriptor<Solution_> solutionDescriptor) {
this.solutionDescriptor = solutionDescriptor;
Expand All @@ -83,9 +83,10 @@ public Solution_ cloneSolution(Solution_ originalSolution) {
* @param <C> type
* @return never null
*/
protected <C> Constructor retrieveCachedConstructor(Class<C> clazz) {
return constructorCache.computeIfAbsent(clazz, key -> {
Constructor constructor;
@SuppressWarnings("unchecked")
protected <C> Constructor<C> retrieveCachedConstructor(Class<C> clazz) {
return (Constructor<C>) constructorCache.computeIfAbsent(clazz, key -> {
Constructor<C> constructor;
try {
constructor = clazz.getDeclaredConstructor();
} catch (ReflectiveOperationException e) {
Expand Down Expand Up @@ -124,20 +125,20 @@ protected <C> List<Field> retrieveCachedFields(Class<C> clazz) {
* @param actualValueClass never null
* @return never null
*/
protected boolean retrieveDeepCloneDecision(Field field, Class fieldInstanceClass, Class<?> actualValueClass) {
Pair<Field, Class> pair = Pair.of(field, fieldInstanceClass);
protected boolean retrieveDeepCloneDecision(Field field, Class<?> fieldInstanceClass, Class<?> actualValueClass) {
Pair<Field, Class<?>> pair = Pair.of(field, fieldInstanceClass);
Boolean deepCloneDecision = deepCloneDecisionFieldCache.computeIfAbsent(pair,
key -> isFieldDeepCloned(field, fieldInstanceClass));
return deepCloneDecision || retrieveDeepCloneDecisionForActualValueClass(actualValueClass);
}

private boolean isFieldDeepCloned(Field field, Class fieldInstanceClass) {
private boolean isFieldDeepCloned(Field field, Class<?> fieldInstanceClass) {
return isFieldAnEntityPropertyOnSolution(field, fieldInstanceClass)
|| isFieldAnEntityOrSolution(field, fieldInstanceClass)
|| isFieldADeepCloneProperty(field, fieldInstanceClass);
}

protected boolean isFieldAnEntityPropertyOnSolution(Field field, Class fieldInstanceClass) {
protected boolean isFieldAnEntityPropertyOnSolution(Field field, Class<?> fieldInstanceClass) {
// field.getDeclaringClass() is a superclass of or equal to the fieldInstanceClass
if (solutionDescriptor.getSolutionClass().isAssignableFrom(fieldInstanceClass)) {
String fieldName = field.getName();
Expand All @@ -155,7 +156,7 @@ protected boolean isFieldAnEntityPropertyOnSolution(Field field, Class fieldInst
return false;
}

protected boolean isFieldAnEntityOrSolution(Field field, Class fieldInstanceClass) {
protected boolean isFieldAnEntityOrSolution(Field field, Class<?> fieldInstanceClass) {
Class<?> type = field.getType();
if (isClassDeepCloned(type)) {
return true;
Expand Down Expand Up @@ -186,7 +187,7 @@ && isClassDeepCloned((Class) actualTypeArgument)) {
return false;
}

private boolean isFieldADeepCloneProperty(Field field, Class fieldInstanceClass) {
private boolean isFieldADeepCloneProperty(Field field, Class<?> fieldInstanceClass) {
if (field.isAnnotationPresent(DeepPlanningClone.class)) {
return true;
}
Expand Down Expand Up @@ -271,7 +272,7 @@ protected <C> void copyFields(Class<C> clazz, Class<? extends C> instanceClass,
}
}

protected boolean isDeepCloneField(Field field, Class fieldInstanceClass, Object originalValue) {
protected boolean isDeepCloneField(Field field, Class<?> fieldInstanceClass, Object originalValue) {
if (originalValue == null) {
return false;
}
Expand Down
Expand Up @@ -451,7 +451,7 @@ public ScoreDefinition buildScoreDefinition(Class<? extends Score> scoreType, Pl
"The solutionClass (" + solutionClass + ") cannot be directly a "
+ AbstractSolution.class.getSimpleName() + ", but a subclass would be ok.");
}
Class baseClass = solutionClass;
Class<?> baseClass = solutionClass;
while (baseClass.getSuperclass() != AbstractSolution.class) {
baseClass = baseClass.getSuperclass();
if (baseClass == null) {
Expand Down
Expand Up @@ -107,7 +107,7 @@ private void processValueRangeProviderAnnotation(ValueRangeProvider valueRangePr
// with the variableDescriptor's generic type's type arguments
typeArgument = ((ParameterizedType) typeArgument).getRawType();
}
Class collectionElementClass;
Class<?> collectionElementClass;
if (typeArgument instanceof Class) {
collectionElementClass = ((Class) typeArgument);
} else {
Expand Down
Expand Up @@ -79,7 +79,7 @@ public XStreamXmlSolverFactory(SolverConfigContext solverConfigContext) {
* @param xStreamAnnotations never null
* @see XStream#processAnnotations(Class[])
*/
public void addXStreamAnnotations(Class... xStreamAnnotations) {
public void addXStreamAnnotations(Class<?>... xStreamAnnotations) {
xStream.processAnnotations(xStreamAnnotations);
}

Expand Down
Expand Up @@ -52,13 +52,13 @@ public static SolutionDescriptor mockSolutionDescriptor() {
return solutionDescriptor;
}

public static EntityDescriptor mockEntityDescriptor(Class entityClass) {
public static EntityDescriptor mockEntityDescriptor(Class<?> entityClass) {
EntityDescriptor entityDescriptor = mock(EntityDescriptor.class);
when(entityDescriptor.getEntityClass()).thenReturn(entityClass);
return entityDescriptor;
}

public static GenuineVariableDescriptor mockVariableDescriptor(Class entityClass, String variableName) {
public static GenuineVariableDescriptor mockVariableDescriptor(Class<?> entityClass, String variableName) {
EntityDescriptor entityDescriptor = mockEntityDescriptor(entityClass);
return mockVariableDescriptor(entityDescriptor, variableName);
}
Expand All @@ -71,7 +71,7 @@ public static GenuineVariableDescriptor mockVariableDescriptor(EntityDescriptor
return variableDescriptor;
}

public static EntitySelector mockEntitySelector(Class entityClass, Object... entities) {
public static EntitySelector mockEntitySelector(Class<?> entityClass, Object... entities) {
EntityDescriptor entityDescriptor = mockEntityDescriptor(entityClass);
return mockEntitySelector(entityDescriptor, entities);
}
Expand All @@ -94,7 +94,7 @@ public static EntitySelector mockEntitySelector(EntityDescriptor entityDescripto
return entitySelector;
}

public static ValueSelector mockValueSelector(Class entityClass, String variableName, Object... values) {
public static ValueSelector mockValueSelector(Class<?> entityClass, String variableName, Object... values) {
GenuineVariableDescriptor variableDescriptor = mockVariableDescriptor(entityClass, variableName);
return mockValueSelector(variableDescriptor, values);
}
Expand All @@ -116,13 +116,13 @@ public static ValueSelector mockValueSelector(GenuineVariableDescriptor variable
return valueSelector;
}

public static ValueSelector mockValueSelectorForEntity(Class entityClass, Object entity, String variableName,
public static ValueSelector mockValueSelectorForEntity(Class<?> entityClass, Object entity, String variableName,
Object... values) {
return mockValueSelectorForEntity(entityClass, variableName,
ImmutableListMultimap.builder().putAll(entity, values).build());
}

public static ValueSelector mockValueSelectorForEntity(Class entityClass, String variableName,
public static ValueSelector mockValueSelectorForEntity(Class<?> entityClass, String variableName,
ListMultimap<Object, Object> entityToValues) {
GenuineVariableDescriptor variableDescriptor = mockVariableDescriptor(entityClass, variableName);
return mockValueSelectorForEntity(variableDescriptor, entityToValues);
Expand All @@ -144,7 +144,7 @@ public static ValueSelector mockValueSelectorForEntity(GenuineVariableDescriptor
return valueSelector;
}

public static EntityIndependentValueSelector mockEntityIndependentValueSelector(Class entityClass, String variableName,
public static EntityIndependentValueSelector mockEntityIndependentValueSelector(Class<?> entityClass, String variableName,
Object... values) {
GenuineVariableDescriptor variableDescriptor = mockVariableDescriptor(entityClass, variableName);
when(variableDescriptor.isValueRangeEntityIndependent()).thenReturn(true);
Expand All @@ -166,7 +166,7 @@ public static EntityIndependentValueSelector mockEntityIndependentValueSelector(
return valueSelector;
}

public static MoveSelector mockMoveSelector(Class moveClass,
public static MoveSelector mockMoveSelector(Class<?> moveClass,
Move... moves) {
MoveSelector moveSelector = mock(MoveSelector.class);
final List<Move> moveList = Arrays.<Move>asList(moves);
Expand Down
Expand Up @@ -63,23 +63,23 @@ public class PlannerAssert extends Assert {
// Missing JUnit methods
// ************************************************************************

public static void assertInstanceOf(Class expectedClass, Object actualInstance) {
public static void assertInstanceOf(Class<?> expectedClass, Object actualInstance) {
assertInstanceOf(null, expectedClass, actualInstance);
}

public static void assertInstanceOf(String message, Class expectedClass, Object actualInstance) {
public static void assertInstanceOf(String message, Class<?> expectedClass, Object actualInstance) {
if (!expectedClass.isInstance(actualInstance)) {
String cleanMessage = message == null ? "" : message;
throw new ComparisonFailure(cleanMessage, expectedClass.getName(),
actualInstance == null ? "null" : actualInstance.getClass().getName());
}
}

public static void assertNotInstanceOf(Class expectedClass, Object actualInstance) {
public static void assertNotInstanceOf(Class<?> expectedClass, Object actualInstance) {
assertNotInstanceOf(null, expectedClass, actualInstance);
}

public static void assertNotInstanceOf(String message, Class expectedClass, Object actualInstance) {
public static void assertNotInstanceOf(String message, Class<?> expectedClass, Object actualInstance) {
if (expectedClass.isInstance(actualInstance)) {
String cleanMessage = message == null ? "" : message;
throw new ComparisonFailure(cleanMessage, "not " + expectedClass.getName(),
Expand Down

0 comments on commit b92c403

Please sign in to comment.