1 9 package org.jboss.portal.core.deployment.jboss; 10 11 import org.jboss.portal.common.util.XML; 12 import org.jboss.portal.common.util.Tools; 13 import org.jboss.portal.common.plugin.PluginMetaData; 14 import org.jboss.portal.common.transaction.Transactions; 15 import org.jboss.portal.portlet.metadata.PortletMetaData; 16 import org.jboss.portal.core.metadata.ModelMetaData; 17 import org.jboss.portal.core.metadata.PermissionDescriptionMetaData; 18 import org.jboss.portal.core.metadata.SchemeMetaData; 19 import org.jboss.portal.core.metadata.ItemMetaData; 20 import org.jboss.portal.core.metadata.PermissionMetaData; 21 import org.jboss.portal.core.metadata.TransactionMetaData; 22 import org.jboss.portal.core.CoreConstants; 23 import org.jboss.portal.core.security.AuthorizationRealm; 24 import org.jboss.portal.server.ServerManager; 25 import org.jboss.portal.server.deployment.PortalWebApp; 26 import org.jboss.deployment.DeploymentException; 27 import org.w3c.dom.Element ; 28 import org.w3c.dom.Document ; 29 30 import javax.servlet.ServletContext ; 31 import java.net.URL ; 32 import java.io.InputStream ; 33 import java.util.HashSet ; 34 import java.util.Map ; 35 import java.util.HashMap ; 36 import java.util.List ; 37 38 42 public class PortletAppDeployment extends org.jboss.portal.portlet.deployment.jboss.PortletAppDeployment 43 { 44 45 public PortletAppDeployment(ServerManager serverManager, URL url, PortalWebApp pwa, String appName) 46 { 47 super(serverManager, url, pwa, appName); 48 } 49 50 protected PortletMetaData buildPortletMetaData(Element portletElt) 51 { 52 PortletMetaData portletMD = super.buildPortletMetaData(portletElt); 54 55 if (jbossPortletElts != null) 57 { 58 Element jbossPortletElt = (Element )jbossPortletElts.get((portletMD.getName())); 59 if (jbossPortletElt != null) 60 { 61 72 PluginMetaData securityMD = buildSecurityMetaData(jbossPortletElt); 74 if (securityMD != null) 75 { 76 portletMD.addPlugin(CoreConstants.REALM_KEY, securityMD); 77 log.debug("Configured security for portlet " + portletMD.getName()); 78 } 79 80 TransactionMetaData transactionMD = buildTransactionMetaData(jbossPortletElt); 81 portletMD.addPlugin("Transaction", transactionMD); 82 } 83 } 84 85 return portletMD; 87 } 88 89 public static TransactionMetaData buildTransactionMetaData(Element jbossPortletElt) 90 { 91 TransactionMetaData transactionMD = new TransactionMetaData(); 92 Transactions.Type txType = Transactions.TYPE_NOT_SUPPORTED; 93 Element transactionElt = XML.getUniqueChild(jbossPortletElt, "transaction", false); 94 if (transactionElt != null) 95 { 96 Element transAttributeElt = XML.getUniqueChild(transactionElt, "trans-attribute", true); 97 String transAttribute = XML.asString(transAttributeElt); 98 if ("Required".equals(transAttribute)) 99 { 100 txType = Transactions.TYPE_REQUIRED; 101 } 102 else if ("RequiresNew".equals(transAttribute)) 103 { 104 txType = Transactions.TYPE_REQUIRES_NEW; 105 } 106 else if ("Mandatory".equals(transAttribute)) 107 { 108 txType = Transactions.TYPE_MANDATORY; 109 } 110 else if ("Never".equals(transAttribute)) 111 { 112 txType = Transactions.TYPE_NEVER; 113 } 114 else if ("Supports".equals(transAttribute)) 115 { 116 txType = Transactions.TYPE_SUPPORTS; 117 } 118 } 119 transactionMD.setTxType(txType); 120 return transactionMD; 121 } 122 123 public static PluginMetaData buildSecurityMetaData(Element jbossPortletElt) 124 { 125 PluginMetaData securityMD = null; 127 128 Element securityElt = XML.getUniqueChild(jbossPortletElt, "security", false); 130 if (securityElt != null) 131 { 132 Element modelElt = XML.getUniqueChild(securityElt, "model", false); 133 if (modelElt != null) 134 { 135 ModelMetaData modelMD = new ModelMetaData(); 136 modelMD.setPermissionDescriptions(new HashSet ()); 137 138 Element contentProviderClassElt = XML.getUniqueChild(modelElt, "content-provider-class", false); 139 if (contentProviderClassElt != null) 140 { 141 String contentProviderClass = XML.asString(contentProviderClassElt); 142 modelMD.setContentProviderClass(contentProviderClass); 143 } 144 145 List permissionDescriptionElts = XML.getChildren(modelElt, "permission-description"); 146 for (int j = 0;j < permissionDescriptionElts.size();j++) 147 { 148 Element permissionDescriptionElt = (Element )permissionDescriptionElts.get(j); 149 Element descriptionElt = XML.getUniqueChild(permissionDescriptionElt, "description", false); 150 String permissionName = XML.asString(XML.getUniqueChild(permissionDescriptionElt, "permission-name", true)); 151 String description = descriptionElt != null ? XML.asString(descriptionElt) : "no description"; 152 153 PermissionDescriptionMetaData permissionDescriptionMD = new PermissionDescriptionMetaData(permissionName); 154 permissionDescriptionMD.setDescription(description); 155 permissionDescriptionMD.setImpliedSet(new HashSet ()); 156 157 List impliesElts = XML.getChildren(permissionDescriptionElt, "implies"); 158 for (int k = 0;k < impliesElts.size();k++) 159 { 160 Element impliesElt = (Element )impliesElts.get(k); 161 String implies = XML.asString(impliesElt); 162 permissionDescriptionMD.getImpliedSet().add(implies); 163 } 164 165 modelMD.getPermissionDescriptions().add(permissionDescriptionMD); 166 } 167 168 Element schemeElt = XML.getUniqueChild(modelElt, "scheme", true); 169 SchemeMetaData schemeMD = buildSchemeMetaData(schemeElt); 170 171 modelMD.setScheme(schemeMD); 172 securityMD = modelMD; 173 } 174 } 175 return securityMD; 176 } 177 178 public static SchemeMetaData buildSchemeMetaData(Element schemeElt) 179 { 180 SchemeMetaData schemeMD = new SchemeMetaData("default"); 181 schemeMD.setItems(new HashSet ()); 182 183 List itemElts = XML.getChildren(schemeElt, "item"); 184 for (int j = 0;j < itemElts.size();j++) 185 { 186 Element itemElt = (Element )itemElts.get(j); 187 Element pathElt = (Element )XML.getUniqueChild(itemElt, "path", true); 188 String path = XML.asString(pathElt); 189 190 ItemMetaData itemMD = new ItemMetaData(path); 191 itemMD.setPermissions(new HashSet ()); 192 193 List permissionElts = XML.getChildren(itemElt, "permission"); 194 for (int k = 0;k < permissionElts.size();k++) 195 { 196 Element permissionElt = (Element )permissionElts.get(k); 197 Element permissionNameElt = (Element )XML.getUniqueChild(permissionElt, "permission-name", true); 198 String permissionName = XML.asString(permissionNameElt); 199 200 PermissionMetaData permissionMD = new PermissionMetaData(permissionName); 201 permissionMD.setRoleNames(new HashSet ()); 202 203 List roleNameElts = XML.getChildren(permissionElt, "role-name"); 204 Element uncheckedElt = (Element )XML.getUniqueChild(permissionElt, "unchecked", false); 205 206 if (uncheckedElt != null) 207 { 208 permissionMD.getRoleNames().add(AuthorizationRealm.ANONYMOUS_ROLE); 210 } 211 else 212 { 213 for (int l = 0;l < roleNameElts.size();l++) 214 { 215 Element roleNameElt = (Element )roleNameElts.get(l); 216 String roleName = XML.asString(roleNameElt); 217 permissionMD.getRoleNames().add(roleName); 218 } 219 } 220 itemMD.getPermissions().add(permissionMD); 221 } 222 223 schemeMD.getItems().add(itemMD); 224 } 225 return schemeMD; 226 } 227 } 228 | Popular Tags |