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/23 10:57:37 UTC

[isis] branch ISIS-1846_internal_utils updated (996cf2980 -> 8e8b5f1)

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a change to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from 996cf2980 ISIS-1846 another occurrence of capitalize consolidated
     new a5931f6  ISIS-1846 clarify corner cases for string splitting + tests
     new 70a5f0d  ISIS-1846 introduces _Constants (internal API)
     new 286b2c5  ISIS-1846 consolidate uses of constants 'emptyObjects' + 'emptyClasses'
     new c09cffb  ISIS-1846 make constants final
     new 3b9aded  ISIS-1841 replace uses of deprecated Nullable with Java's Optional
     new 8b19f8a  ISIS-1841 Nullable, Closure, IterableExtensions removed (after refactoring, no longer needed), tests removed or adapted
     new 9c2514c  ISIS-1841 remove unused setter, that does nothing anyway
     new fe219d0  ISIS-1846 add _Exceptions to internal API
     new 7d5b538  ISIS-1841 cleanup some compiler warnings
     new 8e8b5f1  ISIS-1841 refactoring switch statements

The 10 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/isis/applib/AppManifestAbstract.java    |   3 +-
 .../org/apache/isis/applib/IsisApplibModule.java   |   5 +-
 .../fixturescripts/BuilderScriptAbstract.java      |   4 +-
 .../isis/applib/fixturescripts/FixtureScript.java  |   6 +-
 .../isis/applib/fixturescripts/FixtureScripts.java |   3 +
 .../internal/{base/_Casts.java => _Constants.java} |  22 ++-
 .../isis/applib/internal/base/_NullSafe.java       |  18 ++-
 .../apache/isis/applib/internal/base/_Strings.java |  22 ++-
 .../internal/base/_Strings_NaturalNames.java       |   2 +-
 .../internal/base/_Strings_SplitIterator.java      |  73 +++++++++
 .../compare/_Comparators_SequenceCompare.java      |   5 +
 .../applib/internal/exceptions/_Exceptions.java    |  83 ++++++++++
 .../{base => exceptions}/package-info.java         |   2 +-
 .../applib/layout/grid/bootstrap3/BS3ClearFix.java |   1 +
 .../layout/grid/bootstrap3/BS3ElementAbstract.java |   1 +
 .../applib/layout/grid/bootstrap3/BS3Grid.java     |   2 +-
 .../applib/layout/menubars/MenuBarsAbstract.java   |   1 +
 .../applib/layout/menubars/bootstrap3/BS3Menu.java |   5 -
 .../layout/menubars/bootstrap3/BS3MenuBars.java    |   5 +
 .../isis/applib/services/bookmark/Bookmark.java    |   5 +-
 .../isis/applib/services/dto/DtoMappingHelper.java |   6 +-
 .../services/eventbus/AbstractDomainEvent.java     |  26 +++-
 .../org/apache/isis/applib/util/TitleBuffer.java   |   8 +-
 .../apache/isis/schema/utils/CommonDtoUtils.java   |  11 +-
 .../isis/schema/utils/InteractionDtoUtils.java     |  19 +--
 .../isis/applib/internal/base/StringsTest.java     |  12 +-
 .../core/commons/exceptions/ExceptionUtils.java    |   6 +-
 .../org/apache/isis/core/commons/lang/Closure.java |  32 ----
 .../isis/core/commons/lang/IterableExtensions.java |  39 -----
 .../apache/isis/core/commons/lang/Nullable.java    |  49 ------
 .../isis/core/commons/lang/ObjectExtensions.java   |   4 +-
 .../isis/core/commons/reflection/Reflect.java      | 167 ---------------------
 .../isis/core/metamodel/adapter/oid/Oid.java       |   9 +-
 .../isis/core/metamodel/facetapi/FacetUtil.java    |  10 +-
 .../core/metamodel/facets/MethodFinderUtils.java   |  16 +-
 .../ActionDefaultsFacetViaMethodFactory.java       |   3 +-
 .../DomainObjectAnnotationFacetFactory.java        |   9 +-
 .../AuditableFacetForDomainObjectAnnotation.java   |   5 +-
 .../ignore/javalang/RemoveMethodsFacetFactory.java |   3 +-
 .../recreatable/RecreatableObjectFacetFactory.java |   8 +-
 .../ActionParameterAutoCompleteFacetViaMethod.java |   3 +-
 ...rameterChoicesFacetDerivedFromChoicesFacet.java |   3 +-
 .../method/ActionChoicesFacetViaMethodFactory.java |   3 +-
 .../ActionParameterChoicesFacetViaMethod.java      |   9 +-
 ...ropertyChoicesFacetDerivedFromChoicesFacet.java |   5 +-
 .../services/grid/GridLoaderServiceDefault.java    |   3 +-
 .../specloader/specimpl/ObjectActionDefault.java   |   4 +-
 .../commons/lang/IterableExtensionsTest_fold.java  |  45 ------
 .../metamodel/facets/MethodFinderUtilsTest.java    |  27 ++--
 .../apache/isis/core/metamodel/facets/Utils.java   |   3 +-
 .../DummyAction.java                               |   3 +-
 .../wicket/model/models/EntityCollectionModel.java |  44 +++---
 .../models/LowestCommonSuperclassClosureTest.java  |  13 +-
 53 files changed, 398 insertions(+), 477 deletions(-)
 copy core/applib/src/main/java/org/apache/isis/applib/internal/{base/_Casts.java => _Constants.java} (72%)
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings_SplitIterator.java
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/internal/exceptions/_Exceptions.java
 copy core/applib/src/main/java/org/apache/isis/applib/internal/{base => exceptions}/package-info.java (95%)
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/commons/lang/Closure.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/commons/lang/IterableExtensions.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/commons/lang/Nullable.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/commons/reflection/Reflect.java
 delete mode 100644 core/metamodel/src/test/java/org/apache/isis/core/commons/lang/IterableExtensionsTest_fold.java

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

[isis] 04/10: ISIS-1846 make constants final

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit c09cffb7a4ce9b9a4690e7c931f4c0daef6c6e29
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jan 23 09:25:59 2018 +0100

    ISIS-1846 make constants final
---
 .../src/main/java/org/apache/isis/applib/internal/_Constants.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/_Constants.java b/core/applib/src/main/java/org/apache/isis/applib/internal/_Constants.java
index d4a71f1..90bb428 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/_Constants.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/_Constants.java
@@ -36,12 +36,12 @@ public final class _Constants {
 	/**
 	 * Convenient e.g. for reflective invocation
 	 */
-	public static Object[] emptyObjects = new Object[0];
+	public static final Object[] emptyObjects = new Object[0];
 
 	/**
 	 * Convenient e.g. for reflective invocation
 	 */
 	@SuppressWarnings("rawtypes")
-	public static Class[] emptyClasses = new Class[0];
+	public static final Class[] emptyClasses = new Class[0];
 	
 }

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

[isis] 08/10: ISIS-1846 add _Exceptions to internal API

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit fe219d009f9aea07cb054c3e0ae101a8df2ec738
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jan 23 10:51:43 2018 +0100

    ISIS-1846 add _Exceptions to internal API
---
 .../applib/internal/exceptions/_Exceptions.java    | 55 ++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/exceptions/_Exceptions.java b/core/applib/src/main/java/org/apache/isis/applib/internal/exceptions/_Exceptions.java
new file mode 100644
index 0000000..b47a88d
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/exceptions/_Exceptions.java
@@ -0,0 +1,55 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.internal.exceptions;
+
+import java.util.stream.Stream;
+
+import org.apache.isis.applib.internal.base._NullSafe;
+
+/**
+ * <h1>- internal use only -</h1>
+ * <p>
+ * A collection of framework internal exceptions.
+ * <p>
+ * WARNING: Do <b>NOT</b> use any of the classes provided by this package! <br/> 
+ * Public access will be removed once we migrate to Java 9+ modules.
+ * 
+ * @since 2.0.0
+ */
+public final class _Exceptions {
+
+	private _Exceptions(){}
+	
+	public static final RuntimeException unmatchedCase(Object _case) {
+		return new RuntimeException("internal error: unmatched case in switch statement: "+_case);
+	}
+	
+	public static final RuntimeException unexpectedCodeReach() {
+		return new RuntimeException("internal error: code was reached, that is expected unreachable");
+	}	
+	
+	public static final Stream<String> streamStacktraceLines(Throwable e, int maxLines) {
+		return _NullSafe.stream(e.getStackTrace())
+				.map(StackTraceElement::toString)
+				.limit(maxLines);
+	}
+
+	
+}

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

[isis] 10/10: ISIS-1841 refactoring switch statements

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 8e8b5f1a8e4780b467ab31a7d909f89e499244a9
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jan 23 11:37:42 2018 +0100

    ISIS-1841 refactoring switch statements
    
    such that unmatched cases always throw an exception (internal error)
---
 .../isis/applib/fixturescripts/FixtureScript.java  |  3 +-
 .../isis/applib/fixturescripts/FixtureScripts.java |  3 ++
 .../applib/internal/exceptions/_Exceptions.java    | 36 +++++++++++++++++++---
 .../layout/menubars/bootstrap3/BS3MenuBars.java    |  5 +++
 .../isis/applib/services/bookmark/Bookmark.java    |  5 +--
 .../isis/applib/services/dto/DtoMappingHelper.java |  6 ++--
 .../services/eventbus/AbstractDomainEvent.java     | 26 ++++++++++++++--
 .../apache/isis/schema/utils/CommonDtoUtils.java   | 11 ++-----
 .../isis/core/metamodel/adapter/oid/Oid.java       |  9 ++++--
 .../AuditableFacetForDomainObjectAnnotation.java   |  5 ++-
 10 files changed, 87 insertions(+), 22 deletions(-)

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 955cb50..7167a07 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
@@ -37,6 +37,7 @@ import org.apache.isis.applib.fixtures.FixtureType;
 import org.apache.isis.applib.fixtures.InstallableFixture;
 import org.apache.isis.applib.internal.base._Casts;
 import org.apache.isis.applib.internal.base._Strings;
+import org.apache.isis.applib.internal.exceptions._Exceptions;
 import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.repository.RepositoryService;
@@ -642,7 +643,7 @@ public abstract class FixtureScript
                 return childFixtureScript;
 
             default:
-                throw new IllegalArgumentException("Execution strategy: '" + executionStrategy + "' not recognized");
+            	throw _Exceptions.unmatchedCase("Execution strategy: '%s' not recognized", executionStrategy);
             }
         }
 
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 a3dde31..2a6d52c 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
@@ -42,6 +42,7 @@ import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.RestrictTo;
+import org.apache.isis.applib.internal.exceptions._Exceptions;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.applib.services.classdiscovery.ClassDiscoveryService;
 import org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault;
@@ -461,6 +462,8 @@ public abstract class FixtureScripts extends AbstractService {
                     break;
                 case IGNORE:
                     return null;
+                default:
+                	throw _Exceptions.unmatchedCase(getNonPersistedObjectsStrategy());
             }
         }
         final FixtureResult fixtureResult = new FixtureResult();
diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/exceptions/_Exceptions.java b/core/applib/src/main/java/org/apache/isis/applib/internal/exceptions/_Exceptions.java
index b47a88d..c28e5f4 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/exceptions/_Exceptions.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/exceptions/_Exceptions.java
@@ -19,8 +19,11 @@
 
 package org.apache.isis.applib.internal.exceptions;
 
+import java.util.Objects;
 import java.util.stream.Stream;
 
+import javax.annotation.Nullable;
+
 import org.apache.isis.applib.internal.base._NullSafe;
 
 /**
@@ -37,19 +40,44 @@ public final class _Exceptions {
 
 	private _Exceptions(){}
 	
-	public static final RuntimeException unmatchedCase(Object _case) {
-		return new RuntimeException("internal error: unmatched case in switch statement: "+_case);
+	// -- FRAMEWORK INTERNAL ERRORS 
+	
+	/**
+	 * Most likely to be used in switch statements to handle the default case.  
+	 * @param _case the unmatched case to be reported
+	 * @return
+	 */
+	public static final IllegalArgumentException unmatchedCase(@Nullable Object _case) {
+		return new IllegalArgumentException("internal error: unmatched case in switch statement: "+_case);
+	}
+	
+	/**
+	 * Most likely to be used in switch statements to handle the default case.
+	 * @param format like in {@link java.lang.String#format(String, Object...)}
+	 * @param _case the unmatched case to be reported
+	 * @return
+	 */
+	public static final IllegalArgumentException unmatchedCase(String format, @Nullable Object _case) {
+		Objects.requireNonNull(format);
+		return new IllegalArgumentException(String.format(format, _case));
 	}
 	
 	public static final RuntimeException unexpectedCodeReach() {
 		return new RuntimeException("internal error: code was reached, that is expected unreachable");
 	}	
 	
-	public static final Stream<String> streamStacktraceLines(Throwable e, int maxLines) {
-		return _NullSafe.stream(e.getStackTrace())
+	// -- STACKTRACE UTILITITIES
+	
+	public static final Stream<String> streamStacktraceLines(@Nullable Throwable ex, int maxLines) {
+		if(ex==null) {
+			return Stream.empty();
+		}
+		return _NullSafe.stream(ex.getStackTrace())
 				.map(StackTraceElement::toString)
 				.limit(maxLines);
 	}
 
 	
+
+	
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars.java b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars.java
index 8529b0b..e4d5064 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars.java
@@ -25,6 +25,7 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainServiceLayout;
+import org.apache.isis.applib.internal.exceptions._Exceptions;
 import org.apache.isis.applib.layout.component.ServiceActionLayoutData;
 import org.apache.isis.applib.layout.menubars.MenuBars;
 
@@ -88,6 +89,10 @@ public class BS3MenuBars extends org.apache.isis.applib.layout.menubars.MenuBars
             return getSecondary();
         case TERTIARY:
             return getTertiary();
+		case NOT_SPECIFIED:
+			break;
+		default:
+			throw _Exceptions.unmatchedCase(menuBar);
         }
         return null;
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java b/core/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
index a1f97e7..0afa0b8 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
@@ -24,6 +24,7 @@ import java.util.Iterator;
 import com.google.common.base.Splitter;
 
 import org.apache.isis.applib.annotation.Value;
+import org.apache.isis.applib.internal.exceptions._Exceptions;
 import org.apache.isis.schema.common.v1.BookmarkObjectState;
 import org.apache.isis.schema.common.v1.OidDto;
 
@@ -108,6 +109,7 @@ public class Bookmark implements Serializable {
 
         public static ObjectState from(final BookmarkObjectState objectState) {
             if(objectState == null) {
+                // persistent is assumed if not specified
                 return ObjectState.PERSISTENT;
             }
             switch (objectState) {
@@ -118,8 +120,7 @@ public class Bookmark implements Serializable {
             case PERSISTENT:
                 return ObjectState.PERSISTENT;
             default:
-                // persistent is assumed if not specified
-                return ObjectState.PERSISTENT;
+            	throw _Exceptions.unmatchedCase(objectState);
             }
         }
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/dto/DtoMappingHelper.java b/core/applib/src/main/java/org/apache/isis/applib/services/dto/DtoMappingHelper.java
index 21c5d74..9a97c6c 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/dto/DtoMappingHelper.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/dto/DtoMappingHelper.java
@@ -21,6 +21,7 @@ import javax.inject.Inject;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.internal.exceptions._Exceptions;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.schema.common.v1.BookmarkObjectState;
@@ -56,9 +57,10 @@ public class DtoMappingHelper {
             return BookmarkObjectState.TRANSIENT;
         case VIEW_MODEL:
             return BookmarkObjectState.VIEW_MODEL;
+        default:
+        	throw _Exceptions.unmatchedCase("objectState '%s' not recognized", bookmark.getObjectState());	
         }
-        throw new IllegalArgumentException(
-                String.format("objectState '%s' not recognized", bookmark.getObjectState()));
+        
     }
 
     @Inject
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 e5728cd..ccb1331 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
@@ -20,12 +20,15 @@ package org.apache.isis.applib.services.eventbus;
 
 import java.util.EventObject;
 import java.util.Map;
-import com.google.common.collect.Maps;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.internal.exceptions._Exceptions;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.util.ObjectContracts;
 
+import com.google.common.collect.Maps;
+
 public abstract class AbstractDomainEvent<S> extends java.util.EventObject {
 
     private static final long serialVersionUID = 1L;
@@ -244,11 +247,20 @@ public abstract class AbstractDomainEvent<S> extends java.util.EventObject {
     public void veto(final String reason, final Object... args) {
         switch (getEventPhase()) {
             case HIDE:
-                hide();
+                hide(); 
+                //TODO [ahuber] REVIEW missing break or intended?
             case DISABLE:
                 disable(String.format(reason, args));
+                //TODO [ahuber] REVIEW missing break or intended?
             case VALIDATE:
                 invalidate(String.format(reason, args));
+                break;
+                
+            case EXECUTED:
+            case EXECUTING:
+            	break;
+            default:
+            	throw _Exceptions.unmatchedCase(getEventPhase());
         }
     }
     /**
@@ -268,10 +280,20 @@ public abstract class AbstractDomainEvent<S> extends java.util.EventObject {
         switch (getEventPhase()) {
             case HIDE:
                 hide();
+                //TODO [ahuber] missing break or intended?
             case DISABLE:
                 disable(translatableReason);
+                //TODO [ahuber] REVIEW missing break or intended?
             case VALIDATE:
                 invalidate(translatableReason);
+                break;
+                
+            case EXECUTED:
+            case EXECUTING:
+            	break;
+            default:
+            	throw _Exceptions.unmatchedCase(getEventPhase());
+
         }
     }
     //endregion
diff --git a/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java b/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java
index 4291d82..44626b0 100644
--- a/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java
+++ b/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java
@@ -31,6 +31,7 @@ import org.joda.time.LocalDate;
 import org.joda.time.LocalDateTime;
 import org.joda.time.LocalTime;
 import org.apache.isis.applib.internal.base._Casts;
+import org.apache.isis.applib.internal.exceptions._Exceptions;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.schema.cmd.v1.ParamDto;
@@ -250,10 +251,7 @@ public final class CommonDtoUtils {
             return null;
         }
         default:
-            // should never happen; all cases are listed above
-            throw new IllegalArgumentException(String.format(
-                    "newValueDto(): do not recognize valueType %s (likely a framework error)",
-                    valueType));
+        	throw _Exceptions.unmatchedCase(valueType);
         }
     }
 
@@ -329,10 +327,7 @@ public final class CommonDtoUtils {
         case VOID:
             return null;
         default:
-            // should never happen; all cases are listed above
-            throw new IllegalArgumentException(String.format(
-                    "getValueDto(...): do not recognize valueType %s (likely a framework error)",
-                    valueType));
+        	throw _Exceptions.unmatchedCase(valueType);
         }
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
index 0d6f59f..5e000cb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
@@ -20,6 +20,7 @@
 package org.apache.isis.core.metamodel.adapter.oid;
 
 import org.apache.isis.applib.annotation.Value;
+import org.apache.isis.applib.internal.exceptions._Exceptions;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.core.commons.encoding.Encodable;
 import org.apache.isis.core.metamodel.adapter.version.Version;
@@ -94,8 +95,10 @@ public interface Oid extends Encodable {
                     return VIEWMODEL;
                 case TRANSIENT:
                     return TRANSIENT;
-                default:
+                case PERSISTENT:
                     return PERSISTENT;
+                default:
+                	throw _Exceptions.unmatchedCase(objectState);
             }
         }
         public Bookmark.ObjectState asBookmarkObjectState() {
@@ -104,8 +107,10 @@ public interface Oid extends Encodable {
                     return Bookmark.ObjectState.VIEW_MODEL;
                 case TRANSIENT:
                     return Bookmark.ObjectState.TRANSIENT;
-                default:
+                case PERSISTENT:
                     return Bookmark.ObjectState.PERSISTENT;
+                default:
+                	throw _Exceptions.unmatchedCase(this);
             }
         }
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/auditing/AuditableFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/auditing/AuditableFacetForDomainObjectAnnotation.java
index 378b7a1..3b0319b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/auditing/AuditableFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/auditing/AuditableFacetForDomainObjectAnnotation.java
@@ -23,6 +23,7 @@ import java.util.List;
 
 import org.apache.isis.applib.annotation.Auditing;
 import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.internal.exceptions._Exceptions;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacet;
@@ -47,8 +48,10 @@ public class AuditableFacetForDomainObjectAnnotation extends AuditableFacetAbstr
                     case ENABLED:
                         return new AuditableFacetForDomainObjectAnnotation(Enablement.ENABLED, holder);
                     case AS_CONFIGURED:
-                    default:
+                    case NOT_SPECIFIED:
                         return new AuditableFacetForDomainObjectAnnotationAsConfigured(holder);
+                    default:
+                    	throw _Exceptions.unmatchedCase(domainObject.auditing());
                     }
                 })
                 .orElse(new AuditableFacetFromConfiguration(holder));

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

[isis] 07/10: ISIS-1841 remove unused setter, that does nothing anyway

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 9c2514c7d971bf17576d31acdc95aba434b7515d
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jan 23 10:38:55 2018 +0100

    ISIS-1841 remove unused setter, that does nothing anyway
---
 .../org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java   | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java
index bc8e134..bb32527 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java
@@ -87,11 +87,6 @@ public class BS3Menu implements Menu, Serializable {
         return sections;
     }
 
-    public void setSections(List<BS3MenuSection> menuSections) {
-        this.sections = sections;
-    }
-
-
     private Boolean unreferencedActions;
 
     /**

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

[isis] 06/10: ISIS-1841 Nullable, Closure, IterableExtensions removed (after refactoring, no longer needed), tests removed or adapted

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 8b19f8ab51b50f18b4e7b7c953a2a040ee1f67d1
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jan 23 10:19:57 2018 +0100

    ISIS-1841 Nullable, Closure, IterableExtensions removed
    (after refactoring, no longer needed), tests removed or adapted
---
 .../isis/applib/internal/base/_NullSafe.java       | 18 ++++++--
 .../org/apache/isis/core/commons/lang/Closure.java | 32 --------------
 .../isis/core/commons/lang/IterableExtensions.java | 39 -----------------
 .../apache/isis/core/commons/lang/Nullable.java    | 49 ----------------------
 .../core/metamodel/facets/MethodFinderUtils.java   |  4 +-
 .../DomainObjectAnnotationFacetFactory.java        |  3 +-
 .../recreatable/RecreatableObjectFacetFactory.java |  2 +-
 .../commons/lang/IterableExtensionsTest_fold.java  | 45 --------------------
 .../metamodel/facets/MethodFinderUtilsTest.java    |  4 +-
 .../wicket/model/models/EntityCollectionModel.java | 44 ++++++++++---------
 .../models/LowestCommonSuperclassClosureTest.java  | 13 +++---
 11 files changed, 48 insertions(+), 205 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_NullSafe.java b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_NullSafe.java
index 985c19b..ae9b277 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_NullSafe.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_NullSafe.java
@@ -49,7 +49,7 @@ public final class _NullSafe {
 	 * If {@code array} is {@code array} returns the empty stream, 
 	 * otherwise returns a stream of the array's elements.
 	 * @param array
-	 * @return
+	 * @return non-null stream object
 	 */
 	public static <T> Stream<T> stream(final T[] array) {
 		return array!=null ? Stream.of(array) : Stream.empty();
@@ -59,17 +59,27 @@ public final class _NullSafe {
 	 * If {@code collection} is {@code null} returns the empty stream, 
 	 * otherwise returns a stream of the collection's elements.
 	 * @param collection
-	 * @return
+	 * @return non-null stream object
 	 */
 	public static <T> Stream<T> stream(final Collection<T> coll){
 		return coll!=null ? coll.stream() : Stream.empty();
 	}
 	
 	/**
+	 * If {@code iterable} is {@code null} returns the empty stream, 
+	 * otherwise returns a stream of the iterable's elements.
+	 * @param iterable
+	 * @return non-null stream object
+	 */
+	public static <T> Stream<T> stream(final Iterable<T> iterable){
+		return iterable!=null ? stream(iterable.iterator()) : Stream.empty();
+	}
+	
+	/**
 	 * If {@code iterator} is {@code null} returns the empty stream, 
 	 * otherwise returns a stream of the iterator's elements.
 	 * @param collection
-	 * @return
+	 * @return non-null stream object
 	 */
 	public static <T> Stream<T> stream(final Iterator<T> iterator){
 		return iterator!=null 
@@ -77,7 +87,7 @@ public final class _NullSafe {
 				: Stream.empty();
 	}
 	
-	// [ahuber] not public, since one time use only!
+	// [ahuber] not public, since one time use of iterator only!
 	private static <T> Iterable<T> toIterable(final Iterator<T> iterator){
 		return ()->iterator;
 	}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/Closure.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/Closure.java
deleted file mode 100644
index c0d9f8e..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/Closure.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.commons.lang;
-
-
-/**
- * @see http://cyrille.martraire.com/2011/03/thinking-functional-programming-with-map-and-fold-in-your-everyday-java/
- */
-public interface Closure<T> {
-    
-    public T execute(T value);
-
-}
-
-
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/IterableExtensions.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/IterableExtensions.java
deleted file mode 100644
index 68ec84f..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/IterableExtensions.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.commons.lang;
-
-
-/**
- * @see http://cyrille.martraire.com/2011/03/thinking-functional-programming-with-map-and-fold-in-your-everyday-java/
- */
-public final class IterableExtensions {
-
-    private IterableExtensions() {
-    }
-
-    public final static <T> T fold(Iterable<T> list, Closure<T> closure) {
-        T result = null;
-        for (T t : list) {
-        result = closure.execute(t);
-        }
-        return result;
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/Nullable.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/Nullable.java
deleted file mode 100644
index f06d014..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/Nullable.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.core.commons.lang;
-
-/**
- * 
- * @deprecated use {@link java.util.Optional} instead
- *
- * @param <T>
- */
-@Deprecated
-public class Nullable<T> {
-
-    public static <T> Nullable<T> some(T t) {
-        return new Nullable<>(t);
-    }
-
-    public static <T> Nullable<T> none() {
-        return new Nullable<T>(null);
-    }
-
-    private final T t;
-
-    private Nullable(final T t) {
-        this.t = t;
-    }
-
-    public boolean isPresent() { return t != null; }
-    public T value() {
-        return t;
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java
index 2109995..cc86662 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java
@@ -202,7 +202,7 @@ public final class MethodFinderUtils {
     public static Method findAnnotatedMethod(
             final Object pojo,
             final Class<? extends Annotation> annotationClass,
-            final Map<Class, Optional<Method>> methods) {
+            final Map<Class<?>, Optional<Method>> methods) {
 
         final Class<?> clz = pojo.getClass();
         Optional<Method> nullableMethod = methods.get(clz);
@@ -215,7 +215,7 @@ public final class MethodFinderUtils {
     private static Optional<Method> search(
             final Class<?> clz,
             final Class<? extends Annotation> annotationClass,
-            final Map<Class, Optional<Method>> postConstructMethods) {
+            final Map<Class<?>, Optional<Method>> postConstructMethods) {
 
         final Method[] methods = clz.getMethods();
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index 3408427..e952337 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -513,6 +513,7 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
+        //TODO [ahuber] unused because of side effects ?
         IsisConfiguration configuration = getConfiguration();
 
         this.persistenceSessionServiceInternal = servicesInjector.getPersistenceSessionServiceInternal();
@@ -522,7 +523,7 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
 
     // //////////////////////////////////////
 
-    private final Map<Class, Optional<Method>> postConstructMethods = Maps.newHashMap();
+    private final Map<Class<?>, Optional<Method>> postConstructMethods = Maps.newHashMap();
 
     public Method postConstructMethodFor(final Object pojo) {
         return MethodFinderUtils.findAnnotatedMethod(pojo, PostConstruct.class, postConstructMethods);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
index ea70a9a..867911a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
@@ -125,7 +125,7 @@ public class RecreatableObjectFacetFactory extends FacetFactoryAbstract
 
     // //////////////////////////////////////
 
-    private final Map<Class, Optional<Method>> postConstructMethods = Maps.newHashMap();
+    private final Map<Class<?>, Optional<Method>> postConstructMethods = Maps.newHashMap();
 
     public Method postConstructMethodFor(final Object pojo) {
         return MethodFinderUtils.findAnnotatedMethod(pojo, PostConstruct.class, postConstructMethods);
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/commons/lang/IterableExtensionsTest_fold.java b/core/metamodel/src/test/java/org/apache/isis/core/commons/lang/IterableExtensionsTest_fold.java
deleted file mode 100644
index b65b972..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/commons/lang/IterableExtensionsTest_fold.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.isis.core.commons.lang;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.Arrays;
-
-import org.junit.Test;
-
-public class IterableExtensionsTest_fold {
-
-    @Test
-    public void happyCase() throws Exception {
-
-        class SummingClosure implements Closure<Double> {
-            private double sum = 0;
-
-            public Double execute(Double amount) {
-                sum += amount; // apply '+=' operator
-                return sum; // return current accumulated value
-            }
-        }
-
-        SummingClosure closure = new SummingClosure();
-
-        Double result = IterableExtensions.fold(Arrays.asList(new Double[] { 99., 127., 35. }), closure);
-        assertEquals(261.0, result, 0.000000001);
-    }
-
-}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/MethodFinderUtilsTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/MethodFinderUtilsTest.java
index 044339d..d6075d2 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/MethodFinderUtilsTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/MethodFinderUtilsTest.java
@@ -44,7 +44,7 @@ public class MethodFinderUtilsTest {
     @Test
     public void whenExists() throws Exception {
 
-        final Map<Class, Optional<Method>> cache = Maps.newHashMap();
+        final Map<Class<?>, Optional<Method>> cache = Maps.newHashMap();
         final Method method = MethodFinderUtils.findAnnotatedMethod(new WithPostConstruct(), PostConstruct.class, cache);
 
         assertThat(method, is(not(nullValue())));
@@ -57,7 +57,7 @@ public class MethodFinderUtilsTest {
     @Test
     public void whenDoesNotExist() throws Exception {
 
-        final Map<Class, Optional<Method>> cache = Maps.newHashMap();
+        final Map<Class<?>, Optional<Method>> cache = Maps.newHashMap();
         final Method method = MethodFinderUtils.findAnnotatedMethod(new NoPostConstruct(), PostConstruct.class, cache);
 
         assertThat(method, is(nullValue()));
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
index 923980a..e86b7af 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
@@ -26,19 +26,10 @@ import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 
-import com.google.common.base.Function;
-import com.google.common.base.Predicates;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-
-import org.apache.wicket.Component;
-
+import org.apache.isis.applib.internal.base._NullSafe;
 import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.core.commons.factory.InstanceUtil;
 import org.apache.isis.core.commons.lang.ClassUtil;
-import org.apache.isis.core.commons.lang.Closure;
-import org.apache.isis.core.commons.lang.IterableExtensions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
@@ -57,6 +48,12 @@ import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.links.LinksProvider;
 import org.apache.isis.viewer.wicket.model.mementos.CollectionMemento;
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
+import org.apache.wicket.Component;
+
+import com.google.common.base.Predicates;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
 
 /**
  * Model representing a collection of entities, either {@link Type#STANDALONE
@@ -202,10 +199,10 @@ public class EntityCollectionModel extends ModelAbstract<List<ObjectAdapter>> im
         public abstract int getCount(EntityCollectionModel entityCollectionModel);
     }
 
-    static class LowestCommonSuperclassClosure implements Closure<Class<?>>{
+    static class LowestCommonSuperclassFinder {
         private Class<?> common;
-        @Override
-        public Class<?> execute(final Class<?> value) {
+        
+        public void collect(final Class<?> value) {
             if(common == null) {
                 common = value;
             } else {
@@ -215,11 +212,15 @@ public class EntityCollectionModel extends ModelAbstract<List<ObjectAdapter>> im
                 }
                 common = current;
             }
-            return common;
         }
         Class<?> getLowestCommonSuperclass() { 
             return common; 
         }
+		void searchThrough(Iterable<?> list) {
+			_NullSafe.stream(list)
+            .map(Object::getClass)
+            .forEach(this::collect);
+		}
     }
 
     /**
@@ -239,15 +240,12 @@ public class EntityCollectionModel extends ModelAbstract<List<ObjectAdapter>> im
             // dynamically determine the spec of the elements
             // (ie so a List<Object> can be rendered according to the runtime type of its elements, 
             // rather than the compile-time type
-            final LowestCommonSuperclassClosure closure = new LowestCommonSuperclassClosure();
-            Function<Object, Class<?>> function = new Function<Object, Class<?>>(){
-                @Override
-                public Class<?> apply(Object obj) {
-                    return obj.getClass();
-                }
-            };
-            IterableExtensions.fold(Iterables.transform(pojos,  function), closure);
-            elementSpec = sessionFactory.getSpecificationLoader().loadSpecification(closure.getLowestCommonSuperclass());
+            final LowestCommonSuperclassFinder finder = new LowestCommonSuperclassFinder();
+            
+            finder.searchThrough(pojos);
+            
+            elementSpec = sessionFactory.getSpecificationLoader()
+            		.loadSpecification(finder.getLowestCommonSuperclass());
         } else {
             elementSpec = collectionAsAdapter.getElementSpecification();
         }
diff --git a/core/viewer-wicket-model/src/test/java/org/apache/isis/viewer/wicket/model/models/LowestCommonSuperclassClosureTest.java b/core/viewer-wicket-model/src/test/java/org/apache/isis/viewer/wicket/model/models/LowestCommonSuperclassClosureTest.java
index da2cb46..523bf37 100644
--- a/core/viewer-wicket-model/src/test/java/org/apache/isis/viewer/wicket/model/models/LowestCommonSuperclassClosureTest.java
+++ b/core/viewer-wicket-model/src/test/java/org/apache/isis/viewer/wicket/model/models/LowestCommonSuperclassClosureTest.java
@@ -23,12 +23,10 @@ import static org.junit.Assert.assertThat;
 
 import java.util.List;
 
-import com.google.common.collect.Lists;
-
+import org.apache.isis.core.commons.matchers.IsisMatchers;
 import org.junit.Test;
 
-import org.apache.isis.core.commons.lang.IterableExtensions;
-import org.apache.isis.core.commons.matchers.IsisMatchers;
+import com.google.common.collect.Lists;
 
 public class LowestCommonSuperclassClosureTest {
 
@@ -54,9 +52,10 @@ public class LowestCommonSuperclassClosureTest {
     }
     
     private static void assertLowestCommonOfListIs(List<Class<?>> list, Class<?> expected) {
-        EntityCollectionModel.LowestCommonSuperclassClosure closure = new EntityCollectionModel.LowestCommonSuperclassClosure();
-        IterableExtensions.fold(list, closure);
-        assertThat(closure.getLowestCommonSuperclass(), IsisMatchers.classEqualTo(expected));
+        EntityCollectionModel.LowestCommonSuperclassFinder finder = 
+        		new EntityCollectionModel.LowestCommonSuperclassFinder();
+        finder.searchThrough(list);
+        assertThat(finder.getLowestCommonSuperclass(), IsisMatchers.classEqualTo(expected));
     }
 
     private static List<Class<? extends Object>> listOf(Class<?>... classes) {

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

[isis] 01/10: ISIS-1846 clarify corner cases for string splitting + tests

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit a5931f6d1e991de0bfd5ff9c97cb54f0aaa3021d
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jan 23 09:01:19 2018 +0100

    ISIS-1846 clarify corner cases for string splitting + tests
---
 .../apache/isis/applib/internal/base/_Strings.java | 22 +++++--
 .../internal/base/_Strings_NaturalNames.java       |  2 +-
 .../internal/base/_Strings_SplitIterator.java      | 73 ++++++++++++++++++++++
 .../isis/applib/internal/base/StringsTest.java     | 12 +++-
 4 files changed, 101 insertions(+), 8 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings.java b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings.java
index e8f3921..52744da 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings.java
@@ -19,10 +19,14 @@
 
 package org.apache.isis.applib.internal.base;
 
+import static org.apache.isis.applib.internal.base._Strings_SplitIterator.splitIterator;
+
 import java.util.Objects;
+import java.util.Spliterator;
+import java.util.Spliterators;
 import java.util.function.UnaryOperator;
-import java.util.regex.Pattern;
 import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
 
 import javax.annotation.Nullable;
 
@@ -127,9 +131,16 @@ public final class _Strings {
 	
 	/**
 	 * Splits the {@code input} into chunks separated by {@code separator}, 
-	 * then puts all non-empty chunks on the stream.
+	 * then puts all chunks on the stream.
+	 * <p>
+	 * Corner cases: 
+	 * <ul>
+	 * <li>{@code input} starts with {@code separator}: an empty string is the first chunk put on the stream</li>
+	 * <li>{@code input} ends with {@code separator}: an empty string is the last chunk put on the stream</li>
+	 * <li>a {@code separator} is followed by another: an empty string is put on the stream</li>
+	 * </ul> 
 	 * @param input
-	 * @param separator
+	 * @param separator non-empty string
 	 * @return empty stream if {@code input} is null
 	 * @throws {@link IllegalArgumentException} if {@code separator} is empty
 	 */
@@ -141,8 +152,9 @@ public final class _Strings {
 		if(!input.contains(separator))
 			return Stream.of(input);
 		
-		return Stream.of(input.split(Pattern.quote(separator)))
-				.filter(_Strings::isNotEmpty);
+		return StreamSupport.stream(
+		          Spliterators.spliteratorUnknownSize(splitIterator(input, separator), Spliterator.ORDERED),
+		          false); // not parallel
 	}
     
     // -- REPLACEMENT OPERATORS
diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings_NaturalNames.java b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings_NaturalNames.java
index 85192ab..3f03a84 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings_NaturalNames.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings_NaturalNames.java
@@ -26,7 +26,7 @@ import javax.annotation.Nullable;
  * package private mixin for utility class {@link _Strings}
  *
  */
-class _Strings_NaturalNames {
+final class _Strings_NaturalNames {
 	
 	private static final char SPACE = ' ';
  	/**
diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings_SplitIterator.java b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings_SplitIterator.java
new file mode 100644
index 0000000..3e89771
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings_SplitIterator.java
@@ -0,0 +1,73 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.internal.base;
+
+import java.util.Collections;
+import java.util.Iterator;
+
+import javax.annotation.Nullable;
+
+/**
+ * 
+ * package private mixin for utility class {@link _Strings}
+ *
+ */
+final class _Strings_SplitIterator {
+	
+	public static Iterator<String> splitIterator(@Nullable final String x, final String delimiter){
+		if(_Strings.isEmpty(delimiter))
+			throw new IllegalArgumentException("a non empty delimiter is required");
+		if(_Strings.isEmpty(x))
+			return Collections.<String>emptyIterator();
+		final int dlen = delimiter.length();
+		return new Iterator<String>() {
+			private int p=0, q=-1;
+			
+			private String next = _next();
+			
+			private String _next() {
+				if(q==-2)
+					return null;
+				q = x.indexOf(delimiter, p);
+				if(q>-1) {
+					final int p0 = p; p=q+dlen; 
+					return x.substring(p0, q);
+				}
+				q = -2; // terminal
+				return x.substring(p, x.length());
+			}
+			
+			@Override
+			public boolean hasNext() {
+				return next!=null;
+			}
+			
+			@Override
+			public String next() {
+				try { 
+					return next; 
+				} finally { 
+					next=_next(); 
+				}
+			}
+		};
+	}
+	
+}
diff --git a/core/applib/src/test/java/org/apache/isis/applib/internal/base/StringsTest.java b/core/applib/src/test/java/org/apache/isis/applib/internal/base/StringsTest.java
index 0180bc1..8d8c963 100644
--- a/core/applib/src/test/java/org/apache/isis/applib/internal/base/StringsTest.java
+++ b/core/applib/src/test/java/org/apache/isis/applib/internal/base/StringsTest.java
@@ -136,7 +136,7 @@ public class StringsTest {
 		Assert.assertThat(
 				_Strings.splitThenStream("$ 1$2 a$Bc ", "$")
 				.collect(Collectors.joining("|")),
-				is(" 1|2 a|Bc "));
+				is("| 1|2 a|Bc "));
 	}
 	
 	@Test
@@ -144,7 +144,15 @@ public class StringsTest {
 		Assert.assertThat(
 				_Strings.splitThenStream(" 1$2 a$Bc $", "$")
 				.collect(Collectors.joining("|")),
-				is(" 1|2 a|Bc "));
+				is(" 1|2 a|Bc |"));
+	}
+	
+	@Test
+	public void splitThenStreamMultipleWithSeparatorsInSequence() throws Exception {
+		Assert.assertThat(
+				_Strings.splitThenStream(" 1$2 a$$Bc ", "$")
+				.collect(Collectors.joining("|")),
+				is(" 1|2 a||Bc "));
 	}
 	
 	@Test

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

[isis] 09/10: ISIS-1841 cleanup some compiler warnings

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 7d5b53832b55f0125f4f7998b187e1b415d6258f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jan 23 11:00:52 2018 +0100

    ISIS-1841 cleanup some compiler warnings
---
 .../org/apache/isis/applib/AppManifestAbstract.java   |  3 ++-
 .../java/org/apache/isis/applib/IsisApplibModule.java |  5 ++++-
 .../applib/fixturescripts/BuilderScriptAbstract.java  |  4 ++--
 .../isis/applib/fixturescripts/FixtureScript.java     |  3 ++-
 .../exceptions/package-info.java}                     | 13 +++++++------
 .../applib/layout/grid/bootstrap3/BS3ClearFix.java    |  1 +
 .../layout/grid/bootstrap3/BS3ElementAbstract.java    |  1 +
 .../isis/applib/layout/grid/bootstrap3/BS3Grid.java   |  2 +-
 .../isis/applib/layout/menubars/MenuBarsAbstract.java |  1 +
 .../apache/isis/schema/utils/InteractionDtoUtils.java | 19 ++++++++++---------
 10 files changed, 31 insertions(+), 21 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 e9fe96a..63a074a 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
@@ -211,7 +211,8 @@ public abstract class AppManifestAbstract implements AppManifest {
             return self();
         }
 
-        public B withFixtureScripts(final Class<? extends FixtureScript>... fixtures) {
+		@SuppressWarnings("unchecked") // at least type-safety applies
+		public B withFixtureScripts(final Class<? extends FixtureScript>... fixtures) {
             return withFixtureScripts(Arrays.asList(fixtures));
         }
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/IsisApplibModule.java b/core/applib/src/main/java/org/apache/isis/applib/IsisApplibModule.java
index dd27a03..5ef90ac 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/IsisApplibModule.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/IsisApplibModule.java
@@ -22,14 +22,17 @@ public final class IsisApplibModule {
 
     private IsisApplibModule(){}
 
-    public abstract static class ActionDomainEvent<S> extends org.apache.isis.applib.services.eventbus.ActionDomainEvent<S> {
+    @SuppressWarnings("serial") // serial versionId to be provided by concrete class
+	public abstract static class ActionDomainEvent<S> extends org.apache.isis.applib.services.eventbus.ActionDomainEvent<S> {
         public ActionDomainEvent() {}
     }
 
+    @SuppressWarnings("serial") // serial versionId to be provided by concrete class
     public abstract static class CollectionDomainEvent<S,T> extends org.apache.isis.applib.services.eventbus.CollectionDomainEvent<S,T> {
         public CollectionDomainEvent() { }
     }
 
+    @SuppressWarnings("serial") // serial versionId to be provided by concrete class
     public abstract static class PropertyDomainEvent<S,T> extends org.apache.isis.applib.services.eventbus.PropertyDomainEvent<S,T> {
         public PropertyDomainEvent() { }
     }
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 e4fc694..e185cf2 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
@@ -73,7 +73,7 @@ public abstract class BuilderScriptAbstract<T,F extends BuilderScriptAbstract<T,
 
     public abstract T getObject();
 
-    public <P extends PersonaWithBuilderScript<T, F>, T, F extends BuilderScriptAbstract<T,F>> T objectFor(
+    public <P extends PersonaWithBuilderScript<T, F>> T objectFor(
             final P persona,
             final FixtureScript.ExecutionContext ec) {
         if(persona == null) {
@@ -83,7 +83,7 @@ public abstract class BuilderScriptAbstract<T,F extends BuilderScriptAbstract<T,
         return ec.executeChildT(this, fixtureScript).getObject();
     }
 
-    public <P extends PersonaWithFinder<T>, T> T findUsing(final P persona) {
+    public <P extends PersonaWithFinder<T>> T findUsing(final P persona) {
         if(persona == null) {
             return null;
         }
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 8ffe7ae..955cb50 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
@@ -925,7 +925,8 @@ public abstract class FixtureScript
     /**
      * Returns the first non-null value; for convenience of subclass implementations
      */
-    protected static <T> T coalesce(final T... ts) {
+    @SafeVarargs
+	protected static <T> T coalesce(final T... ts) {
         for (final T t : ts) {
             if(t != null) return t;
         }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java b/core/applib/src/main/java/org/apache/isis/applib/internal/exceptions/package-info.java
similarity index 75%
copy from core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java
copy to core/applib/src/main/java/org/apache/isis/applib/internal/exceptions/package-info.java
index acf64e9..8b79deb 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/exceptions/package-info.java
@@ -16,9 +16,10 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
-
-public abstract class BS3ClearFix extends BS3RowContent {
-
-    public abstract String toCssClass();
-}
+/**
+ * Internal classes, not intended as being part of the public API.
+ * 
+ * WARNING: Do NOT use any of the classes provided by this package! <br/> 
+ * Public access will be removed once we migrate to Java 9+ modules.
+ */
+package org.apache.isis.applib.internal.exceptions;
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java
index acf64e9..ce50d68 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java
@@ -18,6 +18,7 @@
  */
 package org.apache.isis.applib.layout.grid.bootstrap3;
 
+@SuppressWarnings("serial") // serial versionId to be provided by concrete class
 public abstract class BS3ClearFix extends BS3RowContent {
 
     public abstract String toCssClass();
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ElementAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ElementAbstract.java
index ef0e312..233e261 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ElementAbstract.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ElementAbstract.java
@@ -23,6 +23,7 @@ import javax.xml.bind.annotation.XmlAttribute;
 /**
  * Superclass for all layout classes, factoring out the common {@link #getCssClass()} attribute.
  */
+@SuppressWarnings("serial") // serial versionId to be provided by concrete class
 public abstract class BS3ElementAbstract implements BS3Element {
 
     private String cssClass;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Grid.java b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Grid.java
index 6661215..785beab 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Grid.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Grid.java
@@ -108,7 +108,7 @@ public class BS3Grid extends GridAbstract implements BS3Element, Dto, BS3RowOwne
 
 
 
-
+    //TODO [ahuber] unused
     private BS3RowOwner owner;
 
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBarsAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBarsAbstract.java
index e4bd77e..a2ff209 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBarsAbstract.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBarsAbstract.java
@@ -28,6 +28,7 @@ import com.google.common.collect.Maps;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.layout.component.ServiceActionLayoutData;
 
+@SuppressWarnings("serial") // serial versionId to be provided by concrete class
 @XmlTransient // ignore this class
 public abstract class MenuBarsAbstract implements MenuBars, Serializable {
 
diff --git a/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java b/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java
index ccf48dd..f056398 100644
--- a/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java
+++ b/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java
@@ -315,15 +315,16 @@ public final class InteractionDtoUtils {
         return invocation;
     }
 
-    private static PropertyEditDto propertyEditFor(final InteractionDto interactionDto) {
-        PropertyEditDto edit = (PropertyEditDto) interactionDto.getExecution();
-        if(edit == null) {
-            edit = new PropertyEditDto();
-            interactionDto.setExecution(edit);
-            edit.setInteractionType(InteractionType.PROPERTY_EDIT);
-        }
-        return edit;
-    }
+// TODO not used
+//    private static PropertyEditDto propertyEditFor(final InteractionDto interactionDto) {
+//        PropertyEditDto edit = (PropertyEditDto) interactionDto.getExecution();
+//        if(edit == null) {
+//            edit = new PropertyEditDto();
+//            interactionDto.setExecution(edit);
+//            edit.setInteractionType(InteractionType.PROPERTY_EDIT);
+//        }
+//        return edit;
+//    }
 
     private static List<ParamDto> parameterListFor(final InteractionDto ixnDto) {
         return parameterListFor(actionInvocationFor(ixnDto));

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

[isis] 02/10: ISIS-1846 introduces _Constants (internal API)

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 70a5f0df5029d7b937f19f38dbe922faf3f7e9a4
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jan 23 09:02:35 2018 +0100

    ISIS-1846 introduces _Constants (internal API)
---
 .../apache/isis/applib/internal/_Constants.java    |  46 ++++++
 .../compare/_Comparators_SequenceCompare.java      |   5 +
 .../core/commons/exceptions/ExceptionUtils.java    |   6 +-
 .../isis/core/commons/reflection/Reflect.java      | 167 ---------------------
 4 files changed, 54 insertions(+), 170 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/_Constants.java b/core/applib/src/main/java/org/apache/isis/applib/internal/_Constants.java
new file mode 100644
index 0000000..ba03469
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/_Constants.java
@@ -0,0 +1,46 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.internal;
+
+/**
+ * <h1>- internal use only -</h1>
+ * <p>
+ * A collection of commonly used constants. 
+ * <p>
+ * WARNING: Do <b>NOT</b> use any of the classes provided by this package! <br/> 
+ * Public access will be removed once we migrate to Java 9+ modules.
+ * 
+ * @since 2.0.0
+ */
+public final class _Constants {
+
+	private _Constants(){}
+	
+	/**
+	 * Convenient e.g. for reflective invocation
+	 */
+	public static Object[] emptyObjects = {};
+
+	/**
+	 * Convenient e.g. for reflective invocation
+	 */
+	public static Class<?>[] emptyClasses = {};
+	
+}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/compare/_Comparators_SequenceCompare.java b/core/applib/src/main/java/org/apache/isis/applib/internal/compare/_Comparators_SequenceCompare.java
index 2bbf6f9..dfbacee 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/compare/_Comparators_SequenceCompare.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/compare/_Comparators_SequenceCompare.java
@@ -24,6 +24,11 @@ import javax.annotation.Nullable;
 
 import org.apache.isis.applib.internal.base._Strings;
 
+/**
+ * 
+ * package private mixin for utility class {@link _Comparators}
+ *
+ */
 final class _Comparators_SequenceCompare {
 
     private _Comparators_SequenceCompare(){}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/exceptions/ExceptionUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/exceptions/ExceptionUtils.java
index 1b313c6..f684dc8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/exceptions/ExceptionUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/exceptions/ExceptionUtils.java
@@ -26,7 +26,7 @@ import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.isis.core.commons.reflection.Reflect;
+import org.apache.isis.applib.internal._Constants;
 
 /**
  * <p>Provides utilities for manipulating and examining 
@@ -69,7 +69,7 @@ public class ExceptionUtils {
     static {
         Method causeMethod;
         try {
-            causeMethod = Throwable.class.getMethod("getCause", Reflect.emptyClasses);
+            causeMethod = Throwable.class.getMethod("getCause", _Constants.emptyClasses);
         } catch (Exception e) {
             causeMethod = null;
         }
@@ -248,7 +248,7 @@ public class ExceptionUtils {
         Class<?> cls = throwable.getClass();
         for (final String causeMethodName : CAUSE_METHOD_NAMES) {
             try {
-                Method method = cls.getMethod(causeMethodName, Reflect.emptyClasses);
+                Method method = cls.getMethod(causeMethodName, _Constants.emptyClasses);
                 if (method != null && Throwable.class.isAssignableFrom(method.getReturnType())) {
                     return true;
                 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/reflection/Reflect.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/reflection/Reflect.java
deleted file mode 100644
index 82cc7e5..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/reflection/Reflect.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.commons.reflection;
-
-import java.beans.BeanInfo;
-import java.beans.IntrospectionException;
-import java.beans.Introspector;
-import java.beans.PropertyDescriptor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-import java.util.function.Consumer;
-import java.util.stream.Stream;
-
-/**
- * 
- * Provides shortcuts for common java.lang.reflect idioms.
- * 
- * @author ahuber@apache.org
- * @since 2.0.0
- *
- */
-public class Reflect {
-
-	public static Object[] emptyObjects = {};
-	public static Class<?>[] emptyClasses = {};
-	
-	// -- CLASS REFLECTION
-	
-	/**
-	 * Returns declared methods of this class/interface and all super classes/interfaces.
-	 * @param type
-	 * @return
-	 */
-	public static List<Method> getAllDeclaredMethods(Class<?> type) {
-		final List<Method> methods = new ArrayList<>();
-
-		Stream.of(type.getDeclaredMethods()).forEach(methods::add);
-		visitInterfaces(type,c->Stream.of(c.getDeclaredMethods()).forEach(methods::add));
-		visitSuperclassesOf(type,c->Stream.of(c.getDeclaredMethods()).forEach(methods::add));
-		return methods;
-	}
-
-	/**
-	 * Returns declared fields of this class/interface and all super classes/interfaces.
-	 * @param type
-	 * @return
-	 */
-	public static List<Field> getAllDeclaredFields(Class<?> type) {
-		final List<Field> fields = new ArrayList<>();
-
-		Stream.of(type.getDeclaredFields()).forEach(fields::add);
-		visitInterfaces(type,c->Stream.of(c.getDeclaredFields()).forEach(fields::add));
-		visitSuperclassesOf(type,c->Stream.of(c.getDeclaredFields()).forEach(fields::add));
-		return fields;
-	}
-	
-	public static void visitSuperclassesOf(final Class<?> clazz, final Consumer<Class<?>> visitor){
-		final Class<?> superclass = clazz.getSuperclass();
-		if(superclass!=null){
-			visitor.accept(superclass);
-			visitSuperclassesOf(superclass, visitor);
-		}
-	}
-
-	public static void visitInterfaces(final Class<?> clazz, final Consumer<Class<?>> visitor){
-		if(clazz.isInterface())
-			visitor.accept(clazz);
-
-		for(Class<?> interf : clazz.getInterfaces())
-			visitor.accept(interf);
-	}
-	
-	public static Method getGetter(Object bean, String propertyName) throws IntrospectionException {
-		final BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass());
-		for(PropertyDescriptor pd:beanInfo.getPropertyDescriptors()){
-			if(!pd.getName().equals(propertyName))
-				continue;
-			return pd.getReadMethod();
-		}
-		return null;	
-	}
-	
-	// -- PRIMITIVE TYPES
-
-	private static final Set<Class<?>> primitives = new HashSet<>(Arrays.asList(
-			boolean.class,
-			byte.class,
-			char.class,
-			double.class, 
-			float.class,
-			int.class,
-			long.class,
-			short.class
-			//void.class //separated out into its own predicate: isVoid(...)
-			));
-
-	private static final Set<Class<?>> primitiveWrappers = new HashSet<>(Arrays.asList(
-			Boolean.class,
-			Byte.class,
-			Character.class,
-			Double.class,
-			Float.class,
-			Integer.class,
-			Long.class,
-			Short.class
-			//Void.class //separated out into its own predicate: isVoid(...)
-			));
-	
-	// -- TYPE PREDICATES
-
-	public static boolean isVoid(Class<?> c) {
-		Objects.requireNonNull(c);
-		return c == void.class || c == Void.class;
-	}
-
-	public static boolean isPrimitive(Class<?> c) {
-		Objects.requireNonNull(c);
-		return primitives.contains(c);
-	}
-
-	public static boolean isPrimitiveWrapper(Class<?> c) {
-		Objects.requireNonNull(c);
-		return primitiveWrappers.contains(c);
-	}
-
-
-	// -- METHOD PREDICATES
-
-	public static boolean isNoArg(Method m) {
-		Objects.requireNonNull(m);
-		return m.getParameterTypes().length==0;
-	}
-
-	public static boolean isPublic(Method m) {
-		Objects.requireNonNull(m);
-		return Modifier.isPublic(m.getModifiers());
-	}
-
-	public static boolean isVoid(Method m) {
-		Objects.requireNonNull(m);
-		return isVoid(m.getReturnType());
-	}
-
-}

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

[isis] 03/10: ISIS-1846 consolidate uses of constants 'emptyObjects' + 'emptyClasses'

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 286b2c595b8b993e401aa2b3f5630b7691a264bd
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jan 23 09:17:16 2018 +0100

    ISIS-1846 consolidate uses of constants 'emptyObjects' + 'emptyClasses'
---
 .../main/java/org/apache/isis/applib/internal/_Constants.java    | 5 +++--
 .../src/main/java/org/apache/isis/applib/util/TitleBuffer.java   | 8 ++++----
 .../java/org/apache/isis/core/commons/lang/ObjectExtensions.java | 4 +++-
 .../java/org/apache/isis/core/metamodel/facetapi/FacetUtil.java  | 4 +++-
 .../defaults/method/ActionDefaultsFacetViaMethodFactory.java     | 3 ++-
 .../facets/object/ignore/javalang/RemoveMethodsFacetFactory.java | 3 ++-
 .../method/ActionParameterAutoCompleteFacetViaMethod.java        | 3 ++-
 .../ActionParameterChoicesFacetDerivedFromChoicesFacet.java      | 3 ++-
 .../param/choices/method/ActionChoicesFacetViaMethodFactory.java | 3 ++-
 .../choices/methodnum/ActionParameterChoicesFacetViaMethod.java  | 9 +++++----
 .../enums/PropertyChoicesFacetDerivedFromChoicesFacet.java       | 5 +++--
 .../core/metamodel/services/grid/GridLoaderServiceDefault.java   | 3 ++-
 .../core/metamodel/specloader/specimpl/ObjectActionDefault.java  | 4 +++-
 .../test/java/org/apache/isis/core/metamodel/facets/Utils.java   | 3 ++-
 .../org.nakedobjects.nof.reflect.remote.spec/DummyAction.java    | 3 ++-
 15 files changed, 40 insertions(+), 23 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/_Constants.java b/core/applib/src/main/java/org/apache/isis/applib/internal/_Constants.java
index ba03469..d4a71f1 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/_Constants.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/_Constants.java
@@ -36,11 +36,12 @@ public final class _Constants {
 	/**
 	 * Convenient e.g. for reflective invocation
 	 */
-	public static Object[] emptyObjects = {};
+	public static Object[] emptyObjects = new Object[0];
 
 	/**
 	 * Convenient e.g. for reflective invocation
 	 */
-	public static Class<?>[] emptyClasses = {};
+	@SuppressWarnings("rawtypes")
+	public static Class[] emptyClasses = new Class[0];
 	
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/util/TitleBuffer.java b/core/applib/src/main/java/org/apache/isis/applib/util/TitleBuffer.java
index bf2a969..6d804a7 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/util/TitleBuffer.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/util/TitleBuffer.java
@@ -22,6 +22,8 @@ package org.apache.isis.applib.util;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
+import org.apache.isis.applib.internal._Constants;
+
 /**
  * Title buffer is a utility class to help produce titles for objects without
  * having to add lots of guard code. It provides two basic method: one to
@@ -32,8 +34,6 @@ import java.lang.reflect.Method;
  */
 public class TitleBuffer {
     private static final String SPACE = " ";
-    public static final Class<?>[] NO_PARAMETER_TYPES = new Class[0];
-    public static final Object[] NO_ARGUMENTS = new Object[0];
 
     /**
      * Determines if the specified object's title is empty (or null).
@@ -64,8 +64,8 @@ public class TitleBuffer {
         }
 
         try {
-            Method method = object.getClass().getMethod("title", NO_PARAMETER_TYPES);
-            return (String) method.invoke(object, NO_ARGUMENTS);
+            Method method = object.getClass().getMethod("title", _Constants.emptyClasses);
+            return (String) method.invoke(object, _Constants.emptyObjects);
         } catch (final SecurityException | IllegalArgumentException | IllegalAccessException | InvocationTargetException e) {
             throw new TitleBufferException(e);
         } catch (final NoSuchMethodException e) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ObjectExtensions.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ObjectExtensions.java
index 170a699..128d3c5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ObjectExtensions.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ObjectExtensions.java
@@ -23,6 +23,8 @@ import java.io.IOException;
 import java.lang.reflect.Method;
 import java.util.List;
 
+import org.apache.isis.applib.internal._Constants;
+
 /**
  * Helpers to co-erce non-generic values into type-safe generics without
  * having to suppress compiler warnings all over the place.
@@ -59,7 +61,7 @@ public final class ObjectExtensions {
     }
 
     public static Method getMethod(final Object object, final String methodName) throws NoSuchMethodException {
-        return ClassExtensions.getMethod(object.getClass(), methodName, new Class[0]);
+        return ClassExtensions.getMethod(object.getClass(), methodName, _Constants.emptyClasses);
     }
 
     public static String classBaseName(final Object forObject) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetUtil.java
index c8a1845..7f1e10e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetUtil.java
@@ -24,6 +24,8 @@ import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.isis.applib.internal._Constants;
+
 import com.google.common.collect.Lists;
 
 import com.google.common.base.Predicate;
@@ -110,7 +112,7 @@ public final class FacetUtil {
      */
     @SuppressWarnings("unchecked")
     public static Class<? extends Facet>[] getFacetTypes(final Map<Class<? extends Facet>, Facet> facetsByClass) {
-        return facetsByClass.keySet().toArray(new Class[0]);
+        return facetsByClass.keySet().toArray(_Constants.emptyClasses);
     }
 
     /**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java
index 451283d..6569bc5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.facets.actions.defaults.method;
 import java.lang.reflect.Method;
 import java.util.List;
 
+import org.apache.isis.applib.internal._Constants;
 import org.apache.isis.core.commons.lang.StringExtensions;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -81,7 +82,7 @@ public class ActionDefaultsFacetViaMethodFactory extends MethodPrefixBasedFacetF
         final String name = MethodPrefixConstants.DEFAULT_PREFIX + capitalizedName;
 
         final Class<?> cls = processMethodContext.getCls();
-        return MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, name, returnType, new Class[0]);
+        return MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, name, returnType, _Constants.emptyClasses);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveMethodsFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveMethodsFacetFactory.java
index 2ec549e..b65c031 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveMethodsFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/javalang/RemoveMethodsFacetFactory.java
@@ -25,6 +25,7 @@ import java.util.List;
 
 import com.google.common.collect.Lists;
 
+import org.apache.isis.applib.internal._Constants;
 import org.apache.isis.core.commons.lang.ClassExtensions;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -114,7 +115,7 @@ public class RemoveMethodsFacetFactory extends FacetFactoryAbstract {
         }
 
         // removeInitMethod(processClassContext);
-        processClassContext.removeMethod(MethodScope.OBJECT, "init", void.class, new Class[0]);
+        processClassContext.removeMethod(MethodScope.OBJECT, "init", void.class, _Constants.emptyClasses);
     }
 
     private void removeSuperclassMethods(Class<?> type, final ProcessClassContext processClassContext) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
index da6799f..2858bd0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
@@ -26,6 +26,7 @@ import java.util.List;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 
+import org.apache.isis.applib.internal._Constants;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
@@ -87,7 +88,7 @@ public class ActionParameterAutoCompleteFacetViaMethod extends ActionParameterAu
 
         final Object collectionOrArray = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter, searchArg);
         if (collectionOrArray == null) {
-            return new Object[0];
+            return _Constants.emptyObjects;
         }
         final ObjectAdapter collectionAdapter = getAdapterManager().adapterFor(collectionOrArray);
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
index b9c97e7..1c899f5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.facets.param.choices.enums;
 
 import java.util.List;
 
+import org.apache.isis.applib.internal._Constants;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
@@ -54,7 +55,7 @@ public class ActionParameterChoicesFacetDerivedFromChoicesFacet extends ActionPa
         final ObjectSpecification noSpec = getSpecification(paramPeer.getType());
         final ChoicesFacet choicesFacet = noSpec.getFacet(ChoicesFacet.class);
         if (choicesFacet == null) {
-            return new Object[0];
+            return _Constants.emptyObjects;
         }
         return choicesFacet.getChoices(adapter, interactionInitiatedBy);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
index 274adc6..4222df7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.facets.param.choices.method;
 import java.lang.reflect.Method;
 import java.util.Collection;
 
+import org.apache.isis.applib.internal._Constants;
 import org.apache.isis.core.commons.lang.StringExtensions;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -96,7 +97,7 @@ public class ActionChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFa
         final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
 
         final String name = MethodPrefixConstants.CHOICES_PREFIX + capitalizedName;
-        choicesMethod = MethodFinderUtils.findMethod(cls, methodScope, name, returnType2, new Class[0]);
+        choicesMethod = MethodFinderUtils.findMethod(cls, methodScope, name, returnType2, _Constants.emptyClasses);
         return choicesMethod;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
index 57b2923..66d503e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
@@ -23,9 +23,7 @@ import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.List;
 
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-
+import org.apache.isis.applib.internal._Constants;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
@@ -39,6 +37,9 @@ import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoice
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
 public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoicesFacetAbstract implements ImperativeFacet {
 
     private final Method method;
@@ -80,7 +81,7 @@ public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoices
                 ObjectAdapter.InvokeUtils.invokeAutofit(
                         method, adapter, argumentsIfAvailable, getAdapterManager());
         if (choices == null) {
-            return new Object[0];
+            return _Constants.emptyObjects;
         }
         final ObjectAdapter objectAdapter = getAdapterManager().adapterFor(choices);
         final FacetedMethodParameter facetedMethodParameter = (FacetedMethodParameter) getFacetHolder();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java
index 8b0ca19..67c4ef7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacet.java
@@ -19,14 +19,15 @@
 
 package org.apache.isis.core.metamodel.facets.properties.choices.enums;
 
+import org.apache.isis.applib.internal._Constants;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
+import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacetAbstract;
 
 public class PropertyChoicesFacetDerivedFromChoicesFacet extends PropertyChoicesFacetAbstract {
 
@@ -45,7 +46,7 @@ public class PropertyChoicesFacetDerivedFromChoicesFacet extends PropertyChoices
         final ObjectSpecification noSpec = getSpecification(facetedMethod.getType());
         final ChoicesFacet choicesFacet = noSpec.getFacet(ChoicesFacet.class);
         if (choicesFacet == null) {
-            return new Object[0];
+            return _Constants.emptyObjects;
         }
         return choicesFacet.getChoices(adapter, interactionInitiatedBy);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
index aa3b0ad..4592fe9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
@@ -37,6 +37,7 @@ import org.slf4j.LoggerFactory;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.internal._Constants;
 import org.apache.isis.applib.layout.grid.Grid;
 import org.apache.isis.applib.services.grid.GridLoaderService;
 import org.apache.isis.applib.services.grid.GridSystemService;
@@ -128,7 +129,7 @@ public class GridLoaderServiceDefault implements GridLoaderService {
 
         try {
             // all known implementations of Page
-            final JAXBContext context = JAXBContext.newInstance(pageImplementations.toArray(new Class[0]));
+            final JAXBContext context = JAXBContext.newInstance(pageImplementations.toArray(_Constants.emptyClasses));
 
             final Grid grid = (Grid) jaxbService.fromXml(context, xml);
             grid.setDomainClass(domainClass);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
index 29d3e70..2d617fb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
@@ -34,6 +34,8 @@ import org.apache.isis.applib.RecoverableException;
 import org.apache.isis.applib.annotation.InvokedOn;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.internal._Constants;
+
 import com.google.common.base.Predicate;
 import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.core.commons.exceptions.UnknownTypeException;
@@ -518,7 +520,7 @@ public class ObjectActionDefault extends ObjectMemberAbstract implements ObjectA
                     parameterChoicesPojos[i] = paramFacet.getChoices(target, null,
                             interactionInitiatedBy);
                 } else {
-                    parameterChoicesPojos[i] = new Object[0];
+                    parameterChoicesPojos[i] = _Constants.emptyObjects;
                 }
             }
         }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Utils.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Utils.java
index 8708a23..8144527 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Utils.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Utils.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.facets;
 import java.lang.reflect.Method;
 import java.util.List;
 
+import org.apache.isis.applib.internal._Constants;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 
 class Utils {
@@ -59,7 +60,7 @@ class Utils {
     }
 
     protected static Method findMethod(final Class<?> type, final String methodName) {
-        return findMethod(type, methodName, new Class[0]);
+        return findMethod(type, methodName, _Constants.emptyClasses);
     }
 
 }
diff --git a/core/runtime/src/test-archived/org.nakedobjects.nof.reflect.remote.spec/DummyAction.java b/core/runtime/src/test-archived/org.nakedobjects.nof.reflect.remote.spec/DummyAction.java
index 79f2c2c..886383a 100644
--- a/core/runtime/src/test-archived/org.nakedobjects.nof.reflect.remote.spec/DummyAction.java
+++ b/core/runtime/src/test-archived/org.nakedobjects.nof.reflect.remote.spec/DummyAction.java
@@ -23,6 +23,7 @@ package org.apache.isis.nof.reflect.remote.spec;
 import org.apache.isis.noa.adapter.ObjectAdapter;
 import org.apache.isis.noa.adapter.ObjectAdapterReference;
 import org.apache.isis.noa.facets.Facet;
+import org.apache.isis.applib.internal._Constants;
 import org.apache.isis.metamodel.facets.actions.debug.DebugFacet;
 import org.apache.isis.metamodel.facets.actions.executed.ExecutedFacet;
 import org.apache.isis.metamodel.facets.actions.exploration.ExplorationFacet;
@@ -78,7 +79,7 @@ public class DummyAction implements ObjectAction {
 	}
 
 	public Class[] getFacetTypes() {
-		return new Class[0];
+		return _Constants.emptyClasses;
 	}
 	
 	public Facet[] getFacets(Facet.Filter filter) {

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

[isis] 05/10: ISIS-1841 replace uses of deprecated Nullable with Java's Optional

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 3b9aded419530572499770ae854377e23b976d05
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jan 23 09:41:45 2018 +0100

    ISIS-1841 replace uses of deprecated Nullable with Java's Optional
---
 .../isis/core/metamodel/facetapi/FacetUtil.java    |  8 ++++---
 .../core/metamodel/facets/MethodFinderUtils.java   | 16 ++++++-------
 .../DomainObjectAnnotationFacetFactory.java        |  8 +++----
 .../recreatable/RecreatableObjectFacetFactory.java |  8 +++----
 .../metamodel/facets/MethodFinderUtilsTest.java    | 27 +++++++++++-----------
 5 files changed, 34 insertions(+), 33 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetUtil.java
index 7f1e10e..bf8b727 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetUtil.java
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.isis.applib.internal._Constants;
+import org.apache.isis.applib.internal.base._Casts;
 
 import com.google.common.collect.Lists;
 
@@ -110,9 +111,9 @@ public final class FacetUtil {
      * Bit nasty, for use only by {@link FacetHolder}s that index their
      * {@link Facet}s in a Map.
      */
-    @SuppressWarnings("unchecked")
     public static Class<? extends Facet>[] getFacetTypes(final Map<Class<? extends Facet>, Facet> facetsByClass) {
-        return facetsByClass.keySet().toArray(_Constants.emptyClasses);
+        return _Casts.uncheckedCast(
+        		facetsByClass.keySet().toArray(_Constants.emptyClasses)	);
     }
 
     /**
@@ -169,7 +170,8 @@ public final class FacetUtil {
     public static void copyFacets(final FacetHolder source, final FacetHolder target) {
         final Class<? extends Facet>[] facetTypes = source.getFacetTypes();
         for (Class<? extends Facet> facetType : facetTypes) {
-            final Facet facet = source.getFacet(facetType);
+            //TODO [ahuber] unused because of expected side effects?
+			final Facet facet = source.getFacet(facetType);
 
         }
         List<Facet> facets = source.getFacets(com.google.common.base.Predicates.<Facet>alwaysTrue());
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java
index 144ffc2..2109995 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java
@@ -22,8 +22,8 @@ import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
-import org.apache.isis.core.commons.lang.Nullable;
 import org.apache.isis.core.metamodel.facetapi.MethodRemover;
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 
@@ -202,28 +202,28 @@ public final class MethodFinderUtils {
     public static Method findAnnotatedMethod(
             final Object pojo,
             final Class<? extends Annotation> annotationClass,
-            final Map<Class, Nullable<Method>> methods) {
+            final Map<Class, Optional<Method>> methods) {
 
         final Class<?> clz = pojo.getClass();
-        Nullable<Method> nullableMethod = methods.get(clz);
+        Optional<Method> nullableMethod = methods.get(clz);
         if(nullableMethod == null) {
             nullableMethod = search(clz, annotationClass, methods);
         }
-        return nullableMethod.value();
+        return nullableMethod.orElse(null);
     }
 
-    private static Nullable<Method> search(
+    private static Optional<Method> search(
             final Class<?> clz,
             final Class<? extends Annotation> annotationClass,
-            final Map<Class, Nullable<Method>> postConstructMethods) {
+            final Map<Class, Optional<Method>> postConstructMethods) {
 
         final Method[] methods = clz.getMethods();
 
-        Nullable<Method> nullableMethod = Nullable.none();
+        Optional<Method> nullableMethod = Optional.empty();
         for (final Method method : methods) {
             final Annotation annotation = method.getAnnotation(annotationClass);
             if(annotation != null) {
-                nullableMethod = Nullable.some(method);
+                nullableMethod = Optional.of(method);
                 break;
             }
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index a6c387f..3408427 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -21,12 +21,11 @@ package org.apache.isis.core.metamodel.facets.object.domainobject;
 import java.lang.reflect.Method;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 import javax.annotation.PostConstruct;
 
-import com.google.common.collect.Maps;
-
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.services.HasTransactionId;
@@ -38,7 +37,6 @@ import org.apache.isis.applib.services.eventbus.ObjectRemovingEvent;
 import org.apache.isis.applib.services.eventbus.ObjectUpdatedEvent;
 import org.apache.isis.applib.services.eventbus.ObjectUpdatingEvent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.lang.Nullable;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
@@ -82,6 +80,8 @@ import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
 import org.apache.isis.core.metamodel.util.EventUtil;
 import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
 
+import com.google.common.collect.Maps;
+
 
 public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
         implements MetaModelValidatorRefiner, PostConstructMethodCache {
@@ -522,7 +522,7 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
 
     // //////////////////////////////////////
 
-    private final Map<Class, Nullable<Method>> postConstructMethods = Maps.newHashMap();
+    private final Map<Class, Optional<Method>> postConstructMethods = Maps.newHashMap();
 
     public Method postConstructMethodFor(final Object pojo) {
         return MethodFinderUtils.findAnnotatedMethod(pojo, PostConstruct.class, postConstructMethods);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
index 99f491c..ea70a9a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
@@ -21,16 +21,14 @@ package org.apache.isis.core.metamodel.facets.object.recreatable;
 
 import java.lang.reflect.Method;
 import java.util.Map;
+import java.util.Optional;
 
 import javax.annotation.PostConstruct;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import com.google.common.collect.Maps;
-
 import org.apache.isis.applib.RecreatableDomainObject;
 import org.apache.isis.applib.ViewModel;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.lang.Nullable;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
@@ -48,6 +46,8 @@ import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorCom
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting;
 import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
 
+import com.google.common.collect.Maps;
+
 public class RecreatableObjectFacetFactory extends FacetFactoryAbstract
         implements MetaModelValidatorRefiner, PostConstructMethodCache {
 
@@ -125,7 +125,7 @@ public class RecreatableObjectFacetFactory extends FacetFactoryAbstract
 
     // //////////////////////////////////////
 
-    private final Map<Class, Nullable<Method>> postConstructMethods = Maps.newHashMap();
+    private final Map<Class, Optional<Method>> postConstructMethods = Maps.newHashMap();
 
     public Method postConstructMethodFor(final Object pojo) {
         return MethodFinderUtils.findAnnotatedMethod(pojo, PostConstruct.class, postConstructMethods);
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/MethodFinderUtilsTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/MethodFinderUtilsTest.java
index b2a8ed6..044339d 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/MethodFinderUtilsTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/MethodFinderUtilsTest.java
@@ -16,21 +16,20 @@
  */
 package org.apache.isis.core.metamodel.facets;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
 import java.lang.reflect.Method;
 import java.util.Map;
+import java.util.Optional;
 
 import javax.annotation.PostConstruct;
 
-import com.google.common.collect.Maps;
-
 import org.junit.Test;
 
-import org.apache.isis.core.commons.lang.Nullable;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.junit.Assert.assertThat;
+import com.google.common.collect.Maps;
 
 public class MethodFinderUtilsTest {
 
@@ -45,27 +44,27 @@ public class MethodFinderUtilsTest {
     @Test
     public void whenExists() throws Exception {
 
-        final Map<Class, Nullable<Method>> cache = Maps.newHashMap();
+        final Map<Class, Optional<Method>> cache = Maps.newHashMap();
         final Method method = MethodFinderUtils.findAnnotatedMethod(new WithPostConstruct(), PostConstruct.class, cache);
 
         assertThat(method, is(not(nullValue())));
-        final Nullable<Method> actual = cache.get(WithPostConstruct.class);
+        final Optional<Method> actual = cache.get(WithPostConstruct.class);
         assertThat(actual, is(not(nullValue())));
         assertThat(actual.isPresent(), is(true));
-        assertThat(actual.value(), is(method));
+        assertThat(actual.orElse(null), is(method));
     }
 
     @Test
     public void whenDoesNotExist() throws Exception {
 
-        final Map<Class, Nullable<Method>> cache = Maps.newHashMap();
+        final Map<Class, Optional<Method>> cache = Maps.newHashMap();
         final Method method = MethodFinderUtils.findAnnotatedMethod(new NoPostConstruct(), PostConstruct.class, cache);
 
         assertThat(method, is(nullValue()));
-        final Nullable<Method> actual = cache.get(NoPostConstruct.class);
+        final Optional<Method> actual = cache.get(NoPostConstruct.class);
         assertThat(actual, is(not(nullValue())));
         assertThat(actual.isPresent(), is(false));
-        assertThat(actual.value(), is(nullValue()));
+        assertThat(actual.orElse(null), is(nullValue()));
     }
 
 }
\ No newline at end of file

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