You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2018/01/22 09:00:41 UTC
[isis] branch master updated: ISIS-1844 make any unchecked casts
explicit
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new b240cc3 ISIS-1844 make any unchecked casts explicit
b240cc3 is described below
commit b240cc3a5c339df2231bc8b75c930e0ec6c91f94
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 22 10:00:40 2018 +0100
ISIS-1844 make any unchecked casts explicit
---
.../org/apache/isis/applib/ModuleOrBuilderAbstract.java | 2 +-
.../apache/isis/applib/fixturescripts/FixtureScript.java | 15 ++++++++-------
.../org/apache/isis/applib/services/jaxb/JaxbService.java | 5 +++--
.../services/queryresultscache/QueryResultsCache.java | 4 ++--
.../main/java/org/apache/isis/applib/util/JaxbUtil.java | 2 +-
.../java/org/apache/isis/applib/util/ObjectContracts.java | 8 ++------
6 files changed, 17 insertions(+), 19 deletions(-)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/ModuleOrBuilderAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/ModuleOrBuilderAbstract.java
index a0a6ecf..ab4b31d 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/ModuleOrBuilderAbstract.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/ModuleOrBuilderAbstract.java
@@ -128,7 +128,7 @@ abstract class ModuleOrBuilderAbstract<B extends ModuleOrBuilderAbstract<B>> {
// -- HELPER
@SuppressWarnings("unchecked") //[ahuber] it's safe to assume this object is an instance of B
- private B self() {
+ protected B self() {
return (B) this;
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
index 872f7ad..da8cef9 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
@@ -49,6 +49,7 @@ import org.apache.isis.applib.services.sessmgmt.SessionManagementService;
import org.apache.isis.applib.services.user.UserService;
import org.apache.isis.applib.services.wrapper.WrapperFactory;
import org.apache.isis.applib.services.xactn.TransactionService;
+import org.apache.isis.applib.util.Casts;
@ViewModelLayout(named="Script")
public abstract class FixtureScript
@@ -627,7 +628,7 @@ public abstract class FixtureScript
return childFixtureScript;
} else {
trace(childFixtureScript, As.SKIP);
- return (T)previouslyExecutedScript;
+ return Casts.uncheckedCast(previouslyExecutedScript);
}
case EXECUTE_ONCE_BY_VALUE:
@@ -675,7 +676,7 @@ public abstract class FixtureScript
return childFixtureScript;
} else {
trace(childFixtureScript, As.SKIP);
- return (T)previouslyExecutedScript;
+ return Casts.uncheckedCast(previouslyExecutedScript);
}
}
@@ -771,11 +772,11 @@ public abstract class FixtureScript
}
@Programmatic
public <T> T getUserData(final Class<T> cls) {
- return (T) userData.get(cls);
+ return Casts.uncheckedCast(userData.get(cls));
}
@Programmatic
public <T> T clearUserData(final Class<T> cls) {
- return (T) userData.remove(cls);
+ return Casts.uncheckedCast(userData.remove(cls));
}
}
@@ -790,7 +791,7 @@ public abstract class FixtureScript
}
private <T> T valueFor(final String parameterName, final ExecutionContext ec, final T defaultValue) {
- final Class<T> cls = (Class<T>) defaultValue.getClass();
+ final Class<T> cls = Casts.uncheckedCast(defaultValue.getClass());
final T value = readParam(parameterName, ec, cls);
if(value != null) { return (T) value; }
@@ -818,7 +819,7 @@ public abstract class FixtureScript
Method method;
try {
method = this.getClass().getMethod("get" + uppercase(parameterName));
- value = (T)method.invoke(this);
+ value = Casts.uncheckedCast(method.invoke(this));
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException ignored) {
}
@@ -827,7 +828,7 @@ public abstract class FixtureScript
if (cls == Boolean.class || cls == boolean.class) {
try {
method = this.getClass().getMethod("is" + uppercase(parameterName));
- value = (T)method.invoke(this);
+ value = Casts.uncheckedCast(method.invoke(this));
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException ignored) {
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
index 2a359e3..566679c 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
@@ -34,6 +34,7 @@ import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.applib.NonRecoverableException;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.services.dto.Dto_downloadXsd;
+import org.apache.isis.applib.util.Casts;
import org.apache.isis.applib.util.Streams;
import com.google.common.collect.Maps;
@@ -132,7 +133,7 @@ public interface JaxbService {
public <T> T fromXml(final Class<T> domainClass, final String xml, final Map<String, Object> unmarshallerProperties) {
try {
final JAXBContext context = JAXBContext.newInstance(domainClass);
- return (T) fromXml(context, xml, unmarshallerProperties);
+ return Casts.uncheckedCast(fromXml(context, xml, unmarshallerProperties));
} catch (final JAXBException ex) {
throw new NonRecoverableException("Error unmarshalling XML to class '" + domainClass.getName() + "'", ex);
@@ -177,7 +178,7 @@ public interface JaxbService {
String annotationExceptionMessages = null;
try {
final Method getErrorsMethod = exClass.getMethod("getErrors");
- errors = (List<? extends Exception>) getErrorsMethod.invoke(ex);
+ errors = Casts.uncheckedCast(getErrorsMethod.invoke(ex));
annotationExceptionMessages = ": " +
Streams.stream(errors)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java b/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java
index 7c3f7ea..91ee4e3 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java
@@ -35,6 +35,7 @@ import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.fixturescripts.events.FixturesInstalledEvent;
import org.apache.isis.applib.fixturescripts.events.FixturesInstallingEvent;
import org.apache.isis.applib.services.WithTransactionScope;
+import org.apache.isis.applib.util.Casts;
/**
* This service (API and implementation) provides a mechanism by which idempotent query results can be cached for the duration of an interaction.
@@ -154,7 +155,6 @@ public class QueryResultsCache implements WithTransactionScope {
}
@Programmatic
- @SuppressWarnings("unchecked")
public <T> T execute(final Callable<T> callable, final Key cacheKey) {
if(control.isFixturesInstalling()) {
try {
@@ -171,7 +171,7 @@ public class QueryResultsCache implements WithTransactionScope {
final Value<?> cacheValue = cache.get(cacheKey);
logHitOrMiss(cacheKey, cacheValue);
if(cacheValue != null) {
- return (T) cacheValue.getResult();
+ return Casts.uncheckedCast(cacheValue.getResult());
}
// cache miss, so get the result...
diff --git a/core/applib/src/main/java/org/apache/isis/applib/util/JaxbUtil.java b/core/applib/src/main/java/org/apache/isis/applib/util/JaxbUtil.java
index b2cd974..00a43bc 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/util/JaxbUtil.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/util/JaxbUtil.java
@@ -49,7 +49,7 @@ public class JaxbUtil {
Unmarshaller un = null;
try {
un = getJaxbContext(dtoClass).createUnmarshaller();
- return (T) un.unmarshal(reader);
+ return Casts.uncheckedCast(un.unmarshal(reader));
} catch (JAXBException e) {
throw new RuntimeException(e);
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java b/core/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java
index 0c55ff1..a40236e 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java
@@ -41,7 +41,6 @@ public class ObjectContracts {
* @param propertyNames - the property name or names, CSV format. If multiple properties, use the {@link #compare(Object, Object, String...) varargs} overloaded version of this method.
*/
@Deprecated
- @SuppressWarnings("unchecked")
public static <T> int compare(final T p, final T q, final String propertyNames) {
final Iterable<String> propertyNamesIter = csvToIterable(propertyNames);
return compare(p, q, propertyNamesIter);
@@ -53,7 +52,6 @@ public class ObjectContracts {
* @deprecated - please be aware that this utility heavily uses reflection. We don't actually intend to deprecate this method (it's useful while prototyping), but we wanted to bring this to your attention!
*/
@Deprecated
- @SuppressWarnings("unchecked")
public static <T> int compare(final T p, final T q, final String... propertyNames) {
final Iterable<String> propertyNamesIter = varargsToIterable(propertyNames);
return compare(p, q, propertyNamesIter);
@@ -70,8 +68,8 @@ public class ObjectContracts {
final Iterable<Clause> clauses = clausesFor(propertyNamesIter);
ComparisonChain chain = ComparisonChain.start();
for (final Clause clause : clauses) {
- final Comparable<T> propertyValueOfP = (Comparable<T>) clause.getValueOf(p);
- final Comparable<T> propertyValueOfQ = (Comparable<T>) clause.getValueOf(q);
+ final Comparable<T> propertyValueOfP = Casts.uncheckedCast(clause.getValueOf(p));
+ final Comparable<T> propertyValueOfQ = Casts.uncheckedCast(clause.getValueOf(q));
chain = chain.compare(propertyValueOfP, propertyValueOfQ, clause.getDirection().getOrdering());
}
return chain.result();
@@ -85,7 +83,6 @@ public class ObjectContracts {
* @param propertyNames - the property name or names, CSV format. If multiple properties, use the {@link #compareBy(String...)} varargs} overloaded version of this method.
*/
@Deprecated
- @SuppressWarnings("unchecked")
public static <T> Comparator<T> compareBy(final String propertyNames){
return (p, q) -> compare(p, q, propertyNames);
}
@@ -94,7 +91,6 @@ public class ObjectContracts {
* @deprecated - please be aware that this utility heavily uses reflection. We don't actually intend to deprecate this method (it's useful while prototyping), but we wanted to bring this to your attention!
*/
@Deprecated
- @SuppressWarnings("unchecked")
public static <T> Comparator<T> compareBy(final String... propertyNames){
return (p, q) -> compare(p, q, propertyNames);
}
--
To stop receiving notification emails like this one, please contact
ahuber@apache.org.