1 package org.weda.tapestry;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import org.weda.test.WedaTestCase;
6 import org.weda.property.ObjectDescriptorRegistry;
7 import org.weda.enhance.ObjectEnhancer;
8 import org.weda.property.PropertyDescriptor;
9 import org.weda.domain.Employee;
10 import org.weda.tapestry.renderer.Renderer;
11 import org.weda.tapestry.renderer.impl.DummyRenderer;
12 import org.weda.tapestry.renderer.impl.InplaceRenderer;
13 import org.weda.domain.Address;
14 import org.weda.domain.Company;
15 import org.weda.tapestry.renderer.impl.RendererInfo;
16 import org.weda.tapestry.renderer.impl.RendererRegistryImpl;
17
18 /**
19 *
20 * @author Mikhail Titov
21 */
22 public class RendererRegistryTest extends WedaTestCase{
23
24 public RendererRegistryTest(String name) throws Exception {
25 super(name);
26 }
27
28 public void test_DefaultRendererRegistry() throws Exception {
29 RendererRegistryImpl reg = new RendererRegistryImpl();
30 List<RendererInfo> config = new ArrayList<RendererInfo>();
31 config.add(
32 createRendererInfo(
33 "1", Company.class, "id", Integer.class
34 , PropertyDescriptor.OBJECT_PROPERTY_MIME_TYPE));
35 config.add(
36 createRendererInfo(
37 "1", Company.class, "id", Long.class
38 , PropertyDescriptor.OBJECT_PROPERTY_MIME_TYPE));
39 config.add(
40 createRendererInfo(
41 "2", null, "id", Integer.class
42 , PropertyDescriptor.OBJECT_PROPERTY_MIME_TYPE));
43 config.add(
44 createRendererInfo(
45 "3", null, null, Integer.class
46 , PropertyDescriptor.OBJECT_PROPERTY_MIME_TYPE));
47 config.add(
48 createRendererInfo(
49 "4", null, null, null
50 , PropertyDescriptor.OBJECT_PROPERTY_MIME_TYPE));
51 config.add(
52 createRendererInfo(
53 "5", null, null, null, null));
54 reg.setRenderers(config);
55 reg.setObjectEnhancer(
56 (ObjectEnhancer)registry.getService(ObjectEnhancer.class));
57 reg.init();
58
59 ObjectDescriptorRegistry objDescRegistry = (ObjectDescriptorRegistry)
60 registry.getService(ObjectDescriptorRegistry.class);
61 PropertyDescriptor pd =
62 objDescRegistry.getPropertyDescriptor(Company.class, "id");
63 TestRenderer renderer = (TestRenderer)reg.getRenderer(pd);
64 assertNotNull(renderer);
65 assertEquals("1", renderer.getDefaultPattern());
66
67 pd = objDescRegistry.getPropertyDescriptor(Address.class, "id");
68 assertEquals(pd.OBJECT_PROPERTY_MIME_TYPE, pd.getMimeType());
69 renderer = (TestRenderer)reg.getRenderer(pd);
70 assertNotNull(renderer);
71 assertEquals("2", renderer.getDefaultPattern());
72
73 pd = objDescRegistry.getPropertyDescriptor(
74 Company.class, "employeCount");
75 renderer = (TestRenderer)reg.getRenderer(pd);
76 assertNotNull(renderer);
77 assertEquals("3", renderer.getDefaultPattern());
78
79 pd = objDescRegistry.getPropertyDescriptor(Company.class, "name");
80 renderer = (TestRenderer)reg.getRenderer(pd);
81 assertNotNull(renderer);
82 assertEquals("4", renderer.getDefaultPattern());
83
84 pd = objDescRegistry.getPropertyDescriptor(Employee.class, "photo");
85 renderer = (TestRenderer)reg.getRenderer(pd);
86 assertNotNull(renderer);
87 assertEquals("5", renderer.getDefaultPattern());
88 }
89
90 public void test_configuration() throws Exception {
91 List<RendererInfo> config = (List<RendererInfo>)
92 registry.getConfiguration("org.weda.tapestry.Renderers");
93 assertNotNull(config);
94 assertTrue(config.size()>0);
95 RendererInfo testInfo = null;
96 for (RendererInfo info: config)
97 if (TestRenderer.class.equals(info.getRendererClass())){
98 testInfo=info;
99 break;
100 }
101 assertNotNull(testInfo);
102 assertEquals(TestRenderer.class, testInfo.getObjectClass());
103 assertEquals("defaultPattern", testInfo.getPropertyName());
104 assertEquals(String.class, testInfo.getValueClass());
105 assertEquals(
106 PropertyDescriptor.OBJECT_PROPERTY_MIME_TYPE
107 , testInfo.getMimeType());
108 }
109
110 public void test_service() throws Exception {
111 RendererRegistry reg =
112 (RendererRegistry)registry.getService(RendererRegistry.class);
113 assertNotNull(reg);
114 ObjectDescriptorRegistry objDescRegistry = (ObjectDescriptorRegistry)
115 registry.getService(ObjectDescriptorRegistry.class);
116 PropertyDescriptor pd =
117 objDescRegistry.getPropertyDescriptor(Company.class, "id");
118 Renderer renderer = reg.getRenderer(pd);
119 assertNotNull(renderer);
120 assertEquals(InplaceRenderer.class, renderer.getClass());
121 pd = objDescRegistry.getPropertyDescriptor(Employee.class, "photo");
122 renderer = reg.getRenderer(pd);
123 assertNotNull(renderer);
124 assertEquals(DummyRenderer.class, renderer.getClass());
125
126
127
128 }
129
130 private RendererInfo createRendererInfo(
131 String id, Class objectClass, String propertyName, Class valueClass
132 , String mimeType)
133 {
134 RendererInfo info = new RendererInfo();
135 info.setObjectClass(objectClass);
136 info.setPropertyName(propertyName);
137 info.setValueClass(valueClass);
138 info.setMimeType(mimeType);
139 info.setDefaultPattern(id);
140 info.setRendererClass(TestRenderer.class);
141 return info;
142 }
143
144 }