You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2012/01/17 18:25:07 UTC

svn commit: r1232495 - in /cxf/trunk/rt/databinding/aegis/src: main/java/org/apache/cxf/aegis/type/basic/BeanType.java main/java/org/apache/cxf/aegis/type/basic/BeanTypeInfo.java test/java/org/apache/cxf/aegis/type/basic/BeanTest.java

Author: dkulp
Date: Tue Jan 17 17:25:06 2012
New Revision: 1232495

URL: http://svn.apache.org/viewvc?rev=1232495&view=rev
Log:
[CXF-4027] Omit Enum, Clonable, Serializable from Aegis class searching
Patch from James Phillpotts  applied

Modified:
    cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java
    cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanTypeInfo.java
    cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/BeanTest.java

Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java?rev=1232495&r1=1232494&r2=1232495&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java Tue Jan 17 17:25:06 2012
@@ -19,6 +19,7 @@
 package org.apache.cxf.aegis.type.basic;
 
 import java.beans.PropertyDescriptor;
+import java.io.Serializable;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.InvocationTargetException;
@@ -582,7 +583,8 @@ public class BeanType extends AegisType 
         /*
          * Don't dig any deeper than Object or Exception
          */
-        if (c != null && c != Object.class && c != Exception.class && c != RuntimeException.class) {
+        if (c != null && c != Object.class && c != Exception.class && c != RuntimeException.class 
+            && c != Enum.class && c != Serializable.class && c != Cloneable.class) {
             TypeMapping tm = inf.getTypeMapping();
             AegisType superType = tm.getType(c);
             if (superType == null) {

Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanTypeInfo.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanTypeInfo.java?rev=1232495&r1=1232494&r2=1232495&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanTypeInfo.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanTypeInfo.java Tue Jan 17 17:25:06 2012
@@ -271,6 +271,8 @@ public class BeanTypeInfo {
         try {
             if (beanClass.isInterface() || beanClass.isPrimitive()) {
                 descriptors = getInterfacePropertyDescriptors(beanClass);
+            } else if (beanClass.isEnum()) {
+                // do nothing
             } else if (beanClass == Object.class || beanClass == Throwable.class) {
                 // do nothing
             } else if (beanClass == Throwable.class) {

Modified: cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/BeanTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/BeanTest.java?rev=1232495&r1=1232494&r2=1232495&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/BeanTest.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/basic/BeanTest.java Tue Jan 17 17:25:06 2012
@@ -21,7 +21,9 @@ package org.apache.cxf.aegis.type.basic;
 import java.beans.PropertyDescriptor;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.Serializable;
 import java.util.Date;
+import java.util.Set;
 
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.namespace.QName;
@@ -608,6 +610,55 @@ public class BeanTest extends AbstractAe
         assertFalse(type.getTypeInfo().getElements().iterator().hasNext());
     }
 
+    @Test
+    public void testInterfaceBeans() throws Exception {
+        defaultContext();
+        BeanType type = new BeanType();
+        type.setTypeClass(SerializableBean.class);
+        type.setTypeMapping(mapping);
+        type.setSchemaType(new QName("urn:foo", "SerializableBean"));
+
+        AegisType stringType = mapping.getType(String.class);
+        assertTrue(type.getDependencies().contains(stringType));
+
+        type = new BeanType();
+        type.setTypeClass(CloneableBean.class);
+        type.setTypeMapping(mapping);
+        type.setSchemaType(new QName("urn:foo", "CloneableBean"));
+
+        assertEquals(1, type.getDependencies().size());
+        assertTrue(type.getDependencies().contains(stringType));
+
+        type = new BeanType();
+        type.setTypeClass(SimpleInterface.class);
+        type.setTypeMapping(mapping);
+        type.setSchemaType(new QName("urn:foo", "SimpleInterface"));
+
+        assertEquals(1, type.getDependencies().size());
+        assertTrue(type.getDependencies().contains(stringType));
+
+        type = new BeanType();
+        type.setTypeClass(ExtendingInterface.class);
+        type.setTypeMapping(mapping);
+        type.setSchemaType(new QName("urn:foo", "ExtendingInterface"));
+
+        Set<AegisType> dependencies = type.getDependencies();
+        assertEquals(2, dependencies.size());
+        dependencies.remove(stringType);
+        assertEquals(SimpleInterface.class, dependencies.iterator().next().getTypeClass());
+    }
+
+    @Test
+    public void testEnumBean() throws Exception {
+        defaultContext();
+        BeanType type = new BeanType();
+        type.setTypeClass(EnumBean.class);
+        type.setTypeMapping(mapping);
+        type.setSchemaType(new QName("urn:foo", "EnumBean"));
+
+        assertTrue(type.getDependencies().isEmpty());
+    }
+
     public static class DateBean {
         private Date date;
 
@@ -708,4 +759,24 @@ public class BeanTest extends AbstractAe
             this.howdy = howdy;
         }
     }
+    
+    public interface SerializableBean extends Serializable {
+        String getString();
+    }
+    
+    public interface CloneableBean extends Cloneable {
+        String getString();
+    }
+    
+    public interface SimpleInterface {
+        String getString();
+    }
+    
+    public interface ExtendingInterface extends SimpleInterface {
+        String getAnotherString();
+    }
+    
+    public enum EnumBean {
+        VALUE1, VALUE2;
+    }
 }