KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > portal > core > deployment > jboss > PortletAppDeployment


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.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 JavaDoc;
28 import org.w3c.dom.Document JavaDoc;
29
30 import javax.servlet.ServletContext JavaDoc;
31 import java.net.URL JavaDoc;
32 import java.io.InputStream JavaDoc;
33 import java.util.HashSet JavaDoc;
34 import java.util.Map JavaDoc;
35 import java.util.HashMap JavaDoc;
36 import java.util.List JavaDoc;
37
38 /**
39  * @author <a HREF="mailto:julien@jboss.org">Julien Viet</a>
40  * @version $Revision: 1.9 $
41  */

42 public class PortletAppDeployment extends org.jboss.portal.portlet.deployment.jboss.PortletAppDeployment
43 {
44
45    public PortletAppDeployment(ServerManager serverManager, URL JavaDoc url, PortalWebApp pwa, String JavaDoc appName)
46    {
47       super(serverManager, url, pwa, appName);
48    }
49
50    protected PortletMetaData buildPortletMetaData(Element JavaDoc portletElt)
51    {
52       // Build the base meta data
53
PortletMetaData portletMD = super.buildPortletMetaData(portletElt);
54
55       //
56
if (jbossPortletElts != null)
57       {
58          Element JavaDoc jbossPortletElt = (Element JavaDoc)jbossPortletElts.get((portletMD.getName()));
59          if (jbossPortletElt != null)
60          {
61 // Element portletPreferencesElt = XML.getSingleChild(jbossPortletElt, "portlet-preferences", false);
62
// if (portletPreferencesElt != null)
63
// {
64
// Element proxyClassElt = XML.getSingleChild(portletPreferencesElt, "proxy-class", false);
65
// if (proxyClassElt != null)
66
// {
67
// String proxyClass = XML.asString(proxyClassElt);
68
// // finish that
69
// }
70
// }
71

72             //
73
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       //
86
return portletMD;
87    }
88
89    public static TransactionMetaData buildTransactionMetaData(Element JavaDoc jbossPortletElt)
90    {
91       TransactionMetaData transactionMD = new TransactionMetaData();
92       Transactions.Type txType = Transactions.TYPE_NOT_SUPPORTED;
93       Element JavaDoc transactionElt = XML.getUniqueChild(jbossPortletElt, "transaction", false);
94       if (transactionElt != null)
95       {
96          Element JavaDoc transAttributeElt = XML.getUniqueChild(transactionElt, "trans-attribute", true);
97          String JavaDoc 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 JavaDoc jbossPortletElt)
124    {
125       //
126
PluginMetaData securityMD = null;
127
128       // Parse XMl content
129
Element JavaDoc securityElt = XML.getUniqueChild(jbossPortletElt, "security", false);
130       if (securityElt != null)
131       {
132          Element JavaDoc modelElt = XML.getUniqueChild(securityElt, "model", false);
133          if (modelElt != null)
134          {
135             ModelMetaData modelMD = new ModelMetaData();
136             modelMD.setPermissionDescriptions(new HashSet JavaDoc());
137
138             Element JavaDoc contentProviderClassElt = XML.getUniqueChild(modelElt, "content-provider-class", false);
139             if (contentProviderClassElt != null)
140             {
141                String JavaDoc contentProviderClass = XML.asString(contentProviderClassElt);
142                modelMD.setContentProviderClass(contentProviderClass);
143             }
144
145             List JavaDoc permissionDescriptionElts = XML.getChildren(modelElt, "permission-description");
146             for (int j = 0;j < permissionDescriptionElts.size();j++)
147             {
148                Element JavaDoc permissionDescriptionElt = (Element JavaDoc)permissionDescriptionElts.get(j);
149                Element JavaDoc descriptionElt = XML.getUniqueChild(permissionDescriptionElt, "description", false);
150                String JavaDoc permissionName = XML.asString(XML.getUniqueChild(permissionDescriptionElt, "permission-name", true));
151                String JavaDoc description = descriptionElt != null ? XML.asString(descriptionElt) : "no description";
152
153                PermissionDescriptionMetaData permissionDescriptionMD = new PermissionDescriptionMetaData(permissionName);
154                permissionDescriptionMD.setDescription(description);
155                permissionDescriptionMD.setImpliedSet(new HashSet JavaDoc());
156
157                List JavaDoc impliesElts = XML.getChildren(permissionDescriptionElt, "implies");
158                for (int k = 0;k < impliesElts.size();k++)
159                {
160                   Element JavaDoc impliesElt = (Element JavaDoc)impliesElts.get(k);
161                   String JavaDoc implies = XML.asString(impliesElt);
162                   permissionDescriptionMD.getImpliedSet().add(implies);
163                }
164
165                modelMD.getPermissionDescriptions().add(permissionDescriptionMD);
166             }
167
168             Element JavaDoc 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 JavaDoc schemeElt)
179    {
180       SchemeMetaData schemeMD = new SchemeMetaData("default");
181       schemeMD.setItems(new HashSet JavaDoc());
182
183       List JavaDoc itemElts = XML.getChildren(schemeElt, "item");
184       for (int j = 0;j < itemElts.size();j++)
185       {
186          Element JavaDoc itemElt = (Element JavaDoc)itemElts.get(j);
187          Element JavaDoc pathElt = (Element JavaDoc)XML.getUniqueChild(itemElt, "path", true);
188          String JavaDoc path = XML.asString(pathElt);
189
190          ItemMetaData itemMD = new ItemMetaData(path);
191          itemMD.setPermissions(new HashSet JavaDoc());
192
193          List JavaDoc permissionElts = XML.getChildren(itemElt, "permission");
194          for (int k = 0;k < permissionElts.size();k++)
195          {
196             Element JavaDoc permissionElt = (Element JavaDoc)permissionElts.get(k);
197             Element JavaDoc permissionNameElt = (Element JavaDoc)XML.getUniqueChild(permissionElt, "permission-name", true);
198             String JavaDoc permissionName = XML.asString(permissionNameElt);
199
200             PermissionMetaData permissionMD = new PermissionMetaData(permissionName);
201             permissionMD.setRoleNames(new HashSet JavaDoc());
202
203             List JavaDoc roleNameElts = XML.getChildren(permissionElt, "role-name");
204             Element JavaDoc uncheckedElt = (Element JavaDoc)XML.getUniqueChild(permissionElt, "unchecked", false);
205
206             if (uncheckedElt != null)
207             {
208                // A hack, we should use a real unchecked info
209
permissionMD.getRoleNames().add(AuthorizationRealm.ANONYMOUS_ROLE);
210             }
211             else
212             {
213                for (int l = 0;l < roleNameElts.size();l++)
214                {
215                   Element JavaDoc roleNameElt = (Element JavaDoc)roleNameElts.get(l);
216                   String JavaDoc 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