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 2018/03/07 12:05:34 UTC
[2/2] cayenne git commit: CAY-2413 swap inner classes for lambdas
CAY-2413 swap inner classes for lambdas
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/87d7e89b
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/87d7e89b
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/87d7e89b
Branch: refs/heads/master
Commit: 87d7e89b90f70a71d740dd22ff3d7c7064289de3
Parents: bd8f5c0
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Mar 7 15:00:31 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Mar 7 15:00:31 2018 +0300
----------------------------------------------------------------------
.../dbsync/naming/CallbackNameBuilder.java | 29 ++--
.../dbsync/naming/DeduplicationVisitor.java | 161 ++++++-------------
2 files changed, 65 insertions(+), 125 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/87d7e89b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/CallbackNameBuilder.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/CallbackNameBuilder.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/CallbackNameBuilder.java
index 7f01eb8..a37df53 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/CallbackNameBuilder.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/CallbackNameBuilder.java
@@ -39,28 +39,25 @@ class CallbackNameBuilder extends NameBuilder {
? this.baseName
: "onEvent";
- return new DeduplicationVisitor(parent, baseName, dupesPattern).resolve(new DeduplicationVisitor.Predicate() {
- @Override
- public boolean isNameInUse(String name) {
+ return new DeduplicationVisitor(parent, baseName, dupesPattern).resolve(name -> {
- ObjEntity entity = (ObjEntity) parent;
+ ObjEntity entity = (ObjEntity) parent;
- if (entity.getCallbackMethods().contains(name)) {
- return true;
- }
+ if (entity.getCallbackMethods().contains(name)) {
+ return true;
+ }
- if (name.startsWith("get")) {
- String conflictingProperty = NameUtil.uncapitalize(name.substring(3));
+ if (name.startsWith("get")) {
+ String conflictingProperty = NameUtil.uncapitalize(name.substring(3));
- // check if either attribute or relationship name matches...
- if (entity.getAttribute(conflictingProperty) != null
- || entity.getRelationship(conflictingProperty) != null) {
- return true;
- }
+ // check if either attribute or relationship name matches...
+ if (entity.getAttribute(conflictingProperty) != null
+ || entity.getRelationship(conflictingProperty) != null) {
+ return true;
}
-
- return false;
}
+
+ return false;
});
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/87d7e89b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DeduplicationVisitor.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DeduplicationVisitor.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DeduplicationVisitor.java
index cd42d32..4a59067 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DeduplicationVisitor.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DeduplicationVisitor.java
@@ -36,11 +36,11 @@ import org.apache.cayenne.map.ProcedureParameter;
import org.apache.cayenne.map.QueryDescriptor;
import java.util.Objects;
+import java.util.function.Predicate;
/**
* @since 4.0
*/
-// TODO: swap inner classes for lambdas when we are on java 8
class DeduplicationVisitor implements ConfigurationNodeVisitor<String> {
private ConfigurationNode parent;
@@ -61,85 +61,56 @@ class DeduplicationVisitor implements ConfigurationNodeVisitor<String> {
@Override
public String visitDataNodeDescriptor(DataNodeDescriptor nodeDescriptor) {
- return resolve(new Predicate() {
- @Override
- public boolean isNameInUse(String name) {
-
- DataChannelDescriptor dataChannelDescriptor = (DataChannelDescriptor) parent;
- for (DataNodeDescriptor dataNodeDescriptor : dataChannelDescriptor.getNodeDescriptors()) {
- if (dataNodeDescriptor.getName().equals(name)) {
- return true;
- }
+ return resolve(name -> {
+ DataChannelDescriptor dataChannelDescriptor = (DataChannelDescriptor) parent;
+ for (DataNodeDescriptor dataNodeDescriptor : dataChannelDescriptor.getNodeDescriptors()) {
+ if (dataNodeDescriptor.getName().equals(name)) {
+ return true;
}
-
- return false;
}
+
+ return false;
});
}
@Override
public String visitDataMap(DataMap dataMap) {
- return resolve(new Predicate() {
- @Override
- public boolean isNameInUse(String name) {
-
- // null context is a situation when DataMap is a
- // top level object of the project
- if (parent == null) {
- return false;
- }
-
- if (parent instanceof DataChannelDescriptor) {
- DataChannelDescriptor domain = (DataChannelDescriptor) parent;
- return domain.getDataMap(name) != null;
- }
+ return resolve(name -> {
+ // null context is a situation when DataMap is a
+ // top level object of the project
+ if (parent == null) {
return false;
}
+
+ if (parent instanceof DataChannelDescriptor) {
+ DataChannelDescriptor domain = (DataChannelDescriptor) parent;
+ return domain.getDataMap(name) != null;
+ }
+ return false;
});
}
@Override
public String visitObjEntity(ObjEntity entity) {
- return resolve(new Predicate() {
- @Override
- public boolean isNameInUse(String name) {
- DataMap map = (DataMap) parent;
- return map.getObjEntity(name) != null;
- }
- });
+ return resolve(name -> ((DataMap) parent).getObjEntity(name) != null);
}
@Override
public String visitDbEntity(DbEntity entity) {
- return resolve(new Predicate() {
- @Override
- public boolean isNameInUse(String name) {
- DataMap map = (DataMap) parent;
- return map.getDbEntity(name) != null;
- }
- });
+ return resolve(name -> ((DataMap) parent).getDbEntity(name) != null);
}
@Override
public String visitEmbeddable(Embeddable embeddable) {
- return resolve(new Predicate() {
- @Override
- public boolean isNameInUse(String name) {
- DataMap map = (DataMap) parent;
- return map.getEmbeddable(map.getNameWithDefaultPackage(name)) != null;
- }
+ return resolve(name -> {
+ DataMap map = (DataMap) parent;
+ return map.getEmbeddable(map.getNameWithDefaultPackage(name)) != null;
});
}
@Override
public String visitEmbeddableAttribute(EmbeddableAttribute attribute) {
- return resolve(new Predicate() {
- @Override
- public boolean isNameInUse(String name) {
- Embeddable emb = (Embeddable) parent;
- return emb.getAttribute(name) != null;
- }
- });
+ return resolve(name -> ((Embeddable) parent).getAttribute(name) != null);
}
@Override
@@ -164,51 +135,36 @@ class DeduplicationVisitor implements ConfigurationNodeVisitor<String> {
@Override
public String visitProcedure(Procedure procedure) {
- return resolve(new Predicate() {
- @Override
- public boolean isNameInUse(String name) {
- DataMap map = (DataMap) parent;
- return map.getProcedure(name) != null;
- }
- });
+ return resolve(name -> ((DataMap) parent).getProcedure(name) != null);
}
@Override
public String visitProcedureParameter(ProcedureParameter parameter) {
- return resolve(new Predicate() {
- @Override
- public boolean isNameInUse(String name) {
-
- // it doesn't matter if we create a parameter with a duplicate name.. parameters are positional anyway..
- // still try to use unique names for visual consistency
-
- Procedure procedure = (Procedure) parent;
- for (ProcedureParameter parameter : procedure.getCallParameters()) {
- if (name.equals(parameter.getName())) {
- return true;
- }
- }
+ return resolve(name -> {
- return false;
+ // it doesn't matter if we create a parameter with a duplicate name.. parameters are positional anyway..
+ // still try to use unique names for visual consistency
+
+ Procedure procedure = (Procedure) parent;
+ for (ProcedureParameter parameter1 : procedure.getCallParameters()) {
+ if (name.equals(parameter1.getName())) {
+ return true;
+ }
}
+
+ return false;
});
}
@Override
public String visitQuery(QueryDescriptor query) {
- return resolve(new Predicate() {
- @Override
- public boolean isNameInUse(String name) {
- DataMap map = (DataMap) parent;
- return map.getQueryDescriptor(name) != null;
- }
- });
+ return resolve(name -> ((DataMap) parent).getQueryDescriptor(name) != null);
}
- String resolve(Predicate nameChecker) {
+ String resolve(Predicate<String> nameChecker) {
int c = 1;
String name = baseName;
- while (nameChecker.isNameInUse(name)) {
+ while (nameChecker.test(name)) {
name = String.format(dupesPattern, baseName, c++);
}
@@ -216,38 +172,25 @@ class DeduplicationVisitor implements ConfigurationNodeVisitor<String> {
}
private String resolveDbEntityProperty() {
- return resolve(new Predicate() {
- @Override
- public boolean isNameInUse(String name) {
-
- DbEntity entity = (DbEntity) parent;
-
- // check if either attribute or relationship name matches...
- return entity.getAttribute(name) != null || entity.getRelationship(name) != null;
- }
+ return resolve(name -> {
+ DbEntity entity = (DbEntity) parent;
+ // check if either attribute or relationship name matches...
+ return entity.getAttribute(name) != null || entity.getRelationship(name) != null;
});
}
private String resolveObjEntityProperty() {
- return resolve(new Predicate() {
- @Override
- public boolean isNameInUse(String name) {
-
- ObjEntity entity = (ObjEntity) parent;
+ return resolve(name -> {
+ ObjEntity entity = (ObjEntity) parent;
- // check if either attribute or relationship name matches...
- if (entity.getAttribute(name) != null || entity.getRelationship(name) != null) {
- return true;
- }
-
- // check if there's a callback method that shadows attribute getter (unlikely, but still)
- String conflictingCallback = "get" + NameUtil.capitalize(name);
- return entity.getCallbackMethods().contains(conflictingCallback);
+ // check if either attribute or relationship name matches...
+ if (entity.getAttribute(name) != null || entity.getRelationship(name) != null) {
+ return true;
}
- });
- }
- interface Predicate {
- boolean isNameInUse(String name);
+ // check if there's a callback method that shadows attribute getter (unlikely, but still)
+ String conflictingCallback = "get" + NameUtil.capitalize(name);
+ return entity.getCallbackMethods().contains(conflictingCallback);
+ });
}
}