001: /******************************************************************************
002: * JBoss, a division of Red Hat *
003: * Copyright 2006, Red Hat Middleware, LLC, and individual *
004: * contributors as indicated by the @authors tag. See the *
005: * copyright.txt in the distribution for a full listing of *
006: * individual contributors. *
007: * *
008: * This is free software; you can redistribute it and/or modify it *
009: * under the terms of the GNU Lesser General Public License as *
010: * published by the Free Software Foundation; either version 2.1 of *
011: * the License, or (at your option) any later version. *
012: * *
013: * This software is distributed in the hope that it will be useful, *
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of *
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
016: * Lesser General Public License for more details. *
017: * *
018: * You should have received a copy of the GNU Lesser General Public *
019: * License along with this software; if not, write to the Free *
020: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
021: * 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
022: ******************************************************************************/package org.jboss.portal.test.theme.tmp;
023:
024: import junit.framework.TestCase;
025: import org.jboss.portal.common.util.CLResourceLoader;
026: import org.jboss.portal.common.util.LoaderResource;
027: import org.jboss.portal.common.util.MediaType;
028: import org.jboss.portal.theme.LayoutException;
029: import org.jboss.portal.theme.PortalLayout;
030: import org.jboss.portal.theme.PortalRenderSet;
031: import org.jboss.portal.theme.RuntimeContext;
032: import org.jboss.portal.theme.ServerRegistrationID;
033: import org.jboss.portal.theme.deployment.jboss.PortalLayoutMetaDataFactory;
034: import org.jboss.portal.theme.deployment.jboss.RenderSetMetaDataFactory;
035: import org.jboss.portal.theme.impl.LayoutServiceImpl;
036: import org.jboss.portal.theme.impl.render.div.DivDecorationRenderer;
037: import org.jboss.portal.theme.impl.render.div.DivPortletRenderer;
038: import org.jboss.portal.theme.impl.render.div.DivRegionRenderer;
039: import org.jboss.portal.theme.impl.render.div.DivWindowRenderer;
040: import org.jboss.portal.theme.impl.render.dynamic.DynaDecorationRenderer;
041: import org.jboss.portal.theme.impl.render.dynamic.DynaPortletRenderer;
042: import org.jboss.portal.theme.impl.render.dynamic.DynaRegionRenderer;
043: import org.jboss.portal.theme.impl.render.dynamic.DynaWindowRenderer;
044: import org.jboss.portal.theme.impl.render.empty.EmptyDecorationRenderer;
045: import org.jboss.portal.theme.impl.render.empty.EmptyPortletRenderer;
046: import org.jboss.portal.theme.impl.render.empty.EmptyRegionRenderer;
047: import org.jboss.portal.theme.impl.render.empty.EmptyWindowRenderer;
048: import org.jboss.portal.theme.metadata.PortalLayoutMetaData;
049: import org.jboss.portal.theme.metadata.RenderSetMetaData;
050: import org.jboss.xb.binding.Unmarshaller;
051: import org.jboss.xb.binding.UnmarshallerFactory;
052:
053: import java.util.Iterator;
054: import java.util.List;
055:
056: /**
057: * @author <a href="mailto:mholzner@novell.com">Martin Holzner</a>
058: * @author <a href="mailto:roy@jboss.org">Roy Russo</a>
059: * @version $Revision: 8784 $
060: */
061: public class TestLayoutServiceImpl extends TestCase {
062: private LayoutServiceImpl layoutService;
063: private RuntimeContext runtimeContext;
064: private List portalLayouts;
065: private List renderSets;
066:
067: protected void setUp() throws Exception {
068: layoutService = new LayoutServiceImpl();
069:
070: layoutService.create();
071: layoutService.start();
072:
073: runtimeContext = TestHelper.createRuntimeContext();
074:
075: LoaderResource res = new CLResourceLoader()
076: .getResource("xml/portal-layouts.xml");
077: assertNotNull("Layout xml could not be loaded", res);
078: Unmarshaller unmarshaller = null;
079: unmarshaller = UnmarshallerFactory.newInstance()
080: .newUnmarshaller();
081: portalLayouts = (List) unmarshaller.unmarshal(res
082: .asInputStream(), new PortalLayoutMetaDataFactory(),
083: null);
084:
085: for (Iterator i = portalLayouts.iterator(); i.hasNext();) {
086: PortalLayoutMetaData layoutMD = (PortalLayoutMetaData) i
087: .next();
088: layoutService.addLayout(runtimeContext, layoutMD);
089: }
090:
091: res = new CLResourceLoader()
092: .getResource("xml/portal-renderSet.xml");
093: unmarshaller = UnmarshallerFactory.newInstance()
094: .newUnmarshaller();
095: renderSets = (List) unmarshaller.unmarshal(res.asInputStream(),
096: new RenderSetMetaDataFactory(), null);
097: for (Iterator i = renderSets.iterator(); i.hasNext();) {
098: RenderSetMetaData renderSetMD = (RenderSetMetaData) i
099: .next();
100: layoutService.addRenderSet(runtimeContext, renderSetMD);
101: }
102: }
103:
104: protected void tearDown() throws Exception {
105: layoutService = null;
106: renderSets = null;
107: }
108:
109: public void testCreateLayouts() {
110: try {
111: assertTrue(layoutService.getLayouts().size() == 3);
112:
113: PortalLayout layout = layoutService.getLayout("generic",
114: true);
115: assertTrue(layout.getLayoutInfo().getName().equals(
116: "generic"));
117: layout = layoutService.getLayout("nodesk", true);
118: assertTrue(layout.getLayoutInfo().getName()
119: .equals("nodesk"));
120: layout = layoutService.getLayout("phalanx", true);
121: assertTrue(layout.getLayoutInfo().getName().equals(
122: "phalanx"));
123: } catch (Exception e) {
124: assertFalse("unexpected exception occured", true);
125: e.printStackTrace();
126: }
127: }
128:
129: public void testGetLayoutInfos() {
130: PortalLayout layout = layoutService.getLayout("nodesk", true);
131: assertTrue(layout.getLayoutInfo().getName().equals("nodesk"));
132: assertTrue(layout.getLayoutInfo().getURI().equals(
133: "/nodesk/index.jsp"));
134: assertTrue(layout.getLayoutInfo().getRegionNames().size() == 2);
135:
136: layout = layoutService.getLayout("phalanx", true);
137: assertTrue(layout.getLayoutInfo().getName().equals("phalanx"));
138: assertNotNull(layout.getLayoutInfo().getURI());
139:
140: layout = layoutService.getLayout("generic", true);
141: assertTrue(layout.getLayoutInfo().getName().equals("generic"));
142: assertTrue(layout.getLayoutInfo().getRegionNames().size() == 3);
143: List regions = layout.getLayoutInfo().getRegionNames();
144: assertTrue(regions.get(0).equals("left"));
145: assertTrue(regions.get(1).equals("center"));
146: assertTrue(regions.get(2).equals("navigation"));
147: }
148:
149: public void testRemoveLayouts() {
150: try {
151: assertNotNull(layoutService.getLayout("generic", false));
152: layoutService.removeLayouts(runtimeContext.getAppId());
153: assertNull(layoutService.getLayout("generic", false));
154:
155: for (Iterator i = portalLayouts.iterator(); i.hasNext();) {
156: PortalLayoutMetaData layoutMD = (PortalLayoutMetaData) i
157: .next();
158: layoutService.addLayout(runtimeContext, layoutMD);
159: }
160:
161: ServerRegistrationID id = ServerRegistrationID
162: .createPortalLayoutID(runtimeContext.getAppId(),
163: "generic");
164: layoutService.removeLayout(id);
165: assertNull(layoutService.getLayout("generic", false));
166: } catch (Exception e) {
167: assertFalse("unexpected exception occured", true);
168: e.printStackTrace();
169: }
170: }
171:
172: public void testCreateRenderSets() {
173: PortalRenderSet renderSet = layoutService.getRenderSet(
174: "divRenderer", MediaType.HTML);
175: assertEquals(renderSet.getName(), "divRenderer");
176:
177: renderSet = layoutService.getRenderSet("emptyRenderer",
178: MediaType.HTML);
179: assertEquals(renderSet.getName(), "emptyRenderer");
180: }
181:
182: public void testGetRenderSetInfos() throws Exception {
183: PortalRenderSet renderSet = layoutService.getRenderSet(
184: "divRenderer", MediaType.HTML);
185: assertEquals(renderSet.getName(), "divRenderer");
186: assertTrue(renderSet.isAjaxEnabled());
187: assertEquals(renderSet.getDecorationRenderer().getClass(),
188: new DynaDecorationRenderer(new DivDecorationRenderer())
189: .getClass());
190: assertEquals(renderSet.getPortletRenderer().getClass(),
191: new DynaPortletRenderer(new DivPortletRenderer())
192: .getClass());
193: assertEquals(renderSet.getRegionRenderer().getClass(),
194: new DynaRegionRenderer(new DivRegionRenderer())
195: .getClass());
196: assertEquals(renderSet.getWindowRenderer().getClass(),
197: new DynaWindowRenderer(new DivWindowRenderer())
198: .getClass());
199:
200: renderSet = layoutService.getRenderSet("emptyRenderer",
201: MediaType.HTML);
202: assertEquals(renderSet.getName(), "emptyRenderer");
203: assertFalse(renderSet.isAjaxEnabled());
204: assertEquals(renderSet.getDecorationRenderer().getClass(),
205: new EmptyDecorationRenderer().getClass());
206: assertEquals(renderSet.getPortletRenderer().getClass(),
207: new EmptyPortletRenderer().getClass());
208: assertEquals(renderSet.getRegionRenderer().getClass(),
209: new EmptyRegionRenderer().getClass());
210: assertEquals(renderSet.getWindowRenderer().getClass(),
211: new EmptyWindowRenderer().getClass());
212: }
213:
214: public void testRemoveRenderSets() throws LayoutException {
215: assertNotNull(layoutService.getRenderSet("divRenderer",
216: MediaType.HTML));
217: ServerRegistrationID id = ServerRegistrationID
218: .createPortalLayoutID(runtimeContext.getAppId(),
219: "divRenderer");
220: layoutService.removeRenderSets(id.getName(0));
221: assertNull(layoutService.getRenderSet("divRenderer",
222: MediaType.HTML));
223: }
224: }
|