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/02/28 22:19:43 UTC

[isis] branch master updated: ISIS-1841 adopting new ObjectContracts, no more reflective uses

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 4fa62d7  ISIS-1841 adopting new ObjectContracts, no more reflective uses
4fa62d7 is described below

commit 4fa62d739443e89ef795dafc8d9a44a83a5efb38
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Feb 28 23:19:39 2018 +0100

    ISIS-1841 adopting new ObjectContracts, no more reflective uses
---
 .../isis/applib/fixturescripts/FixtureScripts.java |  6 ++--
 .../applib/services/command/CommandDefault.java    | 11 ++++++-
 .../services/eventbus/AbstractDomainEvent.java     | 12 +++++---
 .../services/eventbus/AbstractLifecycleEvent.java  |  7 +++--
 .../applib/services/eventbus/AbstractUiEvent.java  |  8 +++--
 .../services/eventbus/ActionDomainEvent.java       | 13 ++++++--
 .../services/eventbus/CollectionDomainEvent.java   | 15 +++++++--
 .../services/eventbus/PropertyDomainEvent.java     | 15 +++++++--
 .../services/appfeat/ApplicationFeature.java       | 36 +++++++++++++++-------
 .../services/metamodel/DomainMemberDefault.java    | 17 ++++++----
 10 files changed, 102 insertions(+), 38 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
index ae8d024..1b8549c 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
@@ -53,7 +53,6 @@ import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.title.TitleService;
 import org.apache.isis.applib.services.xactn.TransactionService;
-import org.apache.isis.applib.util.ObjectContracts;
 
 
 /**
@@ -241,7 +240,10 @@ public abstract class FixtureScripts extends AbstractService {
         Collections.sort(fixtureScripts, new Comparator<FixtureScript>() {
             @Override
             public int compare(final FixtureScript o1, final FixtureScript o2) {
-                return ObjectContracts.compare(o1, o2, "friendlyName","qualifiedName");
+            	return Comparator
+            				.comparing(FixtureScript::getFriendlyName)
+            				.thenComparing(FixtureScript::getQualifiedName)
+            				.compare(o1, o2);
             }
         });
         return fixtureScripts;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandDefault.java b/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandDefault.java
index 9404f02..f612f2d 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandDefault.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandDefault.java
@@ -32,6 +32,7 @@ import org.apache.isis.applib.internal.collections._Maps;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.applib.util.ToString;
 
 public class CommandDefault implements Command {
 
@@ -371,9 +372,17 @@ public class CommandDefault implements Command {
 
     //region > toString
 
+    private final static ToString<CommandDefault> toString = ObjectContracts
+    		.toString("startedAt", CommandDefault::getStartedAt)
+    		.thenToString("user", CommandDefault::getUser)
+			.thenToString("memberIdentifier", CommandDefault::getMemberIdentifier) 
+			.thenToString("target", CommandDefault::getTarget) 
+			.thenToString("transactionId", CommandDefault::getTransactionId);
+    		
+    
     @Override
     public String toString() {
-        return ObjectContracts.toString(this, "startedAt","user","memberIdentifier","target","transactionId");
+    	return toString.toString(this);
     }
 
     //endregion
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java
index 8632376..49757d4 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.internal.collections._Maps;
 import org.apache.isis.applib.internal.exceptions._Exceptions;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.applib.util.ToString;
 
 public abstract class AbstractDomainEvent<S> extends java.util.EventObject {
 
@@ -320,13 +321,16 @@ public abstract class AbstractDomainEvent<S> extends java.util.EventObject {
     }
     //endregion
 
-    //region > toString
+    private final static ToString<AbstractDomainEvent<?>> toString = ObjectContracts
+    		//.toString("source", AbstractDomainEvent::getSource)
+    		.toString("identifier", AbstractDomainEvent::getIdentifier)
+//			.thenToString("eventPhase", AbstractDomainEvent::getEventPhase)
+    		;
+    
     @Override
     public String toString() {
-        return ObjectContracts.toString(this, "source","identifier","eventPhase");
+    	return toString.toString(this);
     }
-    //endregion
-
 
 
 }
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractLifecycleEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractLifecycleEvent.java
index b13368d..6e12889 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractLifecycleEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractLifecycleEvent.java
@@ -21,6 +21,7 @@ package org.apache.isis.applib.services.eventbus;
 import java.util.EventObject;
 
 import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.applib.util.ToString;
 
 public abstract class AbstractLifecycleEvent<S> extends EventObject {
 
@@ -53,9 +54,11 @@ public abstract class AbstractLifecycleEvent<S> extends EventObject {
     }
     //endregion
 
-
+    private final static ToString<AbstractLifecycleEvent<?>> toString = ObjectContracts
+    		.toString("source", AbstractLifecycleEvent::getSource);
+    
     @Override
     public String toString() {
-        return ObjectContracts.toString(this, "source");
+    	return toString.toString(this);
     }
 }
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractUiEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractUiEvent.java
index 9528be8..6259e67 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractUiEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/AbstractUiEvent.java
@@ -23,6 +23,7 @@ import java.util.Map;
 
 import org.apache.isis.applib.internal.collections._Maps;
 import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.applib.util.ToString;
 
 public abstract class AbstractUiEvent<S> extends EventObject {
 
@@ -86,11 +87,12 @@ public abstract class AbstractUiEvent<S> extends EventObject {
     }
     //endregion
 
-    //region > toString
+    private final static ToString<AbstractUiEvent<?>> toString = ObjectContracts
+    		.toString("source", AbstractUiEvent::getSource);
+    
     @Override
     public String toString() {
-        return ObjectContracts.toString(this, "source");
+    	return toString.toString(this);
     }
-    //endregion
 
 }
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/ActionDomainEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/ActionDomainEvent.java
index 9ce00ca..ec87a6c 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/ActionDomainEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/ActionDomainEvent.java
@@ -24,6 +24,7 @@ import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.applib.services.command.CommandContext;
 import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.applib.util.ToString;
 
 public abstract class ActionDomainEvent<S> extends AbstractDomainEvent<S> {
 
@@ -203,11 +204,17 @@ public abstract class ActionDomainEvent<S> extends AbstractDomainEvent<S> {
     }
     //endregion
 
-    //region > toString
+    
+    private final static ToString<ActionDomainEvent<?>> toString = ObjectContracts.<ActionDomainEvent<?>>
+    		toString("source", ActionDomainEvent::getSource)
+    		.thenToString("identifier", ActionDomainEvent::getIdentifier)
+    		.thenToString("eventPhase", ActionDomainEvent::getEventPhase)
+    		;
+    
     @Override
     public String toString() {
-        return ObjectContracts.toString(this, "source,identifier,phase");
+    	return toString.toString(this);
     }
-    //endregion
+
 
 }
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/CollectionDomainEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/CollectionDomainEvent.java
index 77dc9f7..69aafbb 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/CollectionDomainEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/CollectionDomainEvent.java
@@ -19,6 +19,7 @@
 package org.apache.isis.applib.services.eventbus;
 
 import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.applib.util.ToString;
 
 public abstract class CollectionDomainEvent<S,T> extends AbstractDomainEvent<S> {
 
@@ -128,11 +129,19 @@ public abstract class CollectionDomainEvent<S,T> extends AbstractDomainEvent<S>
     }
 
     //endregion
+    
+    private final static ToString<CollectionDomainEvent<?,?>> toString = 
+    		ObjectContracts.<CollectionDomainEvent<?,?>>
+		    toString("source", CollectionDomainEvent::getSource)
+		    .thenToString("identifier", CollectionDomainEvent::getIdentifier)
+		    .thenToString("eventPhase", CollectionDomainEvent::getEventPhase)
+		    .thenToString("of", CollectionDomainEvent::getOf) 
+		    .thenToString("value", CollectionDomainEvent::getValue)
+		    ;
 
-    //region > toString
     @Override
     public String toString() {
-        return ObjectContracts.toString(this, "source,identifier,phase,of,value");
+    	return toString.toString(this);
     }
-    //endregion
+
 }
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/PropertyDomainEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/PropertyDomainEvent.java
index c3430fd..a5878e5 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/PropertyDomainEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/PropertyDomainEvent.java
@@ -19,6 +19,7 @@
 package org.apache.isis.applib.services.eventbus;
 
 import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.applib.util.ToString;
 
 public abstract class PropertyDomainEvent<S,T> extends AbstractDomainEvent<S> {
 
@@ -106,10 +107,18 @@ public abstract class PropertyDomainEvent<S,T> extends AbstractDomainEvent<S> {
     }
     //endregion
 
-    //region > toString
+    private final static ToString<PropertyDomainEvent<?,?>> toString = 
+    		ObjectContracts.<PropertyDomainEvent<?,?>>
+		    toString("source", PropertyDomainEvent::getSource)
+		    .thenToString("identifier", PropertyDomainEvent::getIdentifier)
+		    .thenToString("eventPhase", PropertyDomainEvent::getEventPhase)
+		    .thenToString("oldValue", PropertyDomainEvent::getOldValue) 
+		    .thenToString("newValue", PropertyDomainEvent::getNewValue)
+		    ;
+
     @Override
     public String toString() {
-        return ObjectContracts.toString(this, "source,identifier,phase,oldValue,newValue");
+    	return toString.toString(this);
     }
-    //endregion
+    
 }
\ No newline at end of file
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeature.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeature.java
index 6acef08..e7db7c3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeature.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeature.java
@@ -18,19 +18,23 @@
  */
 package org.apache.isis.core.metamodel.services.appfeat;
 
+import java.util.Comparator;
 import java.util.SortedSet;
 
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
-
 import org.apache.isis.applib.IsisApplibModule;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
 import org.apache.isis.applib.services.appfeat.ApplicationMemberType;
+import org.apache.isis.applib.util.Equality;
+import org.apache.isis.applib.util.Hashing;
 import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.applib.util.ToString;
+
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
 
 /**
  * Canonical application feature, identified by {@link ApplicationFeatureId},
@@ -289,26 +293,36 @@ public class ApplicationFeature implements Comparable<ApplicationFeature> {
 
     //region > equals, hashCode, compareTo, toString
 
-    private final static String propertyNames = "featureId";
-
+    private final static Comparator<ApplicationFeature> comparator = 
+    		Comparator.comparing(ApplicationFeature::getFeatureId);
+    
+    private final static Equality<ApplicationFeature> equality = 
+    		ObjectContracts.checkEquals(ApplicationFeature::getFeatureId);
+    
+    private final static Hashing<ApplicationFeature> hashing = 
+    		ObjectContracts.hashing(ApplicationFeature::getFeatureId);
+    
+    private final static ToString<ApplicationFeature> toString = 
+    		ObjectContracts.toString("featureId", ApplicationFeature::getFeatureId);
+    
     @Override
     public int compareTo(final ApplicationFeature other) {
-        return ObjectContracts.compare(this, other, propertyNames);
+    	return comparator.compare(this, other);
     }
 
     @Override
     public boolean equals(final Object obj) {
-        return ObjectContracts.equals(this, obj, propertyNames);
+    	return equality.equals(this, obj);
     }
 
     @Override
     public int hashCode() {
-        return ObjectContracts.hashCode(this, propertyNames);
+        return hashing.hashCode(this);
     }
 
     @Override
     public String toString() {
-        return ObjectContracts.toString(this, propertyNames);
+        return toString.toString(this);
     }
 
     //endregion
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/DomainMemberDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/DomainMemberDefault.java
index 4f4e25f..57b7581 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/DomainMemberDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/DomainMemberDefault.java
@@ -19,15 +19,11 @@
 package org.apache.isis.core.metamodel.services.metamodel;
 
 import java.util.Arrays;
+import java.util.Comparator;
 import java.util.List;
 import java.util.SortedSet;
 
-import com.google.common.base.Joiner;
-import com.google.common.base.Strings;
-import com.google.common.collect.Sets;
-
 import org.apache.isis.applib.services.metamodel.DomainMember;
-import org.apache.isis.applib.util.ObjectContracts;
 import org.apache.isis.core.commons.lang.StringExtensions;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
@@ -58,6 +54,10 @@ import org.apache.isis.core.metamodel.specloader.specimpl.ContributeeMember2;
 import org.apache.isis.core.metamodel.specloader.specimpl.MixedInMember;
 import org.apache.isis.core.metamodel.specloader.specimpl.MixedInMember2;
 
+import com.google.common.base.Joiner;
+import com.google.common.base.Strings;
+import com.google.common.collect.Sets;
+
 public class DomainMemberDefault implements DomainMember {
 
     private final ObjectSpecification spec;
@@ -243,6 +243,11 @@ public class DomainMemberDefault implements DomainMember {
 
     @Override
     public int compareTo(DomainMember o) {
-        return ObjectContracts.compare(this, o, "classType,className,type desc,memberName");
+    	// legacy of ObjectContracts.compare(this, o, "classType,className,type desc,memberName");
+        return Comparator.comparing(DomainMember::getClassType)
+        		.thenComparing(DomainMember::getClassName)
+        		.thenComparing(DomainMember::getType, Comparator.reverseOrder()) // desc
+        		.thenComparing(DomainMember::getMemberName)
+        		.compare(this, o);
     }
 }
\ No newline at end of file

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