This is an automated email from the ASF dual-hosted git repository.
ntimofeev pushed a commit to branch STABLE-4.2
in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/STABLE-4.2 by this push:
new 5c4344214 CAY-2805 Stop calling exp parser internally
5c4344214 is described below
commit 5c43442140ffbe2d6d2c7dad54f52a868609968e
Author: Nikita Timofeev <[email protected]>
AuthorDate: Tue Apr 11 16:22:42 2023 +0300
CAY-2805 Stop calling exp parser internally
---
RELEASE-NOTES.txt | 1 +
.../apache/cayenne/access/PrefetchProcessorJointNode.java | 2 +-
.../access/translator/select/PrefetchNodeStage.java | 14 ++++++++++----
3 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 7a8f439be..a23c21036 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -14,6 +14,7 @@ Date:
Changes/New Features:
CAY-2802 Upgrade Gradle to 7.6.1
+CAY-2805 Stop calling exp parser internally
Bug Fixes:
diff --git
a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java
b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java
index 9d72ddcf3..7c1296346 100644
---
a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java
+++
b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java
@@ -161,7 +161,7 @@ class PrefetchProcessorJointNode extends
PrefetchProcessorNode {
final String prefix;
if (jointRoot != this) {
- Expression objectPath = ExpressionFactory.exp(getPath(jointRoot));
+ Expression objectPath =
ExpressionFactory.pathExp(getPath(jointRoot));
ASTPath translated = (ASTPath) ((PrefetchProcessorNode) jointRoot)
.getResolver()
.getEntity()
diff --git
a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/PrefetchNodeStage.java
b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/PrefetchNodeStage.java
index 3aa795df1..924a6e916 100644
---
a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/PrefetchNodeStage.java
+++
b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/PrefetchNodeStage.java
@@ -77,7 +77,7 @@ class PrefetchNodeStage implements TranslationStage {
boolean warnPrefetchWithLimit = false;
for(PrefetchTreeNode node : prefetch.adjacentJointNodes()) {
- Expression prefetchExp = ExpressionFactory.exp(node.getPath());
+ Expression prefetchExp = ExpressionFactory.pathExp(node.getPath());
ASTDbPath dbPrefetch = (ASTDbPath)
objEntity.translateToDbPath(prefetchExp);
final String dbPath = dbPrefetch.getPath();
DbEntity dbEntity = objEntity.getDbEntity();
@@ -124,10 +124,16 @@ class PrefetchNodeStage implements TranslationStage {
PathTranslator pathTranslator = context.getPathTranslator();
PrefetchSelectQuery<?> prefetchSelectQuery = (PrefetchSelectQuery<?>)
select;
for(String prefetchPath: prefetchSelectQuery.getResultPaths()) {
- ASTDbPath pathExp = (ASTDbPath)
context.getMetadata().getClassDescriptor().getEntity()
- .translateToDbPath(ExpressionFactory.exp(prefetchPath));
+ String path;
+ if(prefetchPath.startsWith(ASTDbPath.DB_PREFIX)) {
+ path = prefetchPath.substring(ASTDbPath.DB_PREFIX.length());
+ } else {
+ Expression exp = ExpressionFactory.pathExp(prefetchPath);
+ ASTDbPath pathExp = (ASTDbPath)
context.getMetadata().getClassDescriptor().getEntity()
+ .translateToDbPath(exp);
+ path = pathExp.getPath();
+ }
- String path = pathExp.getPath();
PathTranslationResult result = pathTranslator
.translatePath(context.getMetadata().getDbEntity(), path);
result.getDbRelationship().ifPresent(r -> {