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 2021/02/02 21:16:35 UTC
[isis] branch master updated: ISIS-2516: fixes uses of stream
iterate idiom
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new e3fb5eb ISIS-2516: fixes uses of stream iterate idiom
e3fb5eb is described below
commit e3fb5ebdba4ac56ce36f90d335077e94b0e250e2
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Feb 2 22:16:22 2021 +0100
ISIS-2516: fixes uses of stream iterate idiom
also fixes local package lookups
---
.../apache/isis/commons/collections/CanTest.java | 33 +++++++++++++++++++++
.../jdo/dom/permission/ApplicationPermission.java | 2 --
.../jpa/dom/permission/ApplicationPermission.java | 2 --
.../apache/isis/tooling/j2adoc/J2AdocContext.java | 34 +++++++++++++---------
.../tooling/javamodel/ast/ImportDeclarations.java | 12 ++++----
5 files changed, 59 insertions(+), 24 deletions(-)
diff --git a/commons/src/test/java/org/apache/isis/commons/collections/CanTest.java b/commons/src/test/java/org/apache/isis/commons/collections/CanTest.java
index bee5267..1d5e7bb 100644
--- a/commons/src/test/java/org/apache/isis/commons/collections/CanTest.java
+++ b/commons/src/test/java/org/apache/isis/commons/collections/CanTest.java
@@ -19,6 +19,7 @@
package org.apache.isis.commons.collections;
import java.io.IOException;
+import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
@@ -28,6 +29,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import org.apache.isis.commons.SerializationTester;
+import lombok.val;
+
class CanTest {
@Test
@@ -121,6 +124,36 @@ class CanTest {
assertEquals(Can.<String>of("hi", "hello"), Can.<String>of("hi", "hello", "there").filter(x->x.startsWith("h")));
}
+ // -- STREAM IDIOMS
+
+ @Test
+ void partialSums_reversed() {
+ assertEquals(Can.<String>of("a", "b"), Can.<String>empty().add("a").add("b"));
+ assertEquals(Can.<String>of("a", "b"), Can.<String>empty().add(0, "b").add(0, "a"));
+
+ final Can<String> all = Can.<String>of("a", "b", "c");
+
+ val iterator = all.reverseIterator();
+
+ val partialSums = Stream.iterate(
+ Can.<String>empty(),
+ parts->parts.add(0, iterator.next()))
+ .limit(4)
+ .collect(Can.toCan());
+
+ assertEquals(Can.of(
+ Can.<String>empty(),
+ Can.<String>of("c"),
+ Can.<String>of("b", "c"),
+ Can.<String>of("a", "b", "c")
+ ),
+ partialSums);
+
+ }
+
+
+
+
}
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java
index 27bb346..af656cf 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java
@@ -33,11 +33,9 @@ import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.services.appfeat.ApplicationMemberType;
import org.apache.isis.applib.util.ObjectContracts;
import org.apache.isis.applib.util.ObjectContracts.ObjectContract;
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermission.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermission.java
index bc95dad..7a4dbb9 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermission.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermission.java
@@ -39,11 +39,9 @@ import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.services.appfeat.ApplicationMemberType;
import org.apache.isis.applib.util.ObjectContracts;
import org.apache.isis.applib.util.ObjectContracts.ObjectContract;
diff --git a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AdocContext.java b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AdocContext.java
index 2424583..87c39b2 100644
--- a/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AdocContext.java
+++ b/tooling/java2adoc/src/main/java/org/apache/isis/tooling/j2adoc/J2AdocContext.java
@@ -133,32 +133,38 @@ public class J2AdocContext {
return Optional.empty();
}
+ if(unit.getFriendlyName().equals("Action")
+ && partialNameNoWhiteSpaces.equals("Where")) {
+ System.out.println("Action");
+ }
+
final Can<String> nameDiscriminator = Can.ofStream(
_Strings.splitThenStream(partialNameNoWhiteSpaces, "."));
+ val nameDiscriminatorPartIterator = nameDiscriminator.reverseIterator();
+
+ val typeSimpleNameCandidates = Stream.iterate(
+ Can.ofSingleton(nameDiscriminatorPartIterator.next()),
+ parts->parts.add(nameDiscriminatorPartIterator.next()))
+ .limit(nameDiscriminator.size())
+ .collect(Can.toCan());
+
final Can<Can<String>> potentialFqns = Can.ofStream(
ImportDeclarations
.streamPotentialFqns(nameDiscriminator, unit.getImportDeclarations()));
-
- val nameDiscriminatorPartIterator = nameDiscriminator.reverseIterator();
- val typeSimpleNameFirstCandidate = Can.ofSingleton(nameDiscriminatorPartIterator.next());
-
- val searchResult = Can.ofStream(Stream.iterate(
- typeSimpleNameFirstCandidate,
- __->nameDiscriminatorPartIterator.hasNext(),
- parts->parts.add(0, nameDiscriminatorPartIterator.next()))
+ val searchResult = typeSimpleNameCandidates.stream()
.map((Can<String> typeSimpleNameParts)->typeSimpleNameParts.stream()
.collect(Collectors.joining(".")))
- //.peek(typeSimpleNameCandidate->System.out.println("!!! candidate: "+typeSimpleNameCandidate)) //debug
.flatMap((String typeSimpleNameCandidate)->unitsByTypeSimpleName
.getOrElseEmpty(typeSimpleNameCandidate)
.stream())
- .filter((J2AdocUnit referredUnit)->{
- Can<String> unitFqnParts = referredUnit.getFqnParts();
- return potentialFqns.stream()
- .anyMatch(potentialFqn->potentialFqn.isEqualTo(unitFqnParts));
- }));
+ .filter((J2AdocUnit referredUnit)->potentialFqns.stream()
+ .anyMatch(potentialFqn->potentialFqn.isEqualTo(referredUnit.getFqnParts()))
+ || unit.getNamespace().equals(referredUnit.getNamespace()) //same package
+ )
+ .collect(Can.toCan());
+
val selfReferential = searchResult.isEmpty()
&& unit.getFqnParts().endsWith(nameDiscriminator);
diff --git a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/ImportDeclarations.java b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/ImportDeclarations.java
index e86f216..678404e 100644
--- a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/ImportDeclarations.java
+++ b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/ImportDeclarations.java
@@ -55,7 +55,8 @@ public final class ImportDeclarations {
final Can<String> nameDiscriminator,
final ImportDeclaration importDeclaration) {
- if(importDeclaration.isStatic()) {
+ if(importDeclaration.isStatic()
+ || nameDiscriminator.isEmpty()) {
return Stream.empty();
}
@@ -74,12 +75,11 @@ public final class ImportDeclarations {
val nameDiscriminatorPartIterator = nameDiscriminator.reverseIterator();
- val firstCandidate = fqnParts.add(nameDiscriminatorPartIterator.next());
-
return Stream.iterate(
- firstCandidate,
- __->nameDiscriminatorPartIterator.hasNext(),
- parts->parts.add(nameDiscriminatorPartIterator.next()));
+ Can.ofSingleton(nameDiscriminatorPartIterator.next()),
+ parts->parts.add(0, nameDiscriminatorPartIterator.next()))
+ .limit(nameDiscriminator.size())
+ .map(fqnParts::addAll);
}
// -- HELPER