1 9 package org.jboss.portal.core.deployment.jboss; 10 11 import org.jboss.deployment.DeploymentException; 12 import org.jboss.portal.common.util.XML; 13 import org.jboss.portal.core.metadata.PageMetaData; 14 import org.jboss.portal.core.metadata.PageSetMetaData; 15 import org.jboss.portal.core.metadata.WindowLocationMetaData; 16 import org.jboss.portal.server.ServerManager; 17 import org.jboss.portal.server.ServerObjectID; 18 import org.jboss.portal.server.metadata.PortalMetaData; 19 import org.jboss.portal.server.metadata.WindowMetaData; 20 import org.jboss.portal.server.util.ServerObjectIDEditor; 21 import org.w3c.dom.Element ; 22 23 import java.net.URL ; 24 import java.util.List ; 25 26 30 public class PortalDeployment extends org.jboss.portal.server.deployment.jboss.PortalDeployment 31 { 32 33 private PageMetaData[] pageMDs; 34 private WindowMetaData[] windowMDs; 35 36 public PortalDeployment(ServerManager serverManager, URL url) 37 { 38 super(serverManager, url); 39 } 40 41 protected PortalMetaData buildPortalMetaData(Element portalElt) throws Exception 42 { 43 PortalMetaData portalMD = super.buildPortalMetaData(portalElt); 44 Element pagesElt = XML.getUniqueChild(portalElt, "pages", true); 45 PageSetMetaData pageSetMetaData = new PageSetMetaData(); 46 String defaultPageName = XML.asString(XML.getUniqueChild(pagesElt, "default-page", true)); 47 pageSetMetaData.setDefaultPageName(defaultPageName); 48 portalMD.addPlugin("PAGES", pageSetMetaData); 49 50 List pageElts = XML.getChildren(pagesElt, "page"); 51 pageMDs = new PageMetaData[pageElts.size()]; 52 53 int nWindows = 0; 54 for (int i = 0; i < pageElts.size(); i++) 55 { 56 Element pageElt = (Element )pageElts.get(i); 57 List windowElts = XML.getChildren(pageElt, "window"); 58 nWindows += windowElts.size(); 59 } 60 windowMDs = new WindowMetaData[nWindows]; 61 62 int idx = 0; 63 for (int i = 0; i < pageElts.size(); i++) 64 { 65 Element pageElt = (Element )pageElts.get(i); 66 PageMetaData pageMD = buildPageMetaData(pageElt, portalMD.getName()); 67 pageMDs[i] = pageMD; 68 69 List windowElts = XML.getChildren(pageElt, "window"); 70 for (int j = 0; j < windowElts.size(); j++) 71 { 72 Element windowElt = (Element )windowElts.get(j); 73 WindowMetaData windowMD = buildWindowMetaData(portalMD.getName(), windowElt); 74 windowMDs[idx++] = windowMD; 75 } 76 } 77 78 for (int i = 0; i < pageMDs.length; i++) 79 { 80 PageMetaData pageMD = pageMDs[i]; 81 getServerManager().deploy(pageMD); 82 } 83 84 for (int i = 0; i < windowMDs.length; i++) 85 { 86 WindowMetaData windowMD = windowMDs[i]; 87 getServerManager().deploy(windowMD); 88 } 89 90 return portalMD; 91 } 92 93 public void destroy() throws DeploymentException 94 { 95 for (int i = 0; i < windowMDs.length; i++) 96 { 97 WindowMetaData windowMD = windowMDs[i]; 98 getServerManager().undeploy(windowMD.getID()); 99 } 100 for (int i = 0; i < pageMDs.length; i++) 101 { 102 PageMetaData pageMD = pageMDs[i]; 103 getServerManager().undeploy(pageMD.getID()); 104 } 105 super.destroy(); 106 } 107 108 public static WindowMetaData buildWindowMetaData(String portalName, Element windowElt) 109 { 110 ServerObjectIDEditor editor = new ServerObjectIDEditor(); 111 String windowName = XML.asString(XML.getUniqueChild(windowElt, "window-name", true)); 112 String instanceRef = XML.asString(XML.getUniqueChild(windowElt, "instance-ref", true)); 113 ServerObjectID serverID = ServerObjectID.createPortalID(portalName); 114 editor.setAsText("instance." + instanceRef); 115 ServerObjectID instanceID = (ServerObjectID)editor.getValue(); 116 WindowMetaData windowMD = new WindowMetaData(windowName, serverID, instanceID); 117 return windowMD; 118 } 119 120 public static PageMetaData buildPageMetaData(Element pageElt, String portalName) 121 { 122 String pageName = XML.asString(XML.getUniqueChild(pageElt, "page-name", true)); 123 PageMetaData pageMetaData = new PageMetaData(portalName, pageName); 124 Element layout = XML.getUniqueChild(pageElt, "layout-name", false); 125 if (layout != null) 126 { 127 pageMetaData.setLayoutName(XML.asString(layout)); 128 } 129 List windowElts = XML.getChildren(pageElt, "window"); 130 for (int j = 0; j < windowElts.size(); j++) 131 { 132 Element windowElt = (Element )windowElts.get(j); 133 try 134 { 135 buildWindowLocationMetaData(portalName, pageMetaData, windowElt); 136 } 137 catch (Exception e) 138 { 139 e.printStackTrace(); 140 } 141 } 142 return pageMetaData; 143 } 144 145 public static void buildWindowLocationMetaData(String portalName, PageMetaData pageMD, Element windowElt) throws Exception 146 { 147 String windowName = XML.asString(XML.getUniqueChild(windowElt, "window-name", true)); 149 150 154 String region = XML.asString(XML.getUniqueChild(windowElt, "region", true)); 156 int height = Integer.parseInt(XML.asString(XML.getUniqueChild(windowElt, "height", true))); 157 158 ServerObjectID windowID = ServerObjectID.createWindowID(portalName, windowName); 160 161 WindowLocationMetaData pwmd = new WindowLocationMetaData(windowID, region, height); 163 pageMD.addWindow(pwmd); 164 173 } 174 } 175 | Popular Tags |