You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2007/12/28 14:09:54 UTC

svn commit: r607231 - /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/

Author: aadamchik
Date: Fri Dec 28 05:09:53 2007
New Revision: 607231

URL: http://svn.apache.org/viewvc?rev=607231&view=rev
Log:
generics, other jdk 1.5 related refactoring

Removed:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/ConverterFactory15.java
Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/BaseToManyProperty.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/CallbackOnEntity.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/CallbackOnListener.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/ConverterFactory.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/EnumConverter.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/SingletonFaultFactory.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/BaseToManyProperty.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/BaseToManyProperty.java?rev=607231&r1=607230&r2=607231&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/BaseToManyProperty.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/BaseToManyProperty.java Fri Dec 28 05:09:53 2007
@@ -71,7 +71,7 @@
 
         // Now do the rest of the normal handling (regardless of whether it was
         // flattened or not)
-        Collection collection = (Collection) readProperty(source);
+        Collection<Object> collection = (Collection<Object>) readProperty(source);
         collection.add(target);
 
         if (setReverse) {
@@ -87,7 +87,7 @@
 
         // Now do the rest of the normal handling (regardless of whether it was
         // flattened or not)
-        Collection collection = (Collection) readProperty(source);
+        Collection<Object> collection = (Collection<Object>) readProperty(source);
         collection.remove(target);
 
         if (target != null && setReverse) {

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/CallbackOnEntity.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/CallbackOnEntity.java?rev=607231&r1=607230&r2=607231&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/CallbackOnEntity.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/CallbackOnEntity.java Fri Dec 28 05:09:53 2007
@@ -36,14 +36,14 @@
 
     private Method callbackMethod;
 
-    CallbackOnEntity(Class objectClass, String methodName)
+    CallbackOnEntity(Class<?> objectClass, String methodName)
             throws IllegalArgumentException {
         this.callbackMethod = findMethod(objectClass, methodName);
     }
 
     public void performCallback(Object entity) {
         try {
-            callbackMethod.invoke(entity, null);
+            callbackMethod.invoke(entity, (Object[]) null);
         }
         catch (Exception e) {
             throw new CayenneRuntimeException("Error invoking entity callback method "
@@ -51,7 +51,7 @@
         }
     }
 
-    private Method findMethod(Class objectClass, String methodName)
+    private Method findMethod(Class<?> objectClass, String methodName)
             throws IllegalArgumentException {
         Method[] methods = objectClass.getDeclaredMethods();
         for (int i = 0; i < methods.length; i++) {

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/CallbackOnListener.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/CallbackOnListener.java?rev=607231&r1=607230&r2=607231&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/CallbackOnListener.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/CallbackOnListener.java Fri Dec 28 05:09:53 2007
@@ -42,7 +42,7 @@
         this(listener, methodName, Object.class);
     }
 
-    CallbackOnListener(Object listener, String methodName, Class entityType)
+    CallbackOnListener(Object listener, String methodName, Class<?> entityType)
             throws IllegalArgumentException {
 
         if (listener == null) {
@@ -67,17 +67,17 @@
         }
     }
 
-    private Method findMethod(Class objectClass, String methodName, Class entityType)
+    private Method findMethod(Class<?> objectClass, String methodName, Class<?> entityType)
             throws IllegalArgumentException {
 
         Method[] methods = objectClass.getDeclaredMethods();
         for (int i = 0; i < methods.length; i++) {
             if (methodName.equals(methods[i].getName())) {
 
-                // must be non-static, void, with a single arg assinable to entity type
+                // must be non-static, void, with a single arg assignable to entity type
                 // JPA spec also requires it to be non-final, but we don't care
                 int modifiers = methods[i].getModifiers();
-                Class[] parameters = methods[i].getParameterTypes();
+                Class<?>[] parameters = methods[i].getParameterTypes();
                 if (!Modifier.isStatic(modifiers)
                         && Void.TYPE.isAssignableFrom(methods[i].getReturnType())
                         && parameters.length == 1

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/ConverterFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/ConverterFactory.java?rev=607231&r1=607230&r2=607231&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/ConverterFactory.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/ConverterFactory.java Fri Dec 28 05:09:53 2007
@@ -24,8 +24,6 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.cayenne.util.Util;
-
 /**
  * A factory of property type converters.
  * 
@@ -34,30 +32,30 @@
  */
 class ConverterFactory {
 
-    private static final String FACTORY_CLASS_JDK15 = "org.apache.cayenne.reflect.ConverterFactory15";
+    static final ConverterFactory factory = new ConverterFactory();
 
-    static final ConverterFactory factory = createFactory();
-    static Map converters;
+    private Map<String, Converter> converters;
+    private EnumConverter enumConveter = new EnumConverter();
 
     static final Converter noopConverter = new Converter() {
 
-        Object convert(Object object, Class type) {
+        Object convert(Object object, Class<?> type) {
             return object;
         }
     };
 
-    static {
+    private ConverterFactory() {
 
         Converter stringConverter = new Converter() {
 
-            Object convert(Object object, Class type) {
+            Object convert(Object object, Class<?> type) {
                 return object != null ? object.toString() : null;
             }
         };
 
         Converter booleanConverter = new Converter() {
 
-            Object convert(Object object, Class type) {
+            Object convert(Object object, Class<?> type) {
                 if (object == null) {
                     return type.isPrimitive() ? Boolean.FALSE : null;
                 }
@@ -74,7 +72,7 @@
 
         Converter intConverter = new Converter() {
 
-            Object convert(Object object, Class type) {
+            Object convert(Object object, Class<?> type) {
                 if (object == null) {
                     return type.isPrimitive() ? Integer.valueOf(0) : null;
                 }
@@ -89,7 +87,7 @@
 
         Converter byteConverter = new Converter() {
 
-            Object convert(Object object, Class type) {
+            Object convert(Object object, Class<?> type) {
                 if (object == null) {
                     return type.isPrimitive() ? Byte.valueOf((byte) 0) : null;
                 }
@@ -104,7 +102,7 @@
 
         Converter shortConverter = new Converter() {
 
-            Object convert(Object object, Class type) {
+            Object convert(Object object, Class<?> type) {
                 if (object == null) {
                     return type.isPrimitive() ? Short.valueOf((short) 0) : null;
                 }
@@ -119,7 +117,7 @@
 
         Converter charConverter = new Converter() {
 
-            Object convert(Object object, Class type) {
+            Object convert(Object object, Class<?> type) {
                 if (object == null) {
                     return type.isPrimitive() ? Character.valueOf((char) 0) : null;
                 }
@@ -135,7 +133,7 @@
 
         Converter doubleConverter = new Converter() {
 
-            Object convert(Object object, Class type) {
+            Object convert(Object object, Class<?> type) {
                 if (object == null) {
                     return type.isPrimitive() ? new Double(0.0d) : null;
                 }
@@ -150,7 +148,7 @@
 
         Converter floatConverter = new Converter() {
 
-            Object convert(Object object, Class type) {
+            Object convert(Object object, Class<?> type) {
                 if (object == null) {
                     return type.isPrimitive() ? new Float(0.0f) : null;
                 }
@@ -165,7 +163,7 @@
 
         Converter bigDecimalConverter = new Converter() {
 
-            Object convert(Object object, Class type) {
+            Object convert(Object object, Class<?> type) {
                 if (object == null) {
                     return null;
                 }
@@ -180,7 +178,7 @@
 
         Converter bigIntegerConverter = new Converter() {
 
-            Object convert(Object object, Class type) {
+            Object convert(Object object, Class<?> type) {
                 if (object == null) {
                     return null;
                 }
@@ -195,7 +193,7 @@
 
         // TODO: byte[] converter...
 
-        converters = new HashMap();
+        converters = new HashMap<String, Converter>();
 
         converters.put(Boolean.class.getName(), booleanConverter);
         converters.put("boolean", booleanConverter);
@@ -224,26 +222,17 @@
         converters.put(String.class.getName(), stringConverter);
     }
 
-    static ConverterFactory createFactory() {
-        try {
-            // sniff JDK 1.5
-            Class.forName("java.lang.StringBuilder");
-
-            Class factoryClass = Util.getJavaClass(FACTORY_CLASS_JDK15);
-            return (ConverterFactory) factoryClass.newInstance();
-        }
-        catch (Throwable th) {
-            // .. jdk 1.4
-            return new ConverterFactory();
-        }
-    }
-
-    Converter getConverter(Class type) {
+    Converter getConverter(Class<?> type) {
         if (type == null) {
             throw new IllegalArgumentException("Null type");
         }
 
-        Converter c = (Converter) converters.get(type.getName());
+        // check for enum BEFORE super call, as it will return a noop converter
+        if (type.isEnum()) {
+            return enumConveter;
+        }
+
+        Converter c = converters.get(type.getName());
         return c != null ? c : noopConverter;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/EnumConverter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/EnumConverter.java?rev=607231&r1=607230&r2=607231&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/EnumConverter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/EnumConverter.java Fri Dec 28 05:09:53 2007
@@ -26,6 +26,7 @@
 class EnumConverter extends Converter {
 
     @Override
+    @SuppressWarnings("unchecked")
     Object convert(Object object, Class type) {
 
         if (object == null) {

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/SingletonFaultFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/SingletonFaultFactory.java?rev=607231&r1=607230&r2=607231&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/SingletonFaultFactory.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/SingletonFaultFactory.java Fri Dec 28 05:09:53 2007
@@ -36,7 +36,7 @@
     protected Fault toOneFault = new ToOneFault();
     protected Fault listFault = new ToManyListFault();
     protected Fault setFault = new ToManySetFault();
-    protected Map mapFaults = new HashMap();
+    protected Map<Accessor, Fault> mapFaults = new HashMap<Accessor, Fault>();
 
     public Fault getCollectionFault() {
         return listFault;
@@ -48,7 +48,7 @@
     
     public Fault getMapFault(Accessor mapKeyAccessor) {
         synchronized (mapFaults) {
-            Fault fault = (Fault) mapFaults.get(mapKeyAccessor);
+            Fault fault = mapFaults.get(mapKeyAccessor);
 
             if (fault == null) {
                 fault = new ToManyMapFault(mapKeyAccessor);