001 package org.springframework.richclient.util; 002 003 import java.lang.reflect.Method; 004 import java.util.HashMap; 005 import java.util.Map; 006 007 import junit.framework.TestCase; 008 009 /** 010 * Test case for {@link ClassUtils} 011 */ 012 public class ClassUtilsTests extends TestCase { 013 014 interface A { 015 016 public void setSomething(String newSomething); 017 } 018 019 interface B { 020 021 public String getSomething(); 022 } 023 024 interface C extends A { 025 } 026 027 static class D implements B, C { 028 029 public static final String VALUE1 = "value1"; 030 031 public static final Integer VALUE2 = new Integer(5); 032 033 private String something; 034 035 public String getSomething() { 036 return something; 037 } 038 039 public void setSomething(String something) { 040 this.something = something; 041 } 042 043 public static void staticMethod() { 044 } 045 } 046 047 static class E extends D { 048 049 private D deProperty; 050 051 public D getDeProperty() { 052 return deProperty; 053 } 054 055 public void setDeProperty(D deProperty) { 056 this.deProperty = deProperty; 057 } 058 } 059 060 public void testGetFieldValue() { 061 assertNull(ClassUtils.getFieldValue("no.such.class.Exists.someField")); 062 063 assertEquals("value1", ClassUtils.getFieldValue("org.springframework.richclient.util.ClassUtilsTests$D.VALUE1")); 064 } 065 066 static class F { 067 068 private E eeProperty; 069 070 public E getEeProperty() { 071 return eeProperty; 072 } 073 074 public void setEeProperty(E eeProperty) { 075 this.eeProperty = eeProperty; 076 } 077 } 078 079 public void testGetPropertyClass() throws Exception { 080 assertEquals(String.class, ClassUtils.getPropertyClass(B.class, "something")); 081 082 assertEquals(D.class, ClassUtils.getPropertyClass(F.class, "eeProperty.deProperty")); 083 } 084 085 public void testGetValueFromMapForClass() throws Exception { 086 Object val; 087 Map map = new HashMap(); 088 089 map.put(Number.class, "Number"); 090 091 val = ClassUtils.getValueFromMapForClass(Long.class, map); 092 assertNotNull(val); 093 assertEquals("Number", val); 094 095 map.put(A.class, "A"); 096 val = ClassUtils.getValueFromMapForClass(B.class, map); 097 assertNull(val); 098 099 val = ClassUtils.getValueFromMapForClass(E.class, map); 100 assertNotNull(val); 101 assertEquals("A", val); 102 103 val = ClassUtils.getValueFromMapForClass(C.class, map); 104 assertNotNull(val); 105 assertEquals("A", val); 106 } 107 108 public void testIsAProperty() throws Exception { 109 assertTrue(ClassUtils.isAProperty(B.class, "something")); 110 assertTrue(ClassUtils.isAProperty(E.class, "something")); 111 assertTrue(ClassUtils.isAProperty(A.class, "something")); 112 assertTrue(ClassUtils.isAProperty(F.class, "eeProperty.deProperty")); 113 } 114 115 public void testQualifier() { 116 assertEquals("org.springframework.richclient.util.ClassUtilsTests", ClassUtils 117 .qualifier("org.springframework.richclient.util.ClassUtilsTests.property")); 118 assertEquals("java.lang", ClassUtils.qualifier("java.lang.String")); 119 assertEquals("", ClassUtils.qualifier("")); 120 assertEquals("", ClassUtils.qualifier("test")); 121 } 122 123 public void testFindMethod() { 124 Method method = ClassUtils.findMethod("getSomething", B.class, null); 125 assertNotNull(method); 126 127 assertNull(ClassUtils.findMethod("noSuchMethod", B.class, null)); 128 } 129 130 public void testGetStaticMethod() { 131 assertNull(ClassUtils.getStaticMethod("getSomething", D.class, null)); 132 133 assertNotNull(ClassUtils.getStaticMethod("staticMethod", D.class, null)); 134 assertEquals("staticMethod", ClassUtils.getStaticMethod("staticMethod", D.class, null).getName()); 135 } 136 137 public void testGetClassFieldNameWithValue() { 138 assertEquals("org.springframework.richclient.util.ClassUtilsTests$D.VALUE1", ClassUtils 139 .getClassFieldNameWithValue(D.class, "value1")); 140 assertEquals("org.springframework.richclient.util.ClassUtilsTests$D.VALUE2", ClassUtils 141 .getClassFieldNameWithValue(D.class, new Integer(5))); 142 143 assertNull(ClassUtils.getClassFieldNameWithValue(D.class, "noSuchFieldWithValue")); 144 } 145 146 public void testUnqualify() { 147 assertEquals("ClassUtilsTests", ClassUtils.unqualify("org.springframework.richclient.util.ClassUtilsTests")); 148 assertEquals("ClassUtilsTests", ClassUtils.unqualify(ClassUtilsTests.class)); 149 assertEquals("ClassUtilsTests", ClassUtils 150 .unqualify("org/springframework/richclient/util/ClassUtilsTests", '/')); 151 } 152 153 }