KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > portal > test > portlet > PortletMetaDataTestCase


1 /*****************************************
2  * *
3  * JBoss Portal: The OpenSource Portal *
4  * *
5  * Distributable under LGPL license. *
6  * See terms of license at gnu.org. *
7  * *
8  *****************************************/

9 package org.jboss.portal.test.portlet;
10
11 import java.io.File JavaDoc;
12 import java.util.Arrays JavaDoc;
13 import java.util.Iterator JavaDoc;
14 import java.util.Locale JavaDoc;
15 import java.util.Map JavaDoc;
16
17 import javax.portlet.PortletMode;
18 import javax.portlet.WindowState;
19
20 import org.jboss.portal.portlet.metadata.DescriptionMetaData;
21 import org.jboss.portal.portlet.metadata.LanguagesMetaData;
22 import org.jboss.portal.portlet.metadata.ParameterMetaData;
23 import org.jboss.portal.portlet.metadata.PortletApplicationMetaData;
24 import org.jboss.portal.portlet.metadata.PortletMetaData;
25 import org.jboss.portal.portlet.metadata.PortletModeMetaData;
26 import org.jboss.portal.portlet.metadata.SecurityRoleRefMetaData;
27 import org.jboss.portal.portlet.metadata.UserAttributeMetaData;
28 import org.jboss.portal.portlet.metadata.WindowStateMetaData;
29 import org.jboss.portal.server.metadata.ContentTypeMetaData;
30 import org.jboss.portal.server.metadata.PreferenceMetaData;
31 import org.jboss.portal.test.AbstractTestCase;
32 import org.w3c.dom.Document JavaDoc;
33
34 /**
35  * todo : security-role-ref
36  * todo : trim values
37  *
38  * @author <a HREF="mailto:julien@jboss.org">Julien Viet</a>
39  * @version $Revision: 1.3 $
40  */

41 public class PortletMetaDataTestCase extends AbstractTestCase
42 {
43
44    public PortletMetaDataTestCase(String JavaDoc name)
45    {
46       super(name);
47    }
48
49    public void testPortlet1()
50    {
51       // Get the portlet descriptor file
52
File JavaDoc portletDD = new File JavaDoc(resources, "test-war/WEB-INF/portlet.xml");
53       assertTrue(portletDD.exists() && portletDD.isFile());
54       Document JavaDoc doc = parseXML(portletDD);
55
56       PortletApplicationMetaData portletApplicationMD = new PortletApplicationMetaData("/test", null, "/test", null);
57
58       //PortletApplicationBuilder builder = new PortletApplicationBuilder();
59
// builder.build(portletApplicationMD, doc);
60
if (true)
61       {
62          throw new Error JavaDoc("FIXME");
63       }
64
65       assertEquals(portletApplicationMD.getVersion(), "1.0");
66       checkFirstPortlet((PortletMetaData)portletApplicationMD.getComponent("Portlet1"));
67       checkPortletMode(
68             (PortletModeMetaData)portletApplicationMD.getPortletModes().get(new PortletMode("configure")),
69             new String JavaDoc[]{"first mode","premier mode"},
70             new Locale JavaDoc[]{Locale.ENGLISH,Locale.FRENCH},
71             "configure");
72       checkPortletMode(
73             (PortletModeMetaData)portletApplicationMD.getPortletModes().get(new PortletMode("inactive")),
74             new String JavaDoc[]{"second mode"},
75             new Locale JavaDoc[]{Locale.ENGLISH},
76             "inactive");
77
78       checkWindowState(
79             (WindowStateMetaData)portletApplicationMD.getWindowStates().get(new WindowState("blur")),
80             new String JavaDoc[]{"first state","premier etat"},
81             new Locale JavaDoc[]{Locale.ENGLISH,Locale.FRENCH},
82             "blur");
83       checkWindowState(
84             (WindowStateMetaData)portletApplicationMD.getWindowStates().get(new WindowState("black and white")),
85             new String JavaDoc[]{"second state"},
86             new Locale JavaDoc[]{Locale.ENGLISH},
87             "black and white");
88
89       checkUserAttribute(
90             (UserAttributeMetaData)portletApplicationMD.getUserAttributes().get("att1"),
91             new String JavaDoc[]{"first attribute","premier attribut"},
92             new Locale JavaDoc[]{Locale.ENGLISH,Locale.FRENCH},
93             "att1");
94       checkUserAttribute(
95             (UserAttributeMetaData)portletApplicationMD.getUserAttributes().get("att2"),
96             new String JavaDoc[]{"second attribute"},
97             new Locale JavaDoc[]{Locale.ENGLISH},
98             "att2");
99    }
100
101    // private void
102

103    private void checkUserAttribute(UserAttributeMetaData userAttributeMD, String JavaDoc[] descriptions, Locale JavaDoc[] locales, String JavaDoc name)
104    {
105       assertNotNull(userAttributeMD);
106       checkDescriptions(userAttributeMD.getDescriptions(), descriptions, locales);
107       assertEquals(name, userAttributeMD.getName());
108    }
109
110    private void checkWindowState(WindowStateMetaData windowStateMD, String JavaDoc[] descriptions, Locale JavaDoc[] locales, String JavaDoc state)
111    {
112       assertNotNull(windowStateMD);
113       checkDescriptions(windowStateMD.getDescriptions(), descriptions, locales);
114       assertEquals(new WindowState(state), windowStateMD.getWindowState());
115    }
116
117    private void checkPortletMode(PortletModeMetaData portletModeMD, String JavaDoc[] descriptions, Locale JavaDoc[] locales, String JavaDoc mode)
118    {
119       assertNotNull(portletModeMD);
120       checkDescriptions(portletModeMD.getDescriptions(), descriptions, locales);
121       assertEquals(new PortletMode(mode), portletModeMD.getPortletMode());
122    }
123
124    private void checkFirstPortlet(PortletMetaData portletMD)
125    {
126       assertNotNull(portletMD);
127
128       assertNotNull(portletMD.getDescriptions());
129       assertEquals(2, portletMD.getDescriptions().size());
130       checkDescription((DescriptionMetaData)portletMD.getDescriptions().get(Locale.ENGLISH), "default", Locale.ENGLISH);
131       checkDescription((DescriptionMetaData)portletMD.getDescriptions().get(Locale.FRENCH), "defaut", Locale.FRENCH);
132
133       assertEquals("Portlet1", portletMD.getName());
134       assertEquals("org.jboss.portal.test.portlet.TestPortlet", portletMD.getClassName());
135
136       assertNotNull(portletMD.getParameters());
137       assertEquals(2, portletMD.getParameters().size());
138       checkParameter((ParameterMetaData)portletMD.getParameters().get("one"),
139                      new String JavaDoc[]{"first parameter","premier parametre"},
140                      new Locale JavaDoc[]{Locale.ENGLISH,Locale.FRENCH},
141                      "one",
142                      "1");
143       checkParameter((ParameterMetaData)portletMD.getParameters().get("two"),
144                      new String JavaDoc[]{"second parameter","deuxieme parametre"},
145                      new Locale JavaDoc[]{Locale.ENGLISH,Locale.FRENCH},
146                      "two",
147                      "2");
148
149       assertEquals("0", portletMD.getExpirationCache());
150
151       assertNotNull(portletMD.getContentTypes());
152       // assertEquals(2, portletMD.getContentTypes().size());
153
checkContentType(portletMD, "text/html", new PortletMode[]{PortletMode.VIEW, PortletMode.EDIT, PortletMode.HELP});
154       checkContentType(portletMD, "text/wml", new PortletMode[]{PortletMode.VIEW, PortletMode.HELP});
155
156       assertNotNull(portletMD.getLanguages());
157       checkLanguages(
158             portletMD.getLanguages(),
159             new Locale JavaDoc[]{Locale.ENGLISH,Locale.FRENCH},
160             null,
161             "very long portlet title",
162             "short portlet title",
163             new String JavaDoc[]{"a","b","c","d","e","f"});
164
165       assertEquals(portletMD.getPreferences().getPreferenceValidator(), null);
166       checkPreference((PreferenceMetaData)portletMD.getPreferences().getPreference("one"), "one", new String JavaDoc[]{"1"}, false);
167       checkPreference((PreferenceMetaData)portletMD.getPreferences().getPreference("two"), "two", new String JavaDoc[]{"2"}, false);
168       checkPreference((PreferenceMetaData)portletMD.getPreferences().getPreference("three"), "three", new String JavaDoc[]{"3"}, true);
169       checkPreference((PreferenceMetaData)portletMD.getPreferences().getPreference("all"), "all", new String JavaDoc[]{"1","2","3"}, false);
170
171       checkSecurityRoleRef((SecurityRoleRefMetaData)portletMD.getSecurityRoleRefs().get(0), "ROLE_NAME_WITHOUT_LINK", null);
172       checkSecurityRoleRef((SecurityRoleRefMetaData)portletMD.getSecurityRoleRefs().get(1), "ROLE_NAME_WITH_LINK", "ROLE_LINK");
173    }
174
175    private void checkSecurityRoleRef(SecurityRoleRefMetaData securityRoleRefMD, String JavaDoc roleName, String JavaDoc roleLink)
176    {
177       assertEquals(securityRoleRefMD.getRoleName(), roleName);
178       assertEquals(securityRoleRefMD.getRoleLink(), roleLink);
179    }
180
181    private void checkLanguages(LanguagesMetaData languagesMD, Locale JavaDoc[] locales, String JavaDoc resourceBundle, String JavaDoc title, String JavaDoc shortTitle, String JavaDoc[] keywords)
182    {
183       assertNotNull(languagesMD);
184       assertNotNull(languagesMD.getSupportedLocales());
185       assertNotNull(languagesMD.getInfo());
186       assertTrue(Arrays.equals(locales, languagesMD.getSupportedLocales().toArray()));
187       assertEquals(resourceBundle, languagesMD.getResourceBundle());
188       assertEquals(title, languagesMD.getInfo().getTitle());
189       assertEquals(shortTitle, languagesMD.getInfo().getShortTitle());
190    }
191
192    private void checkPreference(PreferenceMetaData preferenceMD, String JavaDoc name, String JavaDoc[] values, boolean readOnly)
193    {
194       assertNotNull(preferenceMD);
195       assertEquals(name, preferenceMD.getName());
196       assertEquals(readOnly, preferenceMD.getReadOnly());
197       assertNotNull(preferenceMD.getValues());
198       assertEquals(values.length, preferenceMD.getValues().length);
199       for (int i = 0;i < values.length;i++)
200       {
201          assertEquals(values[i], preferenceMD.getValues()[i]);
202       }
203    }
204
205    private void checkParameter(ParameterMetaData parameterMD, String JavaDoc[] descriptions, Locale JavaDoc[] locales, String JavaDoc name, String JavaDoc value)
206    {
207       assertNotNull(parameterMD);
208       assertNotNull(parameterMD.getDescriptions());
209       checkDescriptions(parameterMD.getDescriptions(), descriptions, locales);
210       assertEquals(name, parameterMD.getName());
211       assertEquals(value, parameterMD.getValue());
212    }
213
214    private void checkDescriptions(Map JavaDoc map, String JavaDoc[] descriptions, Locale JavaDoc[] locales)
215    {
216       assertNotNull(map);
217       assertEquals(descriptions.length, map.size());
218       for (int i = 0;i < descriptions.length;i++)
219       {
220          checkDescription((DescriptionMetaData)map.get(locales[i]), descriptions[i], locales[i]);
221       }
222    }
223
224    private void checkDescription(DescriptionMetaData descriptionMD, String JavaDoc description, Locale JavaDoc locale)
225    {
226       assertNotNull(descriptionMD);
227       assertEquals(description, descriptionMD.getDescription());
228       assertEquals(locale, descriptionMD.getLocale());
229    }
230
231    private void checkContentType(PortletMetaData portletMD, String JavaDoc contentType, PortletMode[] portletModes)
232    {
233       ContentTypeMetaData contentTypeMD = null;
234       for (Iterator JavaDoc i = portletMD.getContentTypes().iterator();i.hasNext();)
235       {
236          ContentTypeMetaData currentContentTypeMD = (ContentTypeMetaData)i.next();
237          if (currentContentTypeMD.getContentType().equals(contentType))
238          {
239             contentTypeMD = currentContentTypeMD;
240             break;
241          }
242       }
243       assertNotNull(contentTypeMD);
244       assertEquals(contentTypeMD.getContentType(), contentType);
245       for (int i = 0;i < portletModes.length;i++)
246       {
247          assertTrue(contentTypeMD.getModes().contains(portletModes[i]));
248       }
249       assertEquals(portletModes.length, contentTypeMD.getModes().size());
250    }
251
252 }
253
Popular Tags