This is an automated email from the ASF dual-hosted git repository.
gtchaboussie pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new 5ec0e993f4 OFBIZ-13313 (#923)
5ec0e993f4 is described below
commit 5ec0e993f456a8576e8462114a03c065d12abec5
Author: Gaetan <[email protected]>
AuthorDate: Wed Feb 18 16:41:46 2026 +0100
OFBIZ-13313 (#923)
Improved: Creates a DelegatorProvider interface for all objects that holds
a delegator (OFBIZ-13313)
Creates a DelegatorProvider interface for all objects that holds a
delegator.
This allows the entity query to be built with other objects than the
delegator (such as a dispatcher)
Thanks: to Jacopo and Nicolas for the feedback.
---
.../java/org/apache/ofbiz/entity/Delegator.java | 3 +-
.../org/apache/ofbiz/entity/GenericDelegator.java | 5 ++++
.../org/apache/ofbiz/entity/GenericEntity.java | 4 ++-
.../ofbiz/entity/test/EntityQueryTestSuite.java | 14 +++++++++
.../ofbiz/entity/util/DelegatorProvider.java | 34 ++++++++++++++++++++++
.../org/apache/ofbiz/entity/util/EntityQuery.java | 7 ++---
.../org/apache/ofbiz/service/LocalDispatcher.java | 10 ++-----
.../apache/ofbiz/widget/model/ModelFormTest.java | 1 +
8 files changed, 64 insertions(+), 14 deletions(-)
diff --git
a/framework/entity/src/main/java/org/apache/ofbiz/entity/Delegator.java
b/framework/entity/src/main/java/org/apache/ofbiz/entity/Delegator.java
index 49928adbc8..c414b287e0 100644
--- a/framework/entity/src/main/java/org/apache/ofbiz/entity/Delegator.java
+++ b/framework/entity/src/main/java/org/apache/ofbiz/entity/Delegator.java
@@ -43,12 +43,13 @@ import org.apache.ofbiz.entity.util.EntityCrypto;
import org.apache.ofbiz.entity.util.EntityFindOptions;
import org.apache.ofbiz.entity.util.EntityListIterator;
import org.apache.ofbiz.entity.util.EntityStoreOptions;
+import org.apache.ofbiz.entity.util.DelegatorProvider;
import org.apache.ofbiz.entity.util.SequenceUtil;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
-public interface Delegator {
+public interface Delegator extends DelegatorProvider {
enum OperationType { INSERT, UPDATE, DELETE }
diff --git
a/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericDelegator.java
b/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericDelegator.java
index 2c0f34efde..5e9c6f08e8 100644
---
a/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericDelegator.java
+++
b/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericDelegator.java
@@ -494,6 +494,11 @@ public class GenericDelegator implements Delegator {
return this.delegatorInfo.getGroupDataSource(groupName);
}
+ @Override
+ public Delegator getDelegator() {
+ return this;
+ }
+
@Override
public GenericHelperInfo getGroupHelperInfo(String entityGroupName) {
if (entityGroupName == null) {
diff --git
a/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericEntity.java
b/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericEntity.java
index 50a5ed227d..f2a61c50e5 100644
--- a/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericEntity.java
+++ b/framework/entity/src/main/java/org/apache/ofbiz/entity/GenericEntity.java
@@ -61,6 +61,7 @@ import org.apache.ofbiz.entity.model.ModelKeyMap;
import org.apache.ofbiz.entity.model.ModelRelation;
import org.apache.ofbiz.entity.model.ModelViewEntity;
import org.apache.ofbiz.entity.model.ModelViewEntity.ModelAlias;
+import org.apache.ofbiz.entity.util.DelegatorProvider;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -74,7 +75,8 @@ import org.w3c.dom.Element;
* then it should be made immutable by calling the <code>setImmutable()</code>
method.</p>
*/
@SuppressWarnings("serial")
-public class GenericEntity implements Map<String, Object>,
LocalizedMap<Object>, Serializable, Comparable<GenericEntity>, Cloneable {
+public class GenericEntity implements Map<String, Object>,
LocalizedMap<Object>,
+ Serializable, Comparable<GenericEntity>, Cloneable, DelegatorProvider {
private static final String MODULE = GenericEntity.class.getName();
public static final GenericEntity NULL_ENTITY = new NullGenericEntity();
diff --git
a/framework/entity/src/main/java/org/apache/ofbiz/entity/test/EntityQueryTestSuite.java
b/framework/entity/src/main/java/org/apache/ofbiz/entity/test/EntityQueryTestSuite.java
index 66b16f542d..e0a0d13752 100644
---
a/framework/entity/src/main/java/org/apache/ofbiz/entity/test/EntityQueryTestSuite.java
+++
b/framework/entity/src/main/java/org/apache/ofbiz/entity/test/EntityQueryTestSuite.java
@@ -544,4 +544,18 @@ public class EntityQueryTestSuite extends EntityTestCase {
TransactionUtil.rollback(transactionStarted, "Transaction is
Rolled Back", e);
}
}
+
+ /**
+ * Check that init function use() work well with a GenericValue that
implements DelegatorProvider
+ * assert: ensure delegator present on GV is the same that created and
EntityQuery.use on GV not return null
+ */
+ public void testUseFromDelegatorProvider() throws GenericEntityException {
+ Delegator delegator = getDelegator();
+ GenericValue testGv = delegator.makeValue("TestingType",
+ "testingTypeId", "useDelegProv",
+ "description", "Use delegator Provider");
+ assertNotNull(testGv.getDelegator().getDelegatorName());
+ assertEquals(delegator.getDelegatorName(),
testGv.getDelegator().getDelegatorName());
+ assertNotNull(EntityQuery.use(testGv));
+ }
}
diff --git
a/framework/entity/src/main/java/org/apache/ofbiz/entity/util/DelegatorProvider.java
b/framework/entity/src/main/java/org/apache/ofbiz/entity/util/DelegatorProvider.java
new file mode 100644
index 0000000000..5c307ad302
--- /dev/null
+++
b/framework/entity/src/main/java/org/apache/ofbiz/entity/util/DelegatorProvider.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.ofbiz.entity.util;
+
+import org.apache.ofbiz.entity.Delegator;
+
+/**
+ * Interface for classes that hold a delegator that is meant to be used by
other classes (for queries for example)
+ */
+public interface DelegatorProvider {
+
+ /**
+ * Gets the Delegator associated with current object instance
+ * @return Delegator associated with current object instance
+ */
+ Delegator getDelegator();
+
+}
diff --git
a/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityQuery.java
b/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityQuery.java
index 2fae14bfa0..e32f73f65e 100644
---
a/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityQuery.java
+++
b/framework/entity/src/main/java/org/apache/ofbiz/entity/util/EntityQuery.java
@@ -73,12 +73,11 @@ public class EntityQuery {
private Integer offset;
private Integer limit;
-
/** Construct an EntityQuery object for use against the specified Delegator
- * @param delegator The delegator instance to use for the query
+ * @param delegatorProvider The delegator provider instance to use for the
query
*/
- public static EntityQuery use(Delegator delegator) {
- return new EntityQuery(delegator);
+ public static EntityQuery use(DelegatorProvider delegatorProvider) {
+ return new EntityQuery(delegatorProvider.getDelegator());
}
/** Construct an EntityQuery object for use against the specified Delegator
diff --git
a/framework/service/src/main/java/org/apache/ofbiz/service/LocalDispatcher.java
b/framework/service/src/main/java/org/apache/ofbiz/service/LocalDispatcher.java
index 666e12cad2..4ce55241b2 100644
---
a/framework/service/src/main/java/org/apache/ofbiz/service/LocalDispatcher.java
+++
b/framework/service/src/main/java/org/apache/ofbiz/service/LocalDispatcher.java
@@ -20,7 +20,7 @@ package org.apache.ofbiz.service;
import java.util.Map;
-import org.apache.ofbiz.entity.Delegator;
+import org.apache.ofbiz.entity.util.DelegatorProvider;
import org.apache.ofbiz.security.Security;
import org.apache.ofbiz.service.jms.JmsListenerFactory;
import org.apache.ofbiz.service.job.JobManager;
@@ -32,7 +32,7 @@ import org.apache.ofbiz.service.job.JobManager;
* by calling the {@link
org.apache.ofbiz.service.ServiceDispatcher#getLocalDispatcher(String,
Delegator)}
* factory method.</p>
*/
-public interface LocalDispatcher {
+public interface LocalDispatcher extends DelegatorProvider {
/**
* Initialize a dispatch context for this dispatch after the creation is ok
@@ -343,12 +343,6 @@ public interface LocalDispatcher {
*/
JmsListenerFactory getJMSListeneFactory();
- /**
- * Gets the GenericEntityDelegator associated with this dispatcher
- * @return GenericEntityDelegator associated with this dispatcher
- */
- Delegator getDelegator();
-
/**
* Gets the Security object associated with this dispatcher
diff --git
a/framework/widget/src/test/java/org/apache/ofbiz/widget/model/ModelFormTest.java
b/framework/widget/src/test/java/org/apache/ofbiz/widget/model/ModelFormTest.java
index 80b6af32af..1b7f7f0f22 100644
---
a/framework/widget/src/test/java/org/apache/ofbiz/widget/model/ModelFormTest.java
+++
b/framework/widget/src/test/java/org/apache/ofbiz/widget/model/ModelFormTest.java
@@ -49,6 +49,7 @@ public class ModelFormTest {
list.add(genericValue);
when(delegator.findList(any(), any(), any(), any(), any(), any(),
Mockito.anyBoolean()))
.thenReturn(list);
+ when(delegator.getDelegator()).thenReturn(delegator);
context = new HashMap<>();
context.put("delegator", delegator);
}