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.