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:01:52 UTC

[isis] branch master updated: ISIS-1844 make any remaining 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 456901d  ISIS-1844 make any remaining unchecked casts explicit
456901d is described below

commit 456901d9c47e49f5c2184abe75eabeafb5065aa7
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 22 10:01:51 2018 +0100

    ISIS-1844 make any remaining unchecked casts explicit
---
 .../java/org/apache/isis/applib/AppManifestAbstract.java   |  6 +++---
 .../isis/applib/fixturescripts/BuilderScriptAbstract.java  | 14 +++++++++-----
 .../isis/applib/fixturescripts/FixtureResultList.java      |  5 ++++-
 .../apache/isis/applib/spec/AbstractSpecification2.java    |  4 ++--
 4 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/AppManifestAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/AppManifestAbstract.java
index 905f8ef..e9fe96a 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/AppManifestAbstract.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/AppManifestAbstract.java
@@ -208,7 +208,7 @@ public abstract class AppManifestAbstract implements AppManifest {
 
         public B withAuthMechanism(final String authMechanism) {
             this.authMechanism = authMechanism;
-            return (B)this;
+            return self();
         }
 
         public B withFixtureScripts(final Class<? extends FixtureScript>... fixtures) {
@@ -217,10 +217,10 @@ public abstract class AppManifestAbstract implements AppManifest {
 
         public B withFixtureScripts(final List<Class<? extends FixtureScript>> fixtures) {
             if(fixtures == null) {
-                return (B)this;
+                return self();
             }
             this.fixtures.addAll(fixtures);
-            return (B)this;
+            return self();
         }
 
         List<Class<?>> getAllAdditionalModules() {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/BuilderScriptAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/BuilderScriptAbstract.java
index d4bf129..e4fc694 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/BuilderScriptAbstract.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/BuilderScriptAbstract.java
@@ -50,19 +50,19 @@ public abstract class BuilderScriptAbstract<T,F extends BuilderScriptAbstract<T,
             final FixtureScript parentFixtureScript,
             ExecutionContext executionContext) {
 
-        final F onFixture = (F) BuilderScriptAbstract.this;
+        final F onFixture = self();
         parentFixtureScript.serviceRegistry.injectServicesInto(onFixture);
 
         execPrereqs(executionContext);
 
         // returns the fixture script that is run
         // (either this one, or possibly one previously executed).
-        return (F)executionContext.executeChildT(parentFixtureScript, this);
+        return executionContext.executeChildT(parentFixtureScript, this).self();
     }
 
     @Override
     public void execPrereqs(final ExecutionContext executionContext) {
-        final F onFixture = (F) BuilderScriptAbstract.this;
+        final F onFixture = self();
         for (final WithPrereqs.Block<T,F> prereq : prereqs) {
             prereq.execute(onFixture, executionContext);
         }
@@ -95,9 +95,13 @@ public abstract class BuilderScriptAbstract<T,F extends BuilderScriptAbstract<T,
     @Override
     public F setPrereq(WithPrereqs.Block<T,F> prereq) {
         prereqs.add(prereq);
-        return (F)this;
+        return self();
     }
 
-
+    @SuppressWarnings("unchecked") //[ahuber] it's safe to assume that this object is of type F
+	protected F self() {
+    	return (F)this;
+    }
+    
 }
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResultList.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResultList.java
index a3027ca..3c07687 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResultList.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResultList.java
@@ -22,6 +22,9 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.isis.applib.util.Casts;
+
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
@@ -133,7 +136,7 @@ public class FixtureResultList {
         if (!cls.isAssignableFrom(object.getClass())) {
             throw new IllegalStateException(String.format("Fixture result exists and contains object but is of type %s, not %s", object.getClass().getName(), cls.getName()));
         }
-        return (T) object;
+        return Casts.uncheckedCast(object);
     }
 
     //endregion
diff --git a/core/applib/src/main/java/org/apache/isis/applib/spec/AbstractSpecification2.java b/core/applib/src/main/java/org/apache/isis/applib/spec/AbstractSpecification2.java
index 0cb7b8b..ff63a00 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/spec/AbstractSpecification2.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/spec/AbstractSpecification2.java
@@ -22,6 +22,7 @@ package org.apache.isis.applib.spec;
 import java.lang.reflect.Method;
 
 import org.apache.isis.applib.services.i18n.TranslatableString;
+import org.apache.isis.applib.util.Casts;
 
 /**
  * Adapter to make it easy to write {@link Specification}s.
@@ -80,7 +81,6 @@ public abstract class AbstractSpecification2<T> implements Specification2 {
     }
 
     @Override
-    @SuppressWarnings({ "unchecked" })
     public final String satisfies(final Object obj) {
         // unused because satisfiesTranslatable will be called instead.
         return null;
@@ -101,7 +101,7 @@ public abstract class AbstractSpecification2<T> implements Specification2 {
                     ? null
                     : TranslatableString.tr("Incorrect type");
         }
-        final T objAsT = (T) obj;
+        final T objAsT = Casts.uncheckedCast(obj);
         return satisfiesTranslatableSafely(objAsT);
 
     }

-- 
To stop receiving notification emails like this one, please contact
ahuber@apache.org.