Adam,

Thanks for the tips!

The public modifier and @Deprecated in the Delegator interface are carried over from GenericDelegator.java. I used Eclipse to extract the interface - hence the public modifier. David Jones deprecated the methods - not me. We can remove the deprecated methods when they are no longer used.

-Adrian

Adam Heath wrote:
[email protected] wrote:
Author: adrianc
Date: Fri Sep 25 23:36:13 2009
New Revision: 819067

URL: http://svn.apache.org/viewvc?rev=819067&view=rev
Log:
Refactored GenericDelegator.java based on a design proposed by Adam Heath on 
the dev mailing list.

DelegatorInterface.java has been replaced by Delegator.java.


Added:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/Factory.java   (with 
props)
    
ofbiz/trunk/framework/entity/src/META-INF/services/org.ofbiz.entity.DelegatorFactory
   (with props)
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/Delegator.java   (with 
props)
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/DelegatorFactory.java   
(with props)
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/DelegatorFactoryImpl.java 
  (with props)
Removed:
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/DelegatorInterface.java
Modified:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilObject.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/GenericDelegator.java

Added: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/Factory.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/Factory.java?rev=819067&view=auto
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/Factory.java (added)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/Factory.java Fri Sep 25 
23:36:13 2009
@@ -0,0 +1,32 @@
+package org.ofbiz.base.util;
+
+/** Factory interface. */
+public interface Factory<T> {

public interface Factory<T, O>

+
+    /** Returns an instance of <code>T</code>.
+ * + * @param obj Optional object to be used in <code>T</code>'s construction,
+     * or to be used as a selector key
+     * @return An instance of <code>T</code>
+     */
+    public T getInstance(Object obj);

public T getInstance(O obj);

+
+}

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilObject.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilObject.java?rev=819067&r1=819066&r2=819067&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilObject.java 
(original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilObject.java Fri Sep 
25 23:36:13 2009
@@ -23,6 +23,8 @@
 import java.io.IOException;
 import java.io.ObjectOutputStream;
 import java.io.InputStream;
+import java.util.Iterator;
+import javax.imageio.spi.ServiceRegistry;
/**
  * UtilObject
@@ -171,4 +173,17 @@
         if (o1 == null) return 0;
         return o1.hashCode();
     }
+
+    @SuppressWarnings("unchecked")
+    public static <T> T getObjectFromFactory(Class<T> factoryInterface, Object 
obj) throws ClassNotFoundException {

public static <T, O> getObjectFromFactory(Class<Factory<T, O>>
factoryInterface, O obj), then remove the cast below, and then
@SuppressWarnings.

+        Iterator<Factory<T>> it = (Iterator<Factory<T>>) 
ServiceRegistry.lookupProviders(factoryInterface);
+        while (it.hasNext()) {
+            Factory<T> factory = it.next();
+            T instance = factory.getInstance(obj);
+            if (instance != null) {
+                return instance;
+            }
+        }
+        throw new 
ClassNotFoundException(factoryInterface.getClass().getName());
+    }
 }

Added: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/Delegator.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/Delegator.java?rev=819067&view=auto
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/Delegator.java (added)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/Delegator.java Fri Sep 25 
23:36:13 2009
+public interface Delegator {
+    /**
+     * Finds all Generic entities NOTE 20080502: 14 references; all changed to
+     * findList
+ * + * @param entityName
+     *            The Name of the Entity as defined in the entity XML file
+     * @return List containing all Generic entities
+     * @deprecated Use findList() instead
+     */
+    @Deprecated
+    public List<GenericValue> findAll(String entityName) throws 
GenericEntityException;

Don't add @Deprecated methods to *new* interfaces or classes.  That
makes no sense.

Also, interfaces don't need the public keyword attached to methods;
it's superflous.


Reply via email to