1 9 package org.jboss.portal.test.portlet; 10 11 import java.io.File ; 12 import java.util.Arrays ; 13 import java.util.Iterator ; 14 import java.util.Locale ; 15 import java.util.Map ; 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 ; 33 34 41 public class PortletMetaDataTestCase extends AbstractTestCase 42 { 43 44 public PortletMetaDataTestCase(String name) 45 { 46 super(name); 47 } 48 49 public void testPortlet1() 50 { 51 File portletDD = new File (resources, "test-war/WEB-INF/portlet.xml"); 53 assertTrue(portletDD.exists() && portletDD.isFile()); 54 Document doc = parseXML(portletDD); 55 56 PortletApplicationMetaData portletApplicationMD = new PortletApplicationMetaData("/test", null, "/test", null); 57 58 if (true) 61 { 62 throw new Error ("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 []{"first mode","premier mode"}, 70 new Locale []{Locale.ENGLISH,Locale.FRENCH}, 71 "configure"); 72 checkPortletMode( 73 (PortletModeMetaData)portletApplicationMD.getPortletModes().get(new PortletMode("inactive")), 74 new String []{"second mode"}, 75 new Locale []{Locale.ENGLISH}, 76 "inactive"); 77 78 checkWindowState( 79 (WindowStateMetaData)portletApplicationMD.getWindowStates().get(new WindowState("blur")), 80 new String []{"first state","premier etat"}, 81 new Locale []{Locale.ENGLISH,Locale.FRENCH}, 82 "blur"); 83 checkWindowState( 84 (WindowStateMetaData)portletApplicationMD.getWindowStates().get(new WindowState("black and white")), 85 new String []{"second state"}, 86 new Locale []{Locale.ENGLISH}, 87 "black and white"); 88 89 checkUserAttribute( 90 (UserAttributeMetaData)portletApplicationMD.getUserAttributes().get("att1"), 91 new String []{"first attribute","premier attribut"}, 92 new Locale []{Locale.ENGLISH,Locale.FRENCH}, 93 "att1"); 94 checkUserAttribute( 95 (UserAttributeMetaData)portletApplicationMD.getUserAttributes().get("att2"), 96 new String []{"second attribute"}, 97 new Locale []{Locale.ENGLISH}, 98 "att2"); 99 } 100 101 103 private void checkUserAttribute(UserAttributeMetaData userAttributeMD, String [] descriptions, Locale [] locales, String 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 [] descriptions, Locale [] locales, String 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 [] descriptions, Locale [] locales, String 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 []{"first parameter","premier parametre"}, 140 new Locale []{Locale.ENGLISH,Locale.FRENCH}, 141 "one", 142 "1"); 143 checkParameter((ParameterMetaData)portletMD.getParameters().get("two"), 144 new String []{"second parameter","deuxieme parametre"}, 145 new Locale []{Locale.ENGLISH,Locale.FRENCH}, 146 "two", 147 "2"); 148 149 assertEquals("0", portletMD.getExpirationCache()); 150 151 assertNotNull(portletMD.getContentTypes()); 152 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 []{Locale.ENGLISH,Locale.FRENCH}, 160 null, 161 "very long portlet title", 162 "short portlet title", 163 new String []{"a","b","c","d","e","f"}); 164 165 assertEquals(portletMD.getPreferences().getPreferenceValidator(), null); 166 checkPreference((PreferenceMetaData)portletMD.getPreferences().getPreference("one"), "one", new String []{"1"}, false); 167 checkPreference((PreferenceMetaData)portletMD.getPreferences().getPreference("two"), "two", new String []{"2"}, false); 168 checkPreference((PreferenceMetaData)portletMD.getPreferences().getPreference("three"), "three", new String []{"3"}, true); 169 checkPreference((PreferenceMetaData)portletMD.getPreferences().getPreference("all"), "all", new String []{"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 roleName, String roleLink) 176 { 177 assertEquals(securityRoleRefMD.getRoleName(), roleName); 178 assertEquals(securityRoleRefMD.getRoleLink(), roleLink); 179 } 180 181 private void checkLanguages(LanguagesMetaData languagesMD, Locale [] locales, String resourceBundle, String title, String shortTitle, String [] 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 name, String [] 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 [] descriptions, Locale [] locales, String name, String 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 map, String [] descriptions, Locale [] 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 description, Locale locale) 225 { 226 assertNotNull(descriptionMD); 227 assertEquals(description, descriptionMD.getDescription()); 228 assertEquals(locale, descriptionMD.getLocale()); 229 } 230 231 private void checkContentType(PortletMetaData portletMD, String contentType, PortletMode[] portletModes) 232 { 233 ContentTypeMetaData contentTypeMD = null; 234 for (Iterator 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 |