You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2017/08/21 09:49:14 UTC

[5/7] cayenne git commit: CAY-2352 Clean up build scripts and code to support Java 8 remove unnecessary stream usage

CAY-2352 Clean up build scripts and code to support Java 8
   remove unnecessary stream usage


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/93fb3317
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/93fb3317
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/93fb3317

Branch: refs/heads/master
Commit: 93fb331746da20f8b8892b16cb21fc78872e2ba7
Parents: b425e50
Author: Nikita Timofeev <st...@gmail.com>
Authored: Mon Aug 21 10:28:51 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Mon Aug 21 10:28:51 2017 +0300

----------------------------------------------------------------------
 .../org/apache/cayenne/map/DbRelationship.java  | 25 +++++++++++++-------
 1 file changed, 16 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/93fb3317/cayenne-server/src/main/java/org/apache/cayenne/map/DbRelationship.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/DbRelationship.java b/cayenne-server/src/main/java/org/apache/cayenne/map/DbRelationship.java
index e3678d5..2eb89c0 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/DbRelationship.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/DbRelationship.java
@@ -31,7 +31,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
+import java.util.function.Function;
 
 /**
  * A DbRelationship is a descriptor of a database inter-table relationship based
@@ -113,11 +113,7 @@ public class DbRelationship extends Relationship implements ConfigurationNode {
      */
     @SuppressWarnings("unchecked")
     public Collection<DbAttribute> getTargetAttributes() {
-        if (joins.size() == 0) {
-            return Collections.emptyList();
-        }
-
-        return joins.stream().map(DbJoin::getTarget).collect(Collectors.toList());
+        return mapJoinsToAttributes(DbJoin::getTarget);
     }
 
     /**
@@ -127,11 +123,22 @@ public class DbRelationship extends Relationship implements ConfigurationNode {
      */
     @SuppressWarnings("unchecked")
     public Collection<DbAttribute> getSourceAttributes() {
+        return mapJoinsToAttributes(DbJoin::getSource);
+    }
+
+    private Collection<DbAttribute> mapJoinsToAttributes(Function<DbJoin, DbAttribute> mapper) {
         if (joins.size() == 0) {
             return Collections.emptyList();
         }
-
-        return joins.stream().map(DbJoin::getSource).collect(Collectors.toList());
+        // fast path for common case
+        if(joins.size() == 1) {
+            return Collections.singletonList(mapper.apply(joins.get(0)));
+        }
+        Collection<DbAttribute> result = new ArrayList<>(joins.size());
+        for(DbJoin join : joins) {
+            result.add(mapper.apply(join));
+        }
+        return result;
     }
 
     /**
@@ -141,7 +148,7 @@ public class DbRelationship extends Relationship implements ConfigurationNode {
      * @since 1.0.5
      */
     public DbRelationship createReverseRelationship() {
-        DbEntity targetEntity = (DbEntity) getTargetEntity();
+        DbEntity targetEntity = getTargetEntity();
 
         DbRelationship reverse = new DbRelationship();
         reverse.setSourceEntity(targetEntity);