001    /*
002     * Copyright 2002-2004 the original author or authors.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005     * use this file except in compliance with the License. You may obtain a copy of
006     * the License at
007     *
008     * http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013     * License for the specific language governing permissions and limitations under
014     * the License.
015     */
016    package org.springframework.richclient.application;
017    
018    import java.beans.PropertyEditor;
019    
020    import junit.framework.TestCase;
021    
022    import org.springframework.beans.propertyeditors.ClassEditor;
023    import org.springframework.richclient.application.support.DefaultPropertyEditorRegistry;
024    
025    /**
026     * Test cases for {@link DefaultPropertyEditorRegistry}
027     */
028    public class DefaultPropertyEditorRegistryTests extends TestCase {
029    
030        public void testRegisteringClass() throws Exception {
031            PropertyEditor pe;
032    
033            DefaultPropertyEditorRegistry registry = new DefaultPropertyEditorRegistry();
034    
035            registry.setPropertyEditor(D.class, ClassEditor.class);
036            pe = registry.getPropertyEditor(E.class);
037            assertNotNull(pe);
038            assertEquals(ClassEditor.class, pe.getClass());
039    
040            registry.setPropertyEditor(A.class, ClassEditor.class);
041            pe = registry.getPropertyEditor(B.class);
042            assertNull(pe);
043    
044            pe = registry.getPropertyEditor(E.class);
045            assertNotNull(pe);
046            assertEquals(ClassEditor.class, pe.getClass());
047    
048            pe = registry.getPropertyEditor(C.class);
049            assertNotNull(pe);
050            assertEquals(ClassEditor.class, pe.getClass());
051        }
052    
053        public void testRegisteringProperty() throws Exception {
054            PropertyEditor pe;
055    
056            DefaultPropertyEditorRegistry registry = new DefaultPropertyEditorRegistry();
057    
058            registry.setPropertyEditor(A.class, "something", ClassEditor.class);
059    
060            try {
061                registry.getPropertyEditor(B.class, "something");
062                fail("Should have thrown an IllegalArgumentException");
063            }
064            catch (IllegalArgumentException e) {
065                // should have been thrown
066            }
067    
068            pe = registry.getPropertyEditor(E.class, "something");
069            assertNotNull(pe);
070            assertEquals(ClassEditor.class, pe.getClass());
071    
072            pe = registry.getPropertyEditor(C.class, "something");
073            assertNotNull(pe);
074            assertEquals(ClassEditor.class, pe.getClass());
075    
076            pe = registry.getPropertyEditor(B.class, "bar");
077            assertNotNull(pe);
078    
079            registry.setPropertyEditor(Long.class, ClassEditor.class);
080            pe = registry.getPropertyEditor(B.class, "bar");
081            assertNotNull(pe);
082            assertEquals(ClassEditor.class, pe.getClass());
083        }
084    
085        interface A {
086            public String getSomething();
087    
088            public void setSomething(String newSomething);
089        }
090    
091        interface B {
092            public Long getBar();
093    
094            public void setBar(Long newBar);
095        }
096    
097        interface C extends A {
098        }
099    
100        static class D implements B, C {
101            private String something;
102    
103            private Long bar;
104    
105            public String getSomething() {
106                return something;
107            }
108    
109            public void setSomething(String something) {
110                this.something = something;
111            }
112    
113            public Long getBar() {
114                return bar;
115            }
116    
117            public void setBar(Long bar) {
118                this.bar = bar;
119            }
120        }
121    
122        static class E extends D {
123    
124        }
125    }