1 9 package org.jboss.portal.server.deployment.jboss; 10 11 import org.jboss.deployment.DeploymentException; 12 import org.jboss.portal.server.metadata.PortalMetaData; 13 import org.jboss.portal.server.metadata.ModesMetaData; 14 import org.jboss.portal.server.metadata.WindowStatesMetaData; 15 import org.jboss.portal.server.PortalConstants; 16 import org.jboss.portal.server.ServerManager; 17 import org.jboss.portal.common.util.XML; 18 import org.jboss.portal.common.util.Tools; 19 import org.w3c.dom.Element ; 20 import org.w3c.dom.Document ; 21 import org.apache.log4j.Logger; 22 23 import javax.xml.parsers.DocumentBuilder ; 24 import java.net.URL ; 25 import java.util.Set ; 26 import java.util.Map ; 27 import java.util.HashMap ; 28 import java.util.List ; 29 import java.util.Collections ; 30 import java.io.InputStream ; 31 32 36 public class PortalDeployment extends Deployment 37 { 38 39 40 private Logger log = Logger.getLogger(PortalDeployment.class); 41 42 43 private PortalMetaData portalMD; 44 45 public PortalDeployment(ServerManager serverManager, URL url) 46 { 47 super(serverManager, url); 48 } 49 50 public void create() throws DeploymentException 51 { 52 InputStream in = null; 53 try 54 { 55 log.debug("Loading portal metadata from " + url); 57 in = url.openStream(); 58 DocumentBuilder builder = XML.getDocumentBuilderFactory().newDocumentBuilder(); 59 Document doc = builder.parse(in); 60 Element portalElt = doc.getDocumentElement(); 61 62 log.debug("Building portal metadata"); 64 portalMD = buildPortalMetaData(portalElt); 65 66 log.debug("Building portal "+ portalMD.getName()); 68 getServerManager().deploy(portalMD); 69 } 70 catch (Exception e) 71 { 72 throw new DeploymentException(e); 73 } 74 finally 75 { 76 Tools.safeClose(in); 77 } 78 } 79 80 public void start() throws DeploymentException 81 { 82 } 83 84 public void stop() throws DeploymentException 85 { 86 } 87 88 public void destroy() throws DeploymentException 89 { 90 if (portalMD != null) 91 { 92 getServerManager().undeploy(portalMD.getID()); 93 } 94 } 95 96 99 protected PortalMetaData buildPortalMetaData(Element portalElt) throws Exception 100 { 101 String portalName = XML.asString(XML.getUniqueChild(portalElt, "portal-name", true)); 102 PortalMetaData portalMD = new PortalMetaData(portalName); 103 104 Element supportedModesElt = XML.getUniqueChild(portalElt, "supported-modes", false); 106 if (supportedModesElt != null) 107 { 108 buildSupportedModes(portalMD, supportedModesElt); 109 } 110 111 Element supportedWindowStatesElt = XML.getUniqueChild(portalElt, "supported-window-states", false); 113 if (supportedWindowStatesElt != null) 114 { 115 buildSupportedWindowStates(portalMD, supportedWindowStatesElt); 116 } 117 118 Element propertiesElt = XML.getUniqueChild(portalElt, "properties", false); 120 if (propertiesElt != null) 121 { 122 log.debug("Found properties"); 123 Map properties = buildProperties(propertiesElt); 124 portalMD.setProperties(properties); 125 } 126 else 127 { 128 portalMD.setProperties(Collections.EMPTY_MAP); 129 } 130 131 return portalMD; 133 } 134 135 protected Map buildProperties(Element propertiesElt) 136 { 137 Map properties = new HashMap (); 138 List propertyElts = XML.getChildren(propertiesElt, "property"); 139 for (int i = 0;i < propertyElts.size();i++) 140 { 141 Element propertyElt = (Element )propertyElts.get(i); 142 Element nameElt = XML.getUniqueChild(propertyElt, "name", true); 143 Element valueElt = XML.getUniqueChild(propertyElt, "value", true); 144 String name = XML.asString(nameElt); 145 String value = XML.asString(valueElt); 146 147 log.debug("Found property " + name + " = " + value); 149 properties.put(name, value); 150 } 151 return properties; 152 } 153 154 protected void buildSupportedModes(PortalMetaData portalMD, Element supportedModesElt) 155 { 156 ModesMetaData modesMD = (ModesMetaData)portalMD.getPlugin(PortalConstants.PLUGIN_MODES); 157 List modeElts = XML.getChildren(supportedModesElt, "mode"); 158 for (int i = 0;i < modeElts.size();i++) 159 { 160 Element modeElt = (Element )modeElts.get(i); 161 String modeAsString = XML.asString(modeElt); 162 Set modes = modesMD.getModes(); 163 modes.add(modeAsString); 164 } 165 } 166 167 protected void buildSupportedWindowStates(PortalMetaData portalMD, Element supportedWindowStatesElt) 168 { 169 WindowStatesMetaData modesMD = (WindowStatesMetaData)portalMD.getPlugin(PortalConstants.PLUGIN_WINDOW_STATES); 170 List windowState = XML.getChildren(supportedWindowStatesElt, "window-state"); 171 for (int i = 0;i < windowState.size();i++) 172 { 173 Element windowStateElt = (Element )windowState.get(i); 174 String windowStateAsString = XML.asString(windowStateElt); 175 modesMD.getWindowStates().add(windowStateAsString); 176 } 177 } 178 } 179 | Popular Tags |