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/09/13 18:38:43 UTC
[isis] 04/04: ISIS-1976: removing guava Function idioms from MM
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch ISIS-1976-rethink-object-adapters
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 00e9e00de1606ba8b4b7b20a5107d1acb7176680
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 13 20:36:39 2018 +0200
ISIS-1976: removing guava Function idioms from MM
Task-Url: https://issues.apache.org/jira/browse/ISIS-1976
---
.../java/org/apache/isis/applib/util/ToString.java | 42 +++++-
.../isis/core/commons/lang/ClassFunctions.java | 2 +-
.../isis/core/commons/lang/ListExtensions.java | 2 +-
.../core/metamodel/facets/DomainEventHelper.java | 15 ++-
.../ignore/javalang/RemoveMethodsFacetFactory.java | 12 +-
.../annotation/TitleAnnotationFacetFactory.java | 4 +-
.../annotation/TitleFacetViaTitleAnnotation.java | 11 +-
.../core/metamodel/facets/value/JodaFunctions.java | 2 +-
.../value/datejodalocal/JodaLocalDateUtil.java | 5 +-
.../datetimejodalocal/JodaLocalDateTimeUtil.java | 5 +-
.../core/metamodel/services/ServicesInjector.java | 8 ++
.../services/appfeat/ApplicationFeatureId.java | 143 ++++++++-------------
.../services/swagger/internal/Generation.java | 9 +-
.../swagger/internal/ValuePropertyFactory.java | 21 ++-
.../spec/feature/ObjectActionParameter.java | 18 +--
.../metamodel/specloader/SpecificationLoader.java | 22 +---
.../MetaModelValidatorToCheckModuleExtent.java | 24 ++--
.../TitleFacetViaTitleAnnotationTest.java | 7 +-
.../services/appfeat/ApplicationFeatureIdTest.java | 3 +-
.../IsisComponentProvider.java | 3 +-
20 files changed, 175 insertions(+), 183 deletions(-)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/util/ToString.java b/core/applib/src/main/java/org/apache/isis/applib/util/ToString.java
index 418d8f8..ce1a9fa 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/util/ToString.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/util/ToString.java
@@ -16,7 +16,7 @@
*/
package org.apache.isis.applib.util;
-import java.util.Iterator;
+import java.util.BitSet;
import java.util.List;
import java.util.Objects;
import java.util.function.Function;
@@ -36,13 +36,21 @@ public class ToString<T> {
public static <T> ToString<T> toString(String name, Function<? super T, ?> getter) {
Objects.requireNonNull(name);
Objects.requireNonNull(getter);
- return new ToString<>(name, getter);
+ return new ToString<>(name, getter, false);
+ }
+
+ public static <T> ToString<T> toStringOmmitIfAbsent(String name, Function<? super T, ?> getter) {
+ Objects.requireNonNull(name);
+ Objects.requireNonNull(getter);
+ return new ToString<>(name, getter, true);
}
private final List<String> names = _Lists.newArrayList();
private final List<Function<? super T, ?>> getters = _Lists.newArrayList();
+ private final BitSet ommitIfAbsent = new BitSet();
- private ToString(String name, Function<? super T, ?> getter) {
+ private ToString(String name, Function<? super T, ?> getter, boolean ommitIfAbsent) {
+ addBit(ommitIfAbsent);
names.add(name);
getters.add(getter);
}
@@ -50,6 +58,16 @@ public class ToString<T> {
public ToString<T> thenToString(String name, Function<? super T, ?> getter){
Objects.requireNonNull(name);
Objects.requireNonNull(getter);
+ addBit(false);
+ names.add(name);
+ getters.add(getter);
+ return this;
+ }
+
+ public ToString<T> thenToStringOmmitIfAbsent(String name, Function<? super T, ?> getter){
+ Objects.requireNonNull(name);
+ Objects.requireNonNull(getter);
+ addBit(true);
names.add(name);
getters.add(getter);
return this;
@@ -71,19 +89,33 @@ public class ToString<T> {
Objects.requireNonNull(valueToStringFunction);
- final Iterator<String> nameIterator = names.iterator();
+ final int[] index = {-1}; // value reference
return String.format("%s{%s}",
+ //ommitIfAbsent.toString(),
target.getClass().getSimpleName(),
getters.stream()
+ .peek(__->index[0]++)
.map(getter->getter.apply(target))
+ .filter(value->value!=null || !ommitIfAbsent.get(index[0]))
.map(valueToStringFunction)
- .map(valueLiteral->nameIterator.next()+"="+valueLiteral)
+ .map(valueLiteral->names.get(index[0])+"="+valueLiteral)
.collect(Collectors.joining(", "))
);
}
+
+ // -- HELPER
+
+ private void addBit(boolean bit) {
+ final int index = names.size();
+ if(bit) {
+ ommitIfAbsent.set(index);
+ } else {
+ ommitIfAbsent.clear(index);
+ }
+ }
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ClassFunctions.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ClassFunctions.java
index 1b3148d..eedf06d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ClassFunctions.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ClassFunctions.java
@@ -20,7 +20,7 @@ package org.apache.isis.core.commons.lang;
import javax.annotation.Nullable;
-import com.google.common.base.Function;
+import java.util.function.Function;
public final class ClassFunctions {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ListExtensions.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ListExtensions.java
index 8c34ed7..1957741 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ListExtensions.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ListExtensions.java
@@ -101,7 +101,7 @@ public final class ListExtensions {
public static <T> Collection<T> filtered(final List<Object> extendee, final Class<T> type) {
return Collections2.transform(
Collections2.filter(extendee, ClassPredicates.isOfType(type)::test),
- ClassFunctions.castTo(type));
+ ClassFunctions.castTo(type)::apply);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
index 61c6bf5..4581989 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
@@ -24,6 +24,7 @@ import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.stream.Collectors;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
@@ -88,8 +89,18 @@ public class DomainEventHelper {
event.setActionSemantics(objectAction.getSemantics());
final List<ObjectActionParameter> parameters = objectAction.getParameters();
- event.setParameterNames(immutableList(Iterables.transform(parameters, ObjectActionParameter.Functions.GET_NAME)));
- event.setParameterTypes(immutableList(Iterables.transform(parameters, ObjectActionParameter.Functions.GET_TYPE)));
+
+ final List<String> parameterNames = parameters.stream()
+ .map(ObjectActionParameter.Functions.GET_NAME)
+ .collect(Collectors.toList());
+
+ final List<Class<?>> parameterTypes = parameters.stream()
+ .map(ObjectActionParameter.Functions.GET_TYPE)
+ .collect(Collectors.toList());
+
+
+ event.setParameterNames(Collections.unmodifiableList(parameterNames));
+ event.setParameterTypes(Collections.unmodifiableList(parameterTypes));
}
}
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 6378b72..eb9287a 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
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.ignore.javalang;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.List;
+import java.util.stream.Stream;
import com.google.common.collect.Lists;
@@ -94,18 +95,17 @@ public class RemoveMethodsFacetFactory extends FacetFactoryAbstract {
}
- final List<Class<?>> serviceClasses = getSpecificationLoader().allServiceClasses();
- for (Class<? extends Object> serviceClass : serviceClasses) {
-
- // removeInjectMethods(processClassContext);
+ getSpecificationLoader().streamServiceClasses()
+ .forEach(serviceClass->{
+ // removeInjectMethods(processClassContext);
Method[] methods2 = processClassContext.getCls().getMethods();
for (Method method : methods2) {
if(injectorMethodEvaluator.isInjectorMethodFor(method, serviceClass)) {
processClassContext.removeMethod(method);
}
}
- }
-
+ });
+
removeSuperclassMethods(processClassContext.getCls(), processClassContext);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
index 9e6ae7f..21c0259 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
@@ -28,6 +28,7 @@ import com.google.common.base.Splitter;
import com.google.common.collect.Lists;
import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -69,7 +70,8 @@ public class TitleAnnotationFacetFactory extends FacetFactoryAbstract implements
}
sort(evaluators);
- final List<TitleFacetViaTitleAnnotation.TitleComponent> titleComponents = Lists.transform(evaluators, TitleFacetViaTitleAnnotation.TitleComponent.FROM_EVALUATORS);
+ final List<TitleFacetViaTitleAnnotation.TitleComponent> titleComponents =
+ _Lists.transform(evaluators, TitleFacetViaTitleAnnotation.TitleComponent.FROM_EVALUATORS);
FacetUtil.addFacet(new TitleFacetViaTitleAnnotation(titleComponents, facetHolder, adapterProvider));
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
index 7efd7e8..ae4e5d9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
@@ -20,8 +20,8 @@
package org.apache.isis.core.metamodel.facets.object.title.annotation;
import java.util.List;
+import java.util.function.Function;
-import com.google.common.base.Function;
import com.google.common.base.Objects;
import com.google.common.base.Strings;
@@ -42,13 +42,8 @@ public class TitleFacetViaTitleAnnotation extends TitleFacetAbstract {
private final ObjectAdapterProvider adapterProvider;
public static class TitleComponent {
- public static final Function<? super Annotations.Evaluator<Title>, ? extends TitleComponent> FROM_EVALUATORS = new Function<Annotations.Evaluator<Title>, TitleComponent>() {
- @Override
- public TitleComponent apply(final Annotations.Evaluator<Title> titleEvaluator) {
- return TitleComponent.of(titleEvaluator);
- }
- };
-
+ public static final Function<Annotations.Evaluator<Title>, TitleComponent> FROM_EVALUATORS =
+ titleEvaluator -> TitleComponent.of(titleEvaluator);
private final String prepend;
private final String append;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/JodaFunctions.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/JodaFunctions.java
index c6e0869..62b5002 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/JodaFunctions.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/JodaFunctions.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.value;
import java.util.Locale;
-import com.google.common.base.Function;
+import java.util.function.Function;
import org.joda.time.format.DateTimeFormatter;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateUtil.java
index 84ee785..e8dad69 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateUtil.java
@@ -23,11 +23,10 @@ import java.util.List;
import java.util.Locale;
import java.util.StringTokenizer;
-import com.google.common.collect.Iterables;
-
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormatter;
+import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.core.metamodel.facets.object.parseable.TextEntryParseException;
import org.apache.isis.core.metamodel.facets.value.JodaFunctions;
@@ -40,7 +39,7 @@ public final class JodaLocalDateUtil {
List<DateTimeFormatter> parseFormatters) {
final Locale locale = Locale.getDefault();
- Iterable<DateTimeFormatter> elements = Iterables.transform(parseFormatters, JodaFunctions.withLocale(locale));
+ Iterable<DateTimeFormatter> elements = _Lists.transform(parseFormatters, JodaFunctions.withLocale(locale));
LocalDate parsedDate = parseDate(dateStr, elements);
return parsedDate;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeUtil.java
index f6d6400..633807e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeUtil.java
@@ -23,11 +23,10 @@ import java.util.List;
import java.util.Locale;
import java.util.StringTokenizer;
-import com.google.common.collect.Iterables;
-
import org.joda.time.LocalDateTime;
import org.joda.time.format.DateTimeFormatter;
+import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.core.metamodel.facets.object.parseable.TextEntryParseException;
import org.apache.isis.core.metamodel.facets.value.JodaFunctions;
@@ -40,7 +39,7 @@ public final class JodaLocalDateTimeUtil {
List<DateTimeFormatter> parseFormatters) {
final Locale locale = Locale.getDefault();
- Iterable<DateTimeFormatter> elements = Iterables.transform(parseFormatters, JodaFunctions.withLocale(locale));
+ Iterable<DateTimeFormatter> elements = _Lists.transform(parseFormatters, JodaFunctions.withLocale(locale));
return parseDateTime(dateStr, elements);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
index 444211e..bac0712 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
@@ -215,6 +215,14 @@ public class ServicesInjector implements ApplicationScopedComponent {
}
/**
+ * @return Stream of all currently registered service types.
+ */
+ public Stream<Class<?>> streamRegisteredServiceTypes() {
+ return serviceByConcreteType.get().keySet().stream();
+ }
+
+
+ /**
* @return Stream of all currently registered service instances.
*/
public Stream<Object> streamRegisteredServiceInstances() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java
index 5ef0bb0..2304b55 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java
@@ -18,30 +18,33 @@
*/
package org.apache.isis.core.metamodel.services.appfeat;
+import static java.util.Comparator.comparing;
+import static java.util.Comparator.naturalOrder;
+import static java.util.Comparator.nullsFirst;
+
import java.io.Serializable;
import java.nio.charset.Charset;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
-
-import javax.annotation.Nullable;
-
-import com.google.common.base.Joiner;
-import com.google.common.base.Objects;
-
import java.util.function.Function;
import java.util.function.Predicate;
+
+import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Ordering;
import com.google.common.io.BaseEncoding;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.annotation.Value;
import org.apache.isis.applib.services.appfeat.ApplicationMemberType;
+import org.apache.isis.applib.util.Equality;
+import org.apache.isis.applib.util.Hashing;
+import org.apache.isis.applib.util.ObjectContracts;
import org.apache.isis.applib.util.TitleBuffer;
+import org.apache.isis.applib.util.ToString;
+import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
/**
@@ -58,6 +61,8 @@ public class ApplicationFeatureId implements Comparable<ApplicationFeatureId>, S
// //////////////////////////////////////
+ private static final long serialVersionUID = 1L;
+
// -- factory methods
public static ApplicationFeatureId newFeature(final ApplicationFeatureType featureType, final String fullyQualifiedName) {
switch (featureType) {
@@ -278,7 +283,7 @@ public class ApplicationFeatureId implements Comparable<ApplicationFeatureId>, S
}
final Iterable<String> split = Splitter.on(".").split(packageName);
- final List<String> parts = Lists.newArrayList(split); // eg [aaa,bbb,ccc]
+ final List<String> parts = _Lists.newArrayList(split); // eg [aaa,bbb,ccc]
parts.remove(parts.size()-1); // remove last, eg [aaa,bbb]
final String parentPackageName = Joiner.on(".").join(parts); // eg aaa.bbb
@@ -388,6 +393,7 @@ public class ApplicationFeatureId implements Comparable<ApplicationFeatureId>, S
}
static class ApplicationFeatureIdComparator implements Comparator<ApplicationFeatureId>, Serializable {
+ private static final long serialVersionUID = 1L;
@Override
public int compare(final ApplicationFeatureId o1, final ApplicationFeatureId o2) {
@@ -416,7 +422,7 @@ public class ApplicationFeatureId implements Comparable<ApplicationFeatureId>, S
}
private static List<ApplicationFeatureId> pathIds(final ApplicationFeatureId id) {
- final List<ApplicationFeatureId> featureIds = Lists.newArrayList();
+ final List<ApplicationFeatureId> featureIds = _Lists.newArrayList();
return Collections.unmodifiableList(appendParents(id, featureIds));
}
@@ -433,101 +439,58 @@ public class ApplicationFeatureId implements Comparable<ApplicationFeatureId>, S
// -- equals, hashCode, compareTo, toString
- private final static Ordering<ApplicationFeatureId> byType = Ordering.natural()
- .nullsFirst().onResultOf(new com.google.common.base.Function<ApplicationFeatureId, ApplicationFeatureType>() {
- @Nullable @Override public ApplicationFeatureType apply(@Nullable final ApplicationFeatureId input) {
- return input != null ? input.getType() : null;
- }
- });
- private final static Ordering<ApplicationFeatureId> byPackageName = Ordering.natural()
- .nullsFirst().onResultOf(new com.google.common.base.Function<ApplicationFeatureId, String>() {
- @Nullable @Override public String apply(@Nullable final ApplicationFeatureId input) {
- return input != null ? input.getPackageName() : null;
- }
- });
- private final static Ordering<ApplicationFeatureId> byClassName = Ordering.natural()
- .nullsFirst().onResultOf(new com.google.common.base.Function<ApplicationFeatureId, String>() {
- @Nullable @Override public String apply(@Nullable final ApplicationFeatureId input) {
- return input != null ? input.getClassName(): null;
- }
- });
- private final static Ordering<ApplicationFeatureId> byMemberName = Ordering.natural()
- .nullsFirst().onResultOf(new com.google.common.base.Function<ApplicationFeatureId, String>() {
- @Nullable @Override public String apply(@Nullable final ApplicationFeatureId input) {
- return input != null ? input.getMemberName() : null;
- }
- });
- private final static Ordering<ApplicationFeatureId> applicationFeatureIdOrdering =
- byType
- .compound(byPackageName)
- .compound(byClassName)
- .compound(byMemberName)
- .nullsFirst();
-
-
+ private final static Comparator<ApplicationFeatureId> byType =
+ comparing(ApplicationFeatureId::getType, nullsFirst(naturalOrder()));
+ private final static Comparator<ApplicationFeatureId> byPackageName =
+ comparing(ApplicationFeatureId::getPackageName, nullsFirst(naturalOrder()));
+ private final static Comparator<ApplicationFeatureId> byClassName =
+ comparing(ApplicationFeatureId::getClassName, nullsFirst(naturalOrder()));
+ private final static Comparator<ApplicationFeatureId> byMemberName =
+ comparing(ApplicationFeatureId::getMemberName, nullsFirst(naturalOrder()));
+
+ private final static Comparator<ApplicationFeatureId> applicationFeatureIdOrdering =
+ Comparator.nullsFirst(byType)
+ .thenComparing(byPackageName)
+ .thenComparing(byClassName)
+ .thenComparing(byMemberName);
+
+ private final static Equality<ApplicationFeatureId> equality =
+ ObjectContracts.checkEquals(ApplicationFeatureId::getType)
+ .thenCheckEquals(ApplicationFeatureId::getPackageName)
+ .thenCheckEquals(ApplicationFeatureId::getClassName)
+ .thenCheckEquals(ApplicationFeatureId::getMemberName);
+
+ private final static Hashing<ApplicationFeatureId> hashing =
+ ObjectContracts.hashing(ApplicationFeatureId::getType)
+ .thenHashing(ApplicationFeatureId::getPackageName)
+ .thenHashing(ApplicationFeatureId::getClassName)
+ .thenHashing(ApplicationFeatureId::getMemberName);
+
+ private final static ToString<ApplicationFeatureId> toString =
+ ObjectContracts.toString("type", ApplicationFeatureId::getType)
+ .thenToString("packageName", ApplicationFeatureId::getPackageName)
+ .thenToStringOmmitIfAbsent("className", ApplicationFeatureId::getClassName)
+ .thenToStringOmmitIfAbsent("memberName", ApplicationFeatureId::getMemberName);
+
+
@Override
public int compareTo(final ApplicationFeatureId other) {
-
- // https://issues.apache.org/jira/browse/ISIS-1590
- // not using our ObjectContracts helper for efficiency.
-
return applicationFeatureIdOrdering.compare(this, other);
}
@Override
public boolean equals(final Object o) {
-
- // https://issues.apache.org/jira/browse/ISIS-1590
- // not using our ObjectContracts helper for efficiency.
-
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- final ApplicationFeatureId that = (ApplicationFeatureId) o;
-
- if (className != null ? !className.equals(that.className) : that.className != null) return false;
- if (memberName != null ? !memberName.equals(that.memberName) : that.memberName != null) return false;
- if (packageName != null ? !packageName.equals(that.packageName) : that.packageName != null) return false;
- return type == that.type;
+ return equality.equals(this, o);
}
@Override
public int hashCode() {
-
- // https://issues.apache.org/jira/browse/ISIS-1590
- // not using our ObjectContracts helper for efficiency.
-
- int result = type != null ? type.hashCode() : 0;
- result = 31 * result + (packageName != null ? packageName.hashCode() : 0);
- result = 31 * result + (className != null ? className.hashCode() : 0);
- result = 31 * result + (memberName != null ? memberName.hashCode() : 0);
- return result;
+ return hashing.hashCode(this);
}
@Override
public String toString() {
-
- // https://issues.apache.org/jira/browse/ISIS-1590
- // not using our ObjectContracts helper for efficiency.
-
- final Objects.ToStringHelper stringHelper = Objects.toStringHelper(this);
- switch (type) {
- case PACKAGE:
- stringHelper.add("type", getType());
- stringHelper.add("packageName", getPackageName());
- return stringHelper.toString();
- case CLASS:
- stringHelper.add("type", getType());
- stringHelper.add("packageName", getPackageName());
- stringHelper.add("className", getClassName());
- return stringHelper.toString();
- case MEMBER:
- stringHelper.add("type", getType());
- stringHelper.add("packageName", getPackageName());
- stringHelper.add("memberName", getMemberName());
- return stringHelper.toString();
- }
- throw new IllegalStateException("Unknown feature type " + type);
+ return toString.toString(this);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/Generation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/Generation.java
index c68f0c3..7a93ed9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/Generation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/Generation.java
@@ -27,7 +27,7 @@ import java.util.stream.Collectors;
import javax.annotation.Nullable;
-import com.google.common.base.Function;
+import java.util.function.Function;
import com.google.common.base.Joiner;
import com.google.common.base.Strings;
import com.google.common.collect.FluentIterable;
@@ -177,11 +177,8 @@ class Generation {
@SuppressWarnings("unused")
private void debugAllLoadedClasses(final Collection<ObjectSpecification> allSpecs) {
final ImmutableList<String> specs = FluentIterable.from(allSpecs)
- .transform(new Function<ObjectSpecification, String>() {
- @Nullable @Override public String apply(@Nullable final ObjectSpecification objectSpecification) {
- return objectSpecification.getCorrespondingClass().getName();
- }
- })
+ .transform((final ObjectSpecification objectSpecification)->
+ objectSpecification.getCorrespondingClass().getName())
.toSortedList(Ordering.natural());
final String all = Joiner.on(",").join(specs);
System.out.println(all);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/ValuePropertyFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/ValuePropertyFactory.java
index 5537ef0..26909f3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/ValuePropertyFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/ValuePropertyFactory.java
@@ -25,20 +25,21 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
+import java.util.function.Function;
import java.util.function.Supplier;
import javax.annotation.Nullable;
-import org.apache.isis.commons.internal.context._Plugin;
-import org.apache.isis.core.metamodel.services.swagger.internal.ValuePropertyPlugin.ValuePropertyCollector;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.joda.time.LocalDateTime;
-import com.google.common.base.Function;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
+import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.commons.internal.context._Plugin;
+import org.apache.isis.core.metamodel.services.swagger.internal.ValuePropertyPlugin.ValuePropertyCollector;
import io.swagger.models.properties.BooleanProperty;
import io.swagger.models.properties.ByteArrayProperty;
@@ -121,12 +122,8 @@ public class ValuePropertyFactory {
final StringProperty property = new StringProperty();
final Object[] enumConstants = cls.getEnumConstants();
- final List<String> enumNames = Lists.newArrayList(
- Iterables.transform(Arrays.asList(enumConstants), new Function<Object, String>() {
- @Nullable @Override public String apply(@Nullable final Object input) {
- return ((Enum<?>)input).name();
- }
- }));
+ final List<String> enumNames = _Lists.transform(
+ Arrays.asList(enumConstants), input->((Enum<?>)input).name());
property.setEnum(enumNames);
return property;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
index d137cd0..103ac37 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
import org.apache.isis.core.metamodel.interactions.ActionArgValidityContext;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import com.google.common.base.Function;
+import java.util.function.Function;
import java.util.function.Predicate;
/**
@@ -130,16 +130,12 @@ public interface ObjectActionParameter extends ObjectFeature, CurrentHolder {
public static class Functions {
- public static final Function<ObjectActionParameter, String> GET_NAME = new Function<ObjectActionParameter, String>() {
- @Override public String apply(final ObjectActionParameter input) {
- return input.getName();
- }
- };
- public static final Function<ObjectActionParameter, Class<?>> GET_TYPE = new Function<ObjectActionParameter, Class<?>>() {
- @Override public Class<?> apply(final ObjectActionParameter input) {
- return input.getSpecification().getCorrespondingClass();
- }
- };
+ public static final Function<ObjectActionParameter, String> GET_NAME =
+ ObjectActionParameter::getName;
+
+ public static final Function<ObjectActionParameter, Class<?>> GET_TYPE =
+ (final ObjectActionParameter input) ->
+ input.getSpecification().getCorrespondingClass();
private Functions(){}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index a8d2cda..c2a9cce 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -17,12 +17,11 @@
package org.apache.isis.core.metamodel.specloader;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Stream;
-import com.google.common.base.Function;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@@ -147,12 +146,13 @@ public class SpecificationLoader implements ApplicationScopedComponent {
}
private void loadSpecificationsForServices() {
- for (final Class<?> serviceClass : allServiceClasses()) {
+ streamServiceClasses()
+ .forEach(serviceClass->{
final DomainService domainService = serviceClass.getAnnotation(DomainService.class);
final NatureOfService nature = domainService != null ? domainService.nature() : NatureOfService.DOMAIN;
// will 'markAsService'
- internalLoadSpecification(serviceClass, nature);
- }
+ internalLoadSpecification(serviceClass, nature);
+ });
}
private void loadSpecificationsForMixins() {
@@ -474,16 +474,8 @@ public class SpecificationLoader implements ApplicationScopedComponent {
// -- getServiceClasses, isServiceClass
@Programmatic
- public List<Class<?>> allServiceClasses() {
- List<Class<?>> serviceClasses = Lists
- .transform(this.servicesInjector.getRegisteredServices(), new Function<Object, Class<?>>(){
- @Override
- public Class<?> apply(Object o) {
- return o.getClass();
- }
- });
- // take a copy, to allow eg I18nFacetFactory to add in default implementations of missing services.
- return Collections.unmodifiableList(Lists.newArrayList(serviceClasses));
+ public Stream<Class<?>> streamServiceClasses() {
+ return servicesInjector.streamRegisteredServiceTypes();
}
@Programmatic
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorToCheckModuleExtent.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorToCheckModuleExtent.java
index dab5ff6..962412b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorToCheckModuleExtent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorToCheckModuleExtent.java
@@ -18,11 +18,15 @@
*/
package org.apache.isis.core.metamodel.specloader.validator;
+import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import com.google.common.base.Function;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
import com.google.common.base.Joiner;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableList;
@@ -111,7 +115,7 @@ public class MetaModelValidatorToCheckModuleExtent extends MetaModelValidatorCom
return;
}
- ImmutableList<String> modulePackageNames = modulePackageNamesFrom(appManifest);
+ final Set<String> modulePackageNames = modulePackageNamesFrom(appManifest);
final Set<String> domainObjectPackageNames = domainObjectClassNamesByPackage.keySet();
for (final String pkg : domainObjectPackageNames) {
@@ -127,18 +131,14 @@ public class MetaModelValidatorToCheckModuleExtent extends MetaModelValidatorCom
}
}
- private ImmutableList<String> modulePackageNamesFrom(final AppManifest appManifest) {
- List<Class<?>> modules = appManifest.getModules();
- return FluentIterable.from(modules)
- .transform(new Function<Class<?>, String>() {
- @Override
- public String apply(final Class<?> aClass) {
- return aClass.getPackage().getName();
- }
- }).toList();
+ private Set<String> modulePackageNamesFrom(final AppManifest appManifest) {
+ final List<Class<?>> modules = appManifest.getModules();
+ return modules.stream()
+ .map(aClass->aClass.getPackage().getName())
+ .collect(Collectors.toCollection(HashSet::new));
}
- private boolean isWithinSomeModule(final ImmutableList<String> modulePackageNames, final String pkg) {
+ private boolean isWithinSomeModule(final Set<String> modulePackageNames, final String pkg) {
for (final String modulePackageName : modulePackageNames) {
if(pkg.startsWith(modulePackageName)) {
return true;
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java
index c00a0e7..5a80443 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java
@@ -24,8 +24,6 @@ import static org.junit.Assert.assertThat;
import java.util.List;
-import com.google.common.collect.Lists;
-
import org.jmock.Expectations;
import org.jmock.Sequence;
import org.jmock.auto.Mock;
@@ -33,6 +31,7 @@ import org.junit.Rule;
import org.junit.Test;
import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -92,7 +91,7 @@ public class TitleFacetViaTitleAnnotationTest {
TitleAnnotationFacetFactory.sort(evaluatorList);
- final List<TitleComponent> components = Lists.transform(evaluatorList, TitleComponent.FROM_EVALUATORS);
+ final List<TitleComponent> components = _Lists.transform(evaluatorList, TitleComponent.FROM_EVALUATORS);
final TitleFacetViaTitleAnnotation facet = new TitleFacetViaTitleAnnotation(components, mockFacetHolder, mockAdapterManager);
final NormalDomainObject normalPojo = new NormalDomainObject();
final Sequence sequence = context.sequence("in-title-element-order");
@@ -122,7 +121,7 @@ public class TitleFacetViaTitleAnnotationTest {
final List<Annotations.Evaluator<Title>> evaluators = Annotations
.getEvaluators(DomainObjectWithProblemInItsAnnotatedTitleMethod.class, Title.class);
- final List<TitleComponent> components = Lists.transform(evaluators, TitleComponent.FROM_EVALUATORS);
+ final List<TitleComponent> components = _Lists.transform(evaluators, TitleComponent.FROM_EVALUATORS);
final TitleFacetViaTitleAnnotation facet = new TitleFacetViaTitleAnnotation(components, mockFacetHolder, mockAdapterManager);
final DomainObjectWithProblemInItsAnnotatedTitleMethod screwedPojo = new DomainObjectWithProblemInItsAnnotatedTitleMethod();
context.checking(new Expectations() {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureIdTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureIdTest.java
index 2ce01bf..3eacc44 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureIdTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureIdTest.java
@@ -464,7 +464,8 @@ public class ApplicationFeatureIdTest {
public void members() throws Exception {
feature1 = ApplicationFeatureId.newMember("com.mycompany.Bar#b");
- assertThat(feature1.toString(), is(equalTo("ApplicationFeatureId{type=MEMBER, packageName=com.mycompany, memberName=b}")));
+ assertThat(feature1.toString(), is(equalTo("ApplicationFeatureId{type=MEMBER, "
+ + "packageName=com.mycompany, className=Bar, memberName=b}")));
}
@Test
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
index f0c172c..41c5c40 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
@@ -32,6 +32,7 @@ import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.Mixin;
import org.apache.isis.applib.annotation.Nature;
import org.apache.isis.applib.fixturescripts.FixtureScript;
+import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.config.IsisConfigurationDefault;
import org.apache.isis.core.commons.factory.InstanceUtil;
@@ -232,7 +233,7 @@ public abstract class IsisComponentProvider {
"If an appManifest is provided then it must return a non-empty set of modules");
}
- return Iterables.transform(modules, ClassFunctions.packageNameOf());
+ return _Lists.transform(modules, ClassFunctions.packageNameOf());
}
protected String classNamesFrom(final List<?> objectsOrClasses) {