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;
+ }
}