1 9 package org.jboss.portal.core.deployment.jboss; 10 11 import org.jboss.portal.server.deployment.jboss.Deployment; 12 import org.jboss.portal.server.deployment.PortalWebApp; 13 import org.jboss.portal.server.metadata.InstanceMetaData; 14 import org.jboss.portal.server.metadata.PreferencesMetaData; 15 import org.jboss.portal.server.metadata.PreferenceMetaData; 16 import org.jboss.portal.server.ServerObjectID; 17 import org.jboss.portal.server.PortalConstants; 18 import org.jboss.portal.server.ServerManager; 19 import org.jboss.portal.common.util.XML; 20 import org.jboss.portal.common.util.Tools; 21 import org.jboss.portal.core.metadata.AccessControllerMetaData; 22 import org.jboss.deployment.DeploymentException; 23 import org.w3c.dom.Element ; 24 import org.w3c.dom.Document ; 25 import org.apache.log4j.Logger; 26 27 import javax.xml.parsers.DocumentBuilder ; 28 import java.net.URL ; 29 import java.io.InputStream ; 30 import java.util.Iterator ; 31 import java.util.List ; 32 33 37 public class InstanceDeployment extends Deployment 38 { 39 40 private InstanceMetaData[] instanceMDs; 41 42 public InstanceDeployment(ServerManager serverManager, URL url, PortalWebApp pwa, String appName) 43 { 44 super(serverManager, url, pwa, appName); 45 } 46 47 public void create() throws DeploymentException 48 { 49 InputStream in = null; 50 try 51 { 52 in = url.openStream(); 53 DocumentBuilder builder = XML.getDocumentBuilderFactory().newDocumentBuilder(); 54 Document doc = builder.parse(in); 55 Element instancesElt = doc.getDocumentElement(); 56 List instanceElts = XML.getChildren(instancesElt, "instance"); 57 instanceMDs = new InstanceMetaData[instanceElts.size()]; 58 for (int i = 0;i < instanceElts.size();i++) 59 { 60 Element instanceElt = (Element )instanceElts.get(i); 61 instanceMDs[i] = buildInstanceMetaData(instanceElt, appName, log); 62 } 63 64 for (int i = 0; i < instanceMDs.length; i++) 65 { 66 InstanceMetaData instanceMD = instanceMDs[i]; 67 getServerManager().deploy(instanceMD); 68 } 69 } 70 catch (Exception e) 71 { 72 e.printStackTrace(); 73 } 74 finally 75 { 76 Tools.safeClose(in); 77 } 78 } 79 80 public void destroy() throws DeploymentException 81 { 82 for (int i = 0; i < instanceMDs.length; i++) 83 { 84 InstanceMetaData instanceMD = instanceMDs[i]; 85 getServerManager().undeploy(instanceMD.getID()); 86 } 87 } 88 89 public static InstanceMetaData buildInstanceMetaData(Element instanceElt, String appName, Logger log) 90 { 91 String instanceName = XML.asString(XML.getUniqueChild(instanceElt, "instance-name", true)); 92 String componentRef = XML.asString(XML.getUniqueChild(instanceElt, "component-ref", true)); 93 94 ServerObjectID componentID = ServerObjectID.createComponentID(appName, componentRef); 96 97 InstanceMetaData instanceMD = new InstanceMetaData(instanceName, componentID); 99 100 AccessControllerMetaData accessControllerMD = new AccessControllerMetaData(); 102 103 Element securityElt = XML.getUniqueChild(instanceElt, "security", false); 105 if (securityElt != null) 106 { 107 Element authorizedRolesElt = XML.getUniqueChild(securityElt, "authorized-roles", false); 109 if (authorizedRolesElt != null) 110 { 111 log.debug("Found authorized roles section for " + instanceMD); 112 accessControllerMD.setUnchecked(false); 113 List roleNameElts = XML.getChildren(authorizedRolesElt, "role-name"); 114 for (int i = 0;i < roleNameElts.size();i++) 115 { 116 Element roleNameElt = (Element )roleNameElts.get(i); 117 String role = XML.asString(roleNameElt); 118 log.debug("Adding authorized role " + role + " for instance " + instanceMD); 119 accessControllerMD.addRole(role); 120 } 121 } 122 else 123 { 124 accessControllerMD.setUnchecked(true); 125 } 126 } 127 128 PreferencesMetaData preferencesMD = new PreferencesMetaData(); 130 Element preferencesElt = XML.getUniqueChild(instanceElt, "preferences", false); 131 if (preferencesElt != null) 132 { 133 for (Iterator i = PortletAppDeployment.buildPreferencesMetaData(preferencesElt).values().iterator();i.hasNext();) 134 { 135 PreferenceMetaData preferenceMD = (PreferenceMetaData)i.next(); 136 preferencesMD.addPreference(preferenceMD); 137 } 138 } 139 140 instanceMD.addPlugin("AC", accessControllerMD); 141 instanceMD.addPlugin(PortalConstants.PLUGIN_PREFS, preferencesMD); 142 143 return instanceMD; 144 } 145 } 146 | Popular Tags |