This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch past-M2
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 0229d4581cdd5e016fa1269b1b28cc641db578f0
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sun May 31 15:06:15 2026 -0400

    Translators as stateless services producing immutable TranslatedXyz records
    
    * EJBQL translators
---
 .../apache/cayenne/access/jdbc/EJBQLAction.java    | 10 +++---
 .../translator/ejbql/EJBQLConditionTranslator.java |  2 +-
 .../translator/ejbql/EJBQLDbPathTranslator.java    |  4 +--
 .../translator/ejbql/EJBQLDeleteTranslator.java    |  4 +--
 .../translator/ejbql/EJBQLFromTranslator.java      |  2 +-
 .../translator/ejbql/EJBQLGroupByTranslator.java   |  2 +-
 .../ejbql/EJBQLIdentifierColumnsTranslator.java    |  2 +-
 .../access/translator/ejbql/EJBQLJoinAppender.java |  2 +-
 .../translator/ejbql/EJBQLOrderByTranslator.java   |  2 +-
 .../translator/ejbql/EJBQLPathTranslator.java      |  2 +-
 .../ejbql/EJBQLSelectColumnsTranslator.java        |  5 ++-
 .../translator/ejbql/EJBQLSelectTranslator.java    | 12 +++----
 .../translator/ejbql/EJBQLTranslationContext.java  | 40 ++++++++++++----------
 .../translator/ejbql/EJBQLUpdateTranslator.java    |  6 ++--
 14 files changed, 48 insertions(+), 47 deletions(-)

diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAction.java 
b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAction.java
index 44f4688eb..3e05ae767 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAction.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAction.java
@@ -53,12 +53,12 @@ public class EJBQLAction extends BaseSQLAction {
     @Override
     public void performAction(Connection connection, OperationObserver 
observer) throws Exception {
         EJBQLCompiledExpression compiledExpression = 
query.getExpression(dataNode.getEntityResolver());
-        EJBQLTranslator translatorFactory = dataNode.getEjbqlTranslator();
+        EJBQLTranslator translator = dataNode.getEjbqlTranslator();
         EJBQLTranslationContext context = new EJBQLTranslationContext(
                 dataNode.getEntityResolver(),
                 query,
                 compiledExpression,
-                translatorFactory,
+                translator,
                 dataNode.getAdapter(),
                 dataNode.getAdapter().getQuotingStrategy());
 
@@ -66,21 +66,21 @@ public class EJBQLAction extends BaseSQLAction {
 
             @Override
             public boolean visitSelect(EJBQLExpression expression) {
-                EJBQLExpressionVisitor visitor = 
translatorFactory.getSelectTranslator(context);
+                EJBQLExpressionVisitor visitor = 
translator.getSelectTranslator(context);
                 expression.visit(visitor);
                 return false;
             }
 
             @Override
             public boolean visitDelete(EJBQLExpression expression) {
-                EJBQLExpressionVisitor visitor = 
translatorFactory.getDeleteTranslator(context);
+                EJBQLExpressionVisitor visitor = 
translator.getDeleteTranslator(context);
                 expression.visit(visitor);
                 return false;
             }
 
             @Override
             public boolean visitUpdate(EJBQLExpression expression) {
-                EJBQLExpressionVisitor visitor = 
translatorFactory.getUpdateTranslator(context);
+                EJBQLExpressionVisitor visitor = 
translator.getUpdateTranslator(context);
                 expression.visit(visitor);
                 return false;
             }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLConditionTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLConditionTranslator.java
index 706b7080b..6a2be91aa 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLConditionTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLConditionTranslator.java
@@ -76,7 +76,7 @@ public class EJBQLConditionTranslator extends 
EJBQLBaseVisitor {
 
     @Override
     public boolean visitAggregate(EJBQLExpression expression) {
-        
expression.visit(context.getTranslatorFactory().getAggregateColumnTranslator(context));
+        
expression.visit(context.getTranslator().getAggregateColumnTranslator(context));
         return false;
     }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLDbPathTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLDbPathTranslator.java
index b90a366bd..8b94a73dc 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLDbPathTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLDbPathTranslator.java
@@ -97,7 +97,7 @@ public abstract class EJBQLDbPathTranslator extends 
EJBQLBaseVisitor {
 
        private void resolveJoin(boolean inner) {
 
-               EJBQLJoinAppender joinAppender = 
context.getTranslatorFactory().getJoinAppender(context);
+               EJBQLJoinAppender joinAppender = 
context.getTranslator().getJoinAppender(context);
 
                // TODO: andrus 1/6/2007 - conflict with object path naming... 
maybe
                // 'registerReusableJoin' should normalize everything to a db 
path?
@@ -237,7 +237,7 @@ public abstract class EJBQLDbPathTranslator extends 
EJBQLBaseVisitor {
 
        protected void resolveJoin() {
 
-               EJBQLJoinAppender joinAppender = 
context.getTranslatorFactory().getJoinAppender(context);
+               EJBQLJoinAppender joinAppender = 
context.getTranslator().getJoinAppender(context);
 
                String newPath = idPath + '.' + lastPathComponent;
                String oldPath = joinAppender.registerReusableJoin(idPath, 
lastPathComponent, newPath);
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLDeleteTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLDeleteTranslator.java
index 9f23c20b4..4e3805e95 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLDeleteTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLDeleteTranslator.java
@@ -43,14 +43,14 @@ public class EJBQLDeleteTranslator extends EJBQLBaseVisitor 
{
     @Override
     public boolean visitFrom(EJBQLExpression expression, int 
finishedChildIndex) {
         context.append(" FROM");
-        
expression.visit(context.getTranslatorFactory().getFromTranslator(context));
+        expression.visit(context.getTranslator().getFromTranslator(context));
         return false;
     }
 
     @Override
     public boolean visitWhere(EJBQLExpression expression) {
         context.append(" WHERE");
-        
expression.visit(context.getTranslatorFactory().getConditionTranslator(context));
+        
expression.visit(context.getTranslator().getConditionTranslator(context));
         return false;
     }
 }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLFromTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLFromTranslator.java
index d1f636ba9..3205ce10a 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLFromTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLFromTranslator.java
@@ -35,7 +35,7 @@ public class EJBQLFromTranslator extends EJBQLBaseVisitor {
     public EJBQLFromTranslator(EJBQLTranslationContext context) {
         super(true);
         this.context = context;
-        this.joinAppender = 
context.getTranslatorFactory().getJoinAppender(context);
+        this.joinAppender = context.getTranslator().getJoinAppender(context);
     }
 
     @Override
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLGroupByTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLGroupByTranslator.java
index 17ebb2b14..51f8690d5 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLGroupByTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLGroupByTranslator.java
@@ -50,7 +50,7 @@ class EJBQLGroupByTranslator extends EJBQLBaseVisitor {
             context.append(',');
         }
 
-        
expression.visit(context.getTranslatorFactory().getIdentifierColumnsTranslator(context));
+        
expression.visit(context.getTranslator().getIdentifierColumnsTranslator(context));
         return false;
     }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLIdentifierColumnsTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLIdentifierColumnsTranslator.java
index 654cc841f..af9adef5c 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLIdentifierColumnsTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLIdentifierColumnsTranslator.java
@@ -100,7 +100,7 @@ class EJBQLIdentifierColumnsTranslator extends 
EJBQLBaseVisitor {
 
                         if (marker == null) {
                             marker = 
EJBQLJoinAppender.makeJoinTailMarker(idVar);
-                            joinAppender = 
context.getTranslatorFactory().getJoinAppender(context);
+                            joinAppender = 
context.getTranslator().getJoinAppender(context);
                         }
 
                         DbRelationship dr = (DbRelationship) pathPart;
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLJoinAppender.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLJoinAppender.java
index a6a3e1f7a..f69ad2a30 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLJoinAppender.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLJoinAppender.java
@@ -256,7 +256,7 @@ public class EJBQLJoinAppender {
                 context.pushMarker(context.makeEntityQualifierMarker(), false);
 
                 ejbqlQualifier.visit(context
-                        .getTranslatorFactory()
+                        .getTranslator()
                         .getConditionTranslator(context));
 
                 context.popMarker();
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLOrderByTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLOrderByTranslator.java
index 4aef2522f..99c3b3c44 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLOrderByTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLOrderByTranslator.java
@@ -52,7 +52,7 @@ class EJBQLOrderByTranslator extends EJBQLBaseVisitor {
     
        @Override
        public boolean visitAggregate(EJBQLExpression expression) {
-               
expression.visit(context.getTranslatorFactory().getAggregateColumnTranslator(context));
+               
expression.visit(context.getTranslator().getAggregateColumnTranslator(context));
                return false;
        }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLPathTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLPathTranslator.java
index b2e997ce1..083e2c97d 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLPathTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLPathTranslator.java
@@ -121,7 +121,7 @@ public abstract class EJBQLPathTranslator extends 
EJBQLBaseVisitor {
 
        protected void resolveJoin() {
 
-               EJBQLJoinAppender joinAppender = 
context.getTranslatorFactory().getJoinAppender(context);
+               EJBQLJoinAppender joinAppender = 
context.getTranslator().getJoinAppender(context);
 
                String newPath = idPath + '.' + lastPathComponent;
                String oldPath = joinAppender.registerReusableJoin(idPath, 
lastPathComponent, newPath);
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectColumnsTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectColumnsTranslator.java
index 0e356d91d..49612a6d7 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectColumnsTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectColumnsTranslator.java
@@ -27,7 +27,6 @@ import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.map.ObjAttribute;
-import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.ObjRelationship;
 
 import java.util.Collection;
@@ -59,7 +58,7 @@ public class EJBQLSelectColumnsTranslator extends 
EJBQLBaseVisitor {
 
     @Override
     public boolean visitAggregate(EJBQLExpression expression) {
-        
expression.visit(context.getTranslatorFactory().getAggregateColumnTranslator(context));
+        
expression.visit(context.getTranslator().getAggregateColumnTranslator(context));
         return false;
     }
 
@@ -205,7 +204,7 @@ public class EJBQLSelectColumnsTranslator extends 
EJBQLBaseVisitor {
 
     @Override
     public boolean visitIdentifier(EJBQLExpression expression) {
-        
expression.visit(context.getTranslatorFactory().getIdentifierColumnsTranslator(context));
+        
expression.visit(context.getTranslator().getIdentifierColumnsTranslator(context));
         return false;
     }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectTranslator.java
index 1f45b8e39..d267569d8 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectTranslator.java
@@ -48,7 +48,7 @@ public class EJBQLSelectTranslator extends EJBQLBaseVisitor {
     public boolean visitFrom(EJBQLExpression expression, int 
finishedChildIndex) {
         context.append(" FROM");
         context.setAppendingResultColumns(false);
-        
expression.visit(context.getTranslatorFactory().getFromTranslator(context));
+        expression.visit(context.getTranslator().getFromTranslator(context));
         context.markCurrentPosition(context.makeWhereMarker());
         context.markCurrentPosition(context.makeEntityQualifierMarker());
         return false;
@@ -57,21 +57,21 @@ public class EJBQLSelectTranslator extends EJBQLBaseVisitor 
{
     @Override
     public boolean visitGroupBy(EJBQLExpression expression) {
         context.append(" GROUP BY");
-        
expression.visit(context.getTranslatorFactory().getGroupByTranslator(context));
+        
expression.visit(context.getTranslator().getGroupByTranslator(context));
         return false;
     }
 
     @Override
     public boolean visitHaving(EJBQLExpression expression) {
         context.append(" HAVING");
-        
expression.visit(context.getTranslatorFactory().getConditionTranslator(context));
+        
expression.visit(context.getTranslator().getConditionTranslator(context));
         return false;
     }
 
     @Override
     public boolean visitOrderBy(EJBQLExpression expression) {
         context.append(" ORDER BY");
-        
expression.visit(context.getTranslatorFactory().getOrderByTranslator(context));
+        
expression.visit(context.getTranslator().getOrderByTranslator(context));
         return false;
     }
 
@@ -92,7 +92,7 @@ public class EJBQLSelectTranslator extends EJBQLBaseVisitor {
 
     @Override
     public boolean visitSelectExpressions(EJBQLExpression expression) {
-        
expression.visit(context.getTranslatorFactory().getSelectColumnsTranslator(
+        expression.visit(context.getTranslator().getSelectColumnsTranslator(
                 context));
         return false;
     }
@@ -109,7 +109,7 @@ public class EJBQLSelectTranslator extends EJBQLBaseVisitor 
{
             context.append(" AND");
         }
 
-        
expression.visit(context.getTranslatorFactory().getConditionTranslator(context));
+        
expression.visit(context.getTranslator().getConditionTranslator(context));
         return false;
     }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLTranslationContext.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLTranslationContext.java
index 22295d2d3..cb1452fe4 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLTranslationContext.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLTranslationContext.java
@@ -42,7 +42,7 @@ import java.util.Map;
 
 /**
  * A context used for translating of EJBQL to SQL.
- * 
+ *
  * @since 3.0
  */
 public class EJBQLTranslationContext {
@@ -50,7 +50,7 @@ public class EJBQLTranslationContext {
     private EJBQLCompiledExpression compiledExpression;
     protected Map<String, Object> namedParameters;
     protected Map<Integer, Object> positionalParameters;
-    private EJBQLTranslator translatorFactory;
+    private EJBQLTranslator translator;
     private DbAdapter adapter;
     private QuotingStrategy quotingStrategy;
     private EntityResolver entityResolver;
@@ -73,9 +73,13 @@ public class EJBQLTranslationContext {
     // not.
     private boolean appendingResultColumns;
 
-    public EJBQLTranslationContext(EntityResolver entityResolver, EJBQLQuery 
query,
+    public EJBQLTranslationContext(
+            EntityResolver entityResolver,
+            EJBQLQuery query,
             EJBQLCompiledExpression compiledExpression,
-            EJBQLTranslator translatorFactory, DbAdapter adapter, 
QuotingStrategy quotingStrategy) {
+            EJBQLTranslator translator,
+            DbAdapter adapter,
+            QuotingStrategy quotingStrategy) {
 
         this.entityResolver = entityResolver;
         this.compiledExpression = compiledExpression;
@@ -83,7 +87,7 @@ public class EJBQLTranslationContext {
 
         this.namedParameters = query.getNamedParameters();
         this.positionalParameters = query.getPositionalParameters();
-        this.translatorFactory = translatorFactory;
+        this.translator = translator;
         this.adapter = adapter;
         this.usingAliases = true;
         this.caseInsensitive = false;
@@ -118,8 +122,8 @@ public class EJBQLTranslationContext {
         query.setParams(boundParameters);
         return query;
     }
-    
-    public QueryMetadata getMetadata(){
+
+    public QueryMetadata getMetadata() {
         return queryMetadata;
     }
 
@@ -136,8 +140,8 @@ public class EJBQLTranslationContext {
         return id;
     }
 
-    EJBQLTranslator getTranslatorFactory() {
-        return translatorFactory;
+    EJBQLTranslator getTranslator() {
+        return translator;
     }
 
     /**
@@ -174,8 +178,7 @@ public class EJBQLTranslationContext {
                         .getEntityDescriptor(id.getEntityId())
                         .getEntity()
                         .getDbEntity();
-            }
-            else {
+            } else {
                 DbRelationship last = incoming.get(incoming.size() - 1);
                 entity = last.getTargetEntity();
             }
@@ -354,16 +357,17 @@ public class EJBQLTranslationContext {
      * <p>This method takes a value object which may be a collection or a 
non-collection.  If it
      * is a collection then it will bind all of the values in the collection.  
If it is a non-
      * collection then it will bind that single object.</p>
+     *
      * @param value
      * @return
      */
 
     List<String> bindParameters(Object value) {
-        if(Collection.class.isAssignableFrom(value.getClass())) {
+        if (Collection.class.isAssignableFrom(value.getClass())) {
             Iterator<?> parameterValueIterator = ((Collection<?>) 
value).iterator();
             List<String> result = new ArrayList<>();
 
-            while(parameterValueIterator.hasNext()) {
+            while (parameterValueIterator.hasNext()) {
                 result.add(bindParameter(parameterValueIterator.next()));
             }
 
@@ -421,8 +425,7 @@ public class EJBQLTranslationContext {
         if (dot > 0) {
             keyBuffer.append(idPath.substring(0, dot).toLowerCase()).append(
                     idPath.substring(dot));
-        }
-        else {
+        } else {
             keyBuffer.append(idPath.toLowerCase());
         }
 
@@ -432,8 +435,7 @@ public class EJBQLTranslationContext {
 
         if (tableAliases != null) {
             alias = tableAliases.get(key);
-        }
-        else {
+        } else {
             tableAliases = new HashMap<>();
             alias = null;
         }
@@ -488,11 +490,11 @@ public class EJBQLTranslationContext {
     public void setUsingAliases(boolean useAliases) {
         this.usingAliases = useAliases;
     }
-    
+
     public boolean isCaseInsensitive() {
         return caseInsensitive;
     }
-    
+
     public void setCaseInsensitive(boolean caseInsensitive) {
         this.caseInsensitive = caseInsensitive;
     }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLUpdateTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLUpdateTranslator.java
index e3deb6f8d..65ce8a66b 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLUpdateTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLUpdateTranslator.java
@@ -48,13 +48,13 @@ class EJBQLUpdateTranslator extends EJBQLBaseVisitor {
     @Override
     public boolean visitWhere(EJBQLExpression expression) {
         context.append(" WHERE");
-        
expression.visit(context.getTranslatorFactory().getConditionTranslator(context));
+        
expression.visit(context.getTranslator().getConditionTranslator(context));
         return false;
     }
 
     @Override
     public boolean visitFrom(EJBQLExpression expression, int 
finishedChildIndex) {
-        
expression.visit(context.getTranslatorFactory().getFromTranslator(context));
+        expression.visit(context.getTranslator().getFromTranslator(context));
 
         return false;
     }
@@ -68,7 +68,7 @@ class EJBQLUpdateTranslator extends EJBQLBaseVisitor {
             context.append(" SET");
         }
 
-        
expression.visit(context.getTranslatorFactory().getUpdateItemTranslator(context));
+        
expression.visit(context.getTranslator().getUpdateItemTranslator(context));
         return false;
     }
 }

Reply via email to