KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > portal > server > deployment > jboss > PortalDeployment


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.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 JavaDoc;
20 import org.w3c.dom.Document JavaDoc;
21 import org.apache.log4j.Logger;
22
23 import javax.xml.parsers.DocumentBuilder JavaDoc;
24 import java.net.URL JavaDoc;
25 import java.util.Set JavaDoc;
26 import java.util.Map JavaDoc;
27 import java.util.HashMap JavaDoc;
28 import java.util.List JavaDoc;
29 import java.util.Collections JavaDoc;
30 import java.io.InputStream JavaDoc;
31
32 /**
33  * @author <a HREF="mailto:julien@jboss.org">Julien Viet</a>
34  * @version $Revision: 1.5 $
35  */

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 JavaDoc url)
46    {
47       super(serverManager, url);
48    }
49
50    public void create() throws DeploymentException
51    {
52       InputStream JavaDoc in = null;
53       try
54       {
55          //
56
log.debug("Loading portal metadata from " + url);
57          in = url.openStream();
58          DocumentBuilder JavaDoc builder = XML.getDocumentBuilderFactory().newDocumentBuilder();
59          Document JavaDoc doc = builder.parse(in);
60          Element JavaDoc portalElt = doc.getDocumentElement();
61
62          //
63
log.debug("Building portal metadata");
64          portalMD = buildPortalMetaData(portalElt);
65
66          //
67
log.debug("Building portal "+ portalMD.getName());
68          getServerManager().deploy(portalMD);
69       }
70       catch (Exception JavaDoc 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    /**
97     * Parse the following XML elements : portal-name, supported-modes, supported-window-states.
98     */

99    protected PortalMetaData buildPortalMetaData(Element JavaDoc portalElt) throws Exception JavaDoc
100    {
101       String JavaDoc portalName = XML.asString(XML.getUniqueChild(portalElt, "portal-name", true));
102       PortalMetaData portalMD = new PortalMetaData(portalName);
103
104       //
105
Element JavaDoc supportedModesElt = XML.getUniqueChild(portalElt, "supported-modes", false);
106       if (supportedModesElt != null)
107       {
108          buildSupportedModes(portalMD, supportedModesElt);
109       }
110
111       //
112
Element JavaDoc supportedWindowStatesElt = XML.getUniqueChild(portalElt, "supported-window-states", false);
113       if (supportedWindowStatesElt != null)
114       {
115          buildSupportedWindowStates(portalMD, supportedWindowStatesElt);
116       }
117
118       //
119
Element JavaDoc propertiesElt = XML.getUniqueChild(portalElt, "properties", false);
120       if (propertiesElt != null)
121       {
122          log.debug("Found properties");
123          Map JavaDoc properties = buildProperties(propertiesElt);
124          portalMD.setProperties(properties);
125       }
126       else
127       {
128          portalMD.setProperties(Collections.EMPTY_MAP);
129       }
130
131       //
132
return portalMD;
133    }
134
135    protected Map JavaDoc buildProperties(Element JavaDoc propertiesElt)
136    {
137       Map JavaDoc properties = new HashMap JavaDoc();
138       List JavaDoc propertyElts = XML.getChildren(propertiesElt, "property");
139       for (int i = 0;i < propertyElts.size();i++)
140       {
141          Element JavaDoc propertyElt = (Element JavaDoc)propertyElts.get(i);
142          Element JavaDoc nameElt = XML.getUniqueChild(propertyElt, "name", true);
143          Element JavaDoc valueElt = XML.getUniqueChild(propertyElt, "value", true);
144          String JavaDoc name = XML.asString(nameElt);
145          String JavaDoc value = XML.asString(valueElt);
146
147          //
148
log.debug("Found property " + name + " = " + value);
149          properties.put(name, value);
150       }
151       return properties;
152    }
153
154    protected void buildSupportedModes(PortalMetaData portalMD, Element JavaDoc supportedModesElt)
155    {
156       ModesMetaData modesMD = (ModesMetaData)portalMD.getPlugin(PortalConstants.PLUGIN_MODES);
157       List JavaDoc modeElts = XML.getChildren(supportedModesElt, "mode");
158       for (int i = 0;i < modeElts.size();i++)
159       {
160          Element JavaDoc modeElt = (Element JavaDoc)modeElts.get(i);
161          String JavaDoc modeAsString = XML.asString(modeElt);
162          Set JavaDoc modes = modesMD.getModes();
163          modes.add(modeAsString);
164       }
165    }
166
167    protected void buildSupportedWindowStates(PortalMetaData portalMD, Element JavaDoc supportedWindowStatesElt)
168    {
169       WindowStatesMetaData modesMD = (WindowStatesMetaData)portalMD.getPlugin(PortalConstants.PLUGIN_WINDOW_STATES);
170       List JavaDoc windowState = XML.getChildren(supportedWindowStatesElt, "window-state");
171       for (int i = 0;i < windowState.size();i++)
172       {
173          Element JavaDoc windowStateElt = (Element JavaDoc)windowState.get(i);
174          String JavaDoc windowStateAsString = XML.asString(windowStateElt);
175          modesMD.getWindowStates().add(windowStateAsString);
176       }
177    }
178 }
179
Popular Tags