001: /* Copyright 2004 The JA-SIG Collaborative. All rights reserved.
002: * See license distributed with this file and
003: * available online at http://www.uportal.org/license.html
004: */
005:
006: package org.jasig.portal.container.binding;
007:
008: import java.io.IOException;
009: import java.io.InputStream;
010: import java.util.Locale;
011:
012: import org.apache.pluto.om.common.DescriptionSet;
013: import org.apache.pluto.om.common.DisplayNameSet;
014: import org.apache.pluto.om.common.ParameterSet;
015: import org.apache.pluto.om.common.SecurityRoleSet;
016: import org.apache.pluto.om.servlet.ServletDefinitionList;
017: import org.apache.pluto.om.servlet.WebApplicationDefinition;
018: import org.jasig.portal.container.deploy.WebAppDtdResolver;
019: import org.jasig.portal.container.om.common.DescriptionSetImpl;
020: import org.jasig.portal.container.om.common.DisplayNameSetImpl;
021: import org.jasig.portal.container.om.common.ParameterImpl;
022: import org.jasig.portal.container.om.common.ParameterSetImpl;
023: import org.jasig.portal.container.om.common.SecurityRoleImpl;
024: import org.jasig.portal.container.om.common.SecurityRoleRefImpl;
025: import org.jasig.portal.container.om.common.SecurityRoleRefSetImpl;
026: import org.jasig.portal.container.om.common.SecurityRoleSetImpl;
027: import org.jasig.portal.container.om.servlet.AuthConstraintImpl;
028: import org.jasig.portal.container.om.servlet.DistributableImpl;
029: import org.jasig.portal.container.om.servlet.EjbLocalRefImpl;
030: import org.jasig.portal.container.om.servlet.EjbRefImpl;
031: import org.jasig.portal.container.om.servlet.EnvEntryImpl;
032: import org.jasig.portal.container.om.servlet.ErrorPageImpl;
033: import org.jasig.portal.container.om.servlet.FilterImpl;
034: import org.jasig.portal.container.om.servlet.FilterMappingImpl;
035: import org.jasig.portal.container.om.servlet.FormLoginConfigImpl;
036: import org.jasig.portal.container.om.servlet.IconImpl;
037: import org.jasig.portal.container.om.servlet.ListenerImpl;
038: import org.jasig.portal.container.om.servlet.LoginConfigImpl;
039: import org.jasig.portal.container.om.servlet.MimeMappingImpl;
040: import org.jasig.portal.container.om.servlet.ResourceEnvRefImpl;
041: import org.jasig.portal.container.om.servlet.ResourceRefImpl;
042: import org.jasig.portal.container.om.servlet.RunAsImpl;
043: import org.jasig.portal.container.om.servlet.SecurityConstraintImpl;
044: import org.jasig.portal.container.om.servlet.ServletDefinitionImpl;
045: import org.jasig.portal.container.om.servlet.ServletDefinitionListImpl;
046: import org.jasig.portal.container.om.servlet.ServletMappingImpl;
047: import org.jasig.portal.container.om.servlet.ServletMappingListImpl;
048: import org.jasig.portal.container.om.servlet.SessionConfigImpl;
049: import org.jasig.portal.container.om.servlet.TagLibImpl;
050: import org.jasig.portal.container.om.servlet.TagLibListImpl;
051: import org.jasig.portal.container.om.servlet.UserDataConstraintImpl;
052: import org.jasig.portal.container.om.servlet.WebApplicationDefinitionImpl;
053: import org.jasig.portal.container.om.servlet.WebResourceCollectionImpl;
054: import org.jasig.portal.container.om.servlet.WelcomeFileListImpl;
055: import org.jasig.portal.utils.DocumentFactory;
056: import org.jasig.portal.utils.XML;
057: import org.w3c.dom.Document;
058: import org.w3c.dom.Element;
059: import org.w3c.dom.NodeList;
060: import org.xml.sax.EntityResolver;
061: import org.xml.sax.SAXException;
062:
063: /**
064: * Parses a <code>web.xml</code> file and produces data structures.
065: * @author Ken Weiner, kweiner@unicon.net
066: * @version $Revision: 34757 $
067: */
068: public class WebApplicationUnmarshaller {
069:
070: private InputStream inputStream;
071: private String contextName;
072: private Document doc; // Might want to consider SAX instead of DOM parsing
073: private WebApplicationDefinitionImpl webApplicationDefinition;
074: private static EntityResolver webAppDtdResolver;
075:
076: public WebApplicationUnmarshaller() {
077: this .webApplicationDefinition = new WebApplicationDefinitionImpl();
078: webAppDtdResolver = new WebAppDtdResolver();
079: }
080:
081: /**
082: * Initializer that takes an input stream to the <code>web.xml</code> file as well
083: * as the context name of the portlet application.
084: * @param inputStream an input stream to the contents of the <code>web.xml</code> file
085: * @param contextName the context name of the portlet application
086: * @throws IOException
087: * @throws SAXException
088: */
089: public void init(InputStream inputStream, String contextName)
090: throws IOException, SAXException {
091: this .inputStream = inputStream;
092: this .doc = DocumentFactory.getDocumentFromStream(inputStream,
093: webAppDtdResolver);
094: this .contextName = contextName;
095: }
096:
097: /**
098: * Returns a WebApplicationDefinition object that was populated with data
099: * from the <code>web.xml</code> file.
100: * @return the web application definition
101: */
102: public WebApplicationDefinition getWebApplicationDefinition() {
103: Element webAppE = doc.getDocumentElement();
104: webApplicationDefinition.setId(contextName);
105: webApplicationDefinition.setContextRoot("/" + contextName);
106: webApplicationDefinition.setIcon(getIcon(webAppE));
107: webApplicationDefinition
108: .setDisplayNames(getDisplayNames(webAppE));
109: webApplicationDefinition
110: .setDescriptions(getDescriptions(webAppE));
111: webApplicationDefinition
112: .setDistributable(getDistributable(webAppE));
113: webApplicationDefinition.setInitParameterSet(getParameters(
114: webAppE, "context-param"));
115: webApplicationDefinition.setFilters(getFilters(webAppE));
116: webApplicationDefinition
117: .setFilterMappings(getFilterMappings(webAppE));
118: webApplicationDefinition.setListeners(getListeners(webAppE));
119: webApplicationDefinition
120: .setServletDefinitionList(getServletDefinitions(webAppE));
121: webApplicationDefinition
122: .setServletMappings(getServletMappings(webAppE));
123: webApplicationDefinition
124: .setSessionConfig(getSessionConfig(webAppE));
125: webApplicationDefinition
126: .setMimeMappings(getMimeMappings(webAppE));
127: webApplicationDefinition
128: .setWelcomeFiles(getWelcomeFiles(webAppE));
129: webApplicationDefinition.setErrorPages(getErrorPages(webAppE));
130: webApplicationDefinition.setTagLibs(getTagLibs(webAppE));
131: webApplicationDefinition
132: .setResourceEnvRefs(getResourceEnvRefs(webAppE));
133: webApplicationDefinition
134: .setResourceRefs(getResourceRefs(webAppE));
135: webApplicationDefinition
136: .setSecurityConstraints(getSecurityConstraints(webAppE));
137: webApplicationDefinition
138: .setLoginConfig(getLoginConfig(webAppE));
139: webApplicationDefinition
140: .setSecurityRoles(getSecurityRoles(webAppE));
141: webApplicationDefinition.setEnvEntries(getEnvEntries(webAppE));
142: webApplicationDefinition.setEjbRefs(getEjbRefs(webAppE));
143: webApplicationDefinition
144: .setEjbLocalRefs(getEjbLocalRefs(webAppE));
145: return webApplicationDefinition;
146: }
147:
148: private ServletDefinitionList getServletDefinitions(Element webAppE) {
149: ServletDefinitionListImpl servletDefinitions = new ServletDefinitionListImpl();
150:
151: NodeList servletNL = webAppE.getElementsByTagName("servlet");
152: for (int i = 0; i < servletNL.getLength(); i++) {
153: Element servletE = (Element) servletNL.item(i);
154: ServletDefinitionImpl servletDefinition = new ServletDefinitionImpl();
155: servletDefinition.setIcon(getIcon(servletE));
156: servletDefinition.setServletName(XML.getChildElementText(
157: servletE, "servlet-name"));
158: servletDefinition
159: .setDisplayNames(getDisplayNames(servletE));
160: servletDefinition
161: .setDescriptions(getDescriptions(servletE));
162: servletDefinition.setServletClass(XML.getChildElementText(
163: servletE, "servlet-class"));
164: servletDefinition.setJspFile(XML.getChildElementText(
165: servletE, "jsp-file"));
166: servletDefinition.setInitParameters(getParameters(servletE,
167: "init-param"));
168: servletDefinition.setLoadOnStartup(XML.getChildElementText(
169: servletE, "load-on-startup"));
170:
171: // Add run as
172: NodeList runAsNL = servletE.getElementsByTagName("run-as");
173: if (runAsNL.getLength() > 0) {
174: Element runAsE = (Element) runAsNL.item(0);
175: RunAsImpl runAs = new RunAsImpl();
176: runAs.setRoleName(XML.getChildElementText(runAsE,
177: "role-name"));
178: runAs.setDescriptions(getDescriptions(runAsE));
179: servletDefinition.setRunAs(runAs);
180: }
181:
182: // Add servlet security role refs
183: SecurityRoleRefSetImpl securityRoleRefs = new SecurityRoleRefSetImpl();
184: NodeList securityRoleRefNL = servletE
185: .getElementsByTagName("security-role-ref");
186: for (int m = 0; m < securityRoleRefNL.getLength(); m += 1) {
187: Element securityRoleRefE = (Element) securityRoleRefNL
188: .item(m);
189: String roleName = XML.getChildElementText(
190: securityRoleRefE, "role-name");
191: String roleLink = XML.getChildElementText(
192: securityRoleRefE, "role-link");
193: String description = XML.getChildElementText(
194: securityRoleRefE, "description");
195: SecurityRoleRefImpl securityRoleRef = new SecurityRoleRefImpl();
196: securityRoleRef.setDescription(description);
197: securityRoleRef.setRoleName(roleName);
198: securityRoleRef.setRoleLink(roleLink);
199: securityRoleRefs.add(securityRoleRef);
200: }
201: servletDefinition.setSecurityRoleRefs(securityRoleRefs);
202:
203: // Add servlet mappings for this servlet
204: NodeList servletMappingNL = webAppE
205: .getElementsByTagName("servlet-mapping");
206: for (int k = 0; k < servletMappingNL.getLength(); k += 1) {
207: Element servletMappingE = (Element) servletMappingNL
208: .item(k);
209: String servletMappingName = XML.getChildElementText(
210: servletMappingE, "servlet-name");
211: String servletMappingUrlPattern = XML
212: .getChildElementText(servletMappingE,
213: "url-pattern");
214: if (servletMappingName.equals(servletDefinition
215: .getServletName())) {
216: servletDefinition.setServletMapping(
217: servletMappingName,
218: servletMappingUrlPattern);
219: break;
220: }
221: }
222:
223: servletDefinition
224: .setWebApplicationDefinition(webApplicationDefinition);
225: servletDefinitions.add(servletDefinition);
226: }
227:
228: return servletDefinitions;
229: }
230:
231: private IconImpl getIcon(Element e) {
232: IconImpl icon = null;
233: NodeList iconNL = e.getElementsByTagName("icon");
234: if (iconNL.getLength() > 0) {
235: icon = new IconImpl();
236: Element iconE = (Element) iconNL.item(0);
237: icon.setSmallIcon(XML.getChildElementText(iconE,
238: "small-icon"));
239: icon.setLargeIcon(XML.getChildElementText(iconE,
240: "large-icon"));
241: }
242: return icon;
243: }
244:
245: private DisplayNameSet getDisplayNames(Element e) {
246: DisplayNameSetImpl displayNames = new DisplayNameSetImpl();
247: NodeList displayNameNL = e.getElementsByTagName("display-name");
248: for (int i = 0; i < displayNameNL.getLength(); i++) {
249: Element displayNameE = (Element) displayNameNL.item(i);
250: String displayName = XML.getElementText(displayNameE);
251: displayNames.add(displayName, Locale.getDefault());
252: }
253: return displayNames;
254: }
255:
256: private DescriptionSet getDescriptions(Element e) {
257: DescriptionSetImpl descriptions = new DescriptionSetImpl();
258: NodeList descriptionNL = e.getElementsByTagName("description");
259: for (int i = 0; i < descriptionNL.getLength(); i++) {
260: Element descriptionE = (Element) descriptionNL.item(i);
261: String description = XML.getElementText(descriptionE);
262: descriptions.add(description, Locale.getDefault());
263: }
264: return descriptions;
265: }
266:
267: private DistributableImpl getDistributable(Element e) {
268: DistributableImpl distributable = null;
269: NodeList distributableNL = e
270: .getElementsByTagName("distributable");
271: if (distributableNL.getLength() > 0) {
272: distributable = new DistributableImpl();
273: }
274: return distributable;
275: }
276:
277: private ParameterSet getParameters(Element e,
278: String paramElementName) {
279: ParameterSetImpl parameters = new ParameterSetImpl();
280: NodeList contextParamNL = e
281: .getElementsByTagName(paramElementName);
282: for (int i = 0; i < contextParamNL.getLength(); i++) {
283: Element contextParamE = (Element) contextParamNL.item(i);
284: String paramName = XML.getChildElementText(contextParamE,
285: "param-name");
286: String paramValue = XML.getChildElementText(contextParamE,
287: "param-value");
288: String description = XML.getChildElementText(contextParamE,
289: "description");
290: ParameterImpl parameter = new ParameterImpl();
291: parameter.setName(paramName);
292: parameter.setValue(paramValue);
293: parameter.setDescriptionSet(getDescriptions(contextParamE));
294: parameters.add(parameter);
295: }
296: return parameters;
297: }
298:
299: private FilterImpl[] getFilters(Element e) {
300: NodeList filterNL = e.getElementsByTagName("filter");
301: FilterImpl[] filters = new FilterImpl[filterNL.getLength()];
302: for (int i = 0; i < filterNL.getLength(); i++) {
303: Element filterE = (Element) filterNL.item(i);
304: IconImpl icon = getIcon(filterE);
305: String filterName = XML.getChildElementText(filterE,
306: "filter-name");
307: DisplayNameSet displayNames = getDisplayNames(filterE);
308: DescriptionSet descriptions = getDescriptions(filterE);
309: String filterClass = XML.getChildElementText(filterE,
310: "filter-class");
311: ParameterSet initParameters = getParameters(filterE,
312: "init-param");
313: FilterImpl filter = new FilterImpl();
314: filter.setIcon(icon);
315: filter.setFilterName(filterName);
316: filter.setDisplayNames(displayNames);
317: filter.setDescriptions(descriptions);
318: filter.setFilterClass(filterClass);
319: filter.setInitParamteters(initParameters);
320: filters[i] = filter;
321: }
322: return filters;
323: }
324:
325: private FilterMappingImpl[] getFilterMappings(Element e) {
326: NodeList filterMappingNL = e
327: .getElementsByTagName("filter-mapping");
328: FilterMappingImpl[] filterMappings = new FilterMappingImpl[filterMappingNL
329: .getLength()];
330: for (int i = 0; i < filterMappingNL.getLength(); i++) {
331: Element filterMappingE = (Element) filterMappingNL.item(i);
332: String filterName = XML.getChildElementText(filterMappingE,
333: "filter-name");
334: String urlPattern = XML.getChildElementText(filterMappingE,
335: "url-pattern");
336: String servletName = XML.getChildElementText(
337: filterMappingE, "servlet-name");
338: FilterMappingImpl filterMapping = new FilterMappingImpl();
339: filterMapping.setFilterName(filterName);
340: filterMapping.setUrlPattern(urlPattern);
341: filterMapping.setServletName(servletName);
342: filterMappings[i] = filterMapping;
343: }
344: return filterMappings;
345: }
346:
347: private ListenerImpl[] getListeners(Element e) {
348: NodeList listenerNL = e.getElementsByTagName("listener");
349: ListenerImpl[] listeners = new ListenerImpl[listenerNL
350: .getLength()];
351: for (int i = 0; i < listenerNL.getLength(); i++) {
352: Element listenerE = (Element) listenerNL.item(i);
353: String listenerClass = XML.getChildElementText(listenerE,
354: "listener-class");
355: ListenerImpl listener = new ListenerImpl();
356: listener.setListenerClass(listenerClass);
357: listeners[i] = listener;
358: }
359: return listeners;
360: }
361:
362: private ServletMappingListImpl getServletMappings(Element e) {
363: ServletMappingListImpl servletMappings = new ServletMappingListImpl();
364: NodeList servletMappingNL = e
365: .getElementsByTagName("servlet-mapping");
366: for (int i = 0; i < servletMappingNL.getLength(); i++) {
367: Element servletMappingE = (Element) servletMappingNL
368: .item(i);
369: String servletName = XML.getChildElementText(
370: servletMappingE, "servlet-name");
371: String urlPattern = XML.getChildElementText(
372: servletMappingE, "url-pattern");
373: ServletMappingImpl servletMapping = new ServletMappingImpl();
374: servletMapping.setServletName(servletName);
375: servletMapping.setUrlPattern(urlPattern);
376: servletMappings.add(servletMapping);
377: }
378: return servletMappings;
379: }
380:
381: private SessionConfigImpl getSessionConfig(Element e) {
382: SessionConfigImpl sessionConfig = null;
383: NodeList sessionConfigNL = e
384: .getElementsByTagName("session-config");
385: if (sessionConfigNL.getLength() > 0) {
386: sessionConfig = new SessionConfigImpl();
387: sessionConfig.setSessionTimeout(XML.getChildElementText(e,
388: "session-timeout"));
389: }
390: return sessionConfig;
391: }
392:
393: private MimeMappingImpl[] getMimeMappings(Element e) {
394: NodeList mimeMappingNL = e.getElementsByTagName("mime-mapping");
395: MimeMappingImpl[] mimeMappings = new MimeMappingImpl[mimeMappingNL
396: .getLength()];
397: for (int i = 0; i < mimeMappingNL.getLength(); i++) {
398: Element mimeMappingE = (Element) mimeMappingNL.item(i);
399: String extension = XML.getChildElementText(mimeMappingE,
400: "extension");
401: String mimeType = XML.getChildElementText(mimeMappingE,
402: "mime-type");
403: MimeMappingImpl mimeMapping = new MimeMappingImpl();
404: mimeMapping.setExtension(extension);
405: mimeMapping.setMimeType(mimeType);
406: mimeMappings[i] = mimeMapping;
407: }
408: return mimeMappings;
409: }
410:
411: private WelcomeFileListImpl getWelcomeFiles(Element e) {
412: WelcomeFileListImpl welcomeFileList = null;
413: NodeList welcomeFileListNL = e
414: .getElementsByTagName("welcome-file-list");
415: if (welcomeFileListNL.getLength() > 0) {
416: welcomeFileList = new WelcomeFileListImpl();
417: NodeList welcomeFileNL = e
418: .getElementsByTagName("welcome-file");
419: for (int i = 0; i < welcomeFileNL.getLength(); i++) {
420: Element welcomeFileE = (Element) welcomeFileNL.item(i);
421: welcomeFileList.add(XML.getElementText(welcomeFileE));
422: }
423: }
424: return welcomeFileList;
425: }
426:
427: private ErrorPageImpl[] getErrorPages(Element e) {
428: NodeList errorPageNL = e.getElementsByTagName("error-page");
429: ErrorPageImpl[] errorPages = new ErrorPageImpl[errorPageNL
430: .getLength()];
431: for (int i = 0; i < errorPageNL.getLength(); i++) {
432: Element errorPageE = (Element) errorPageNL.item(i);
433: String errorCode = XML.getChildElementText(errorPageE,
434: "error-code");
435: String exceptionType = XML.getChildElementText(errorPageE,
436: "exception-type");
437: String location = XML.getChildElementText(errorPageE,
438: "location");
439: ErrorPageImpl errorPage = new ErrorPageImpl();
440: errorPage.setErrorCode(errorCode);
441: errorPage.setExceptionType(exceptionType);
442: errorPage.setLocation(location);
443: errorPages[i] = errorPage;
444: }
445: return errorPages;
446: }
447:
448: private TagLibListImpl getTagLibs(Element e) {
449: TagLibListImpl tagLibs = new TagLibListImpl();
450: NodeList tagLibNL = e.getElementsByTagName("taglib");
451: for (int i = 0; i < tagLibNL.getLength(); i++) {
452: Element tagLibE = (Element) tagLibNL.item(i);
453: String tagLibUri = XML.getChildElementText(tagLibE,
454: "taglib-uri");
455: String tagLibLocation = XML.getChildElementText(tagLibE,
456: "taglib-location");
457: TagLibImpl tagLib = new TagLibImpl();
458: tagLib.setTaglibUri(tagLibUri);
459: tagLib.setTaglibLocation(tagLibLocation);
460: tagLibs.add(tagLib);
461: }
462: return tagLibs;
463: }
464:
465: private ResourceEnvRefImpl[] getResourceEnvRefs(Element e) {
466: NodeList resourceEnvRefNL = e
467: .getElementsByTagName("resource-env-ref");
468: ResourceEnvRefImpl[] resourceEnvRefs = new ResourceEnvRefImpl[resourceEnvRefNL
469: .getLength()];
470: for (int i = 0; i < resourceEnvRefNL.getLength(); i++) {
471: Element resourceEnvRefE = (Element) resourceEnvRefNL
472: .item(i);
473: DescriptionSet descriptions = getDescriptions(resourceEnvRefE);
474: String resourceEnvRefName = XML.getChildElementText(
475: resourceEnvRefE, "resource-env-ref-name");
476: String resourceEnvRefType = XML.getChildElementText(
477: resourceEnvRefE, "resource-env-ref-type");
478: ResourceEnvRefImpl resourceEnvRef = new ResourceEnvRefImpl();
479: resourceEnvRef.setDescriptions(descriptions);
480: resourceEnvRef.setResourceEnvRefName(resourceEnvRefName);
481: resourceEnvRef.setResourceEnvRefType(resourceEnvRefType);
482: resourceEnvRefs[i] = resourceEnvRef;
483: }
484: return resourceEnvRefs;
485: }
486:
487: private ResourceRefImpl[] getResourceRefs(Element e) {
488: NodeList resourceRefNL = e.getElementsByTagName("resource-ref");
489: ResourceRefImpl[] resourceRefs = new ResourceRefImpl[resourceRefNL
490: .getLength()];
491: for (int i = 0; i < resourceRefNL.getLength(); i++) {
492: Element resourceRefE = (Element) resourceRefNL.item(i);
493: DescriptionSet descriptions = getDescriptions(resourceRefE);
494: String resRefName = XML.getChildElementText(resourceRefE,
495: "res-ref-name");
496: String resType = XML.getChildElementText(resourceRefE,
497: "res-type");
498: String resAuth = XML.getChildElementText(resourceRefE,
499: "res-auth");
500: String resSharingScope = XML.getChildElementText(
501: resourceRefE, "res-sharing-scope");
502: ResourceRefImpl resourceRef = new ResourceRefImpl();
503: resourceRef.setDescriptions(descriptions);
504: resourceRef.setResRefName(resRefName);
505: resourceRef.setResType(resType);
506: resourceRef.setResAuth(resAuth);
507: resourceRef.setResSharingScope(resSharingScope);
508: resourceRefs[i] = resourceRef;
509: }
510: return resourceRefs;
511: }
512:
513: private SecurityConstraintImpl[] getSecurityConstraints(Element e) {
514: NodeList securityConstraintNL = e
515: .getElementsByTagName("security-constraint");
516: SecurityConstraintImpl[] securityConstraints = new SecurityConstraintImpl[securityConstraintNL
517: .getLength()];
518: for (int i = 0; i < securityConstraintNL.getLength(); i++) {
519: SecurityConstraintImpl securityConstraint = new SecurityConstraintImpl();
520: Element securityConstraintE = (Element) securityConstraintNL
521: .item(i);
522: DisplayNameSet displayNames = getDisplayNames(securityConstraintE);
523: securityConstraint.setDisplayNames(displayNames);
524: NodeList webResourceCollectionNL = securityConstraintE
525: .getElementsByTagName("web-resource-collection");
526: WebResourceCollectionImpl[] webResourceCollections = new WebResourceCollectionImpl[webResourceCollectionNL
527: .getLength()];
528: for (int j = 0; j < webResourceCollectionNL.getLength(); j++) {
529: WebResourceCollectionImpl webResourceCollection = new WebResourceCollectionImpl();
530: Element webResourceCollectionE = (Element) webResourceCollectionNL
531: .item(j);
532: String webResourceName = XML.getChildElementText(
533: webResourceCollectionE, "web-resource-name");
534: DescriptionSet descriptions = getDescriptions(webResourceCollectionE);
535: NodeList urlPatternNL = webResourceCollectionE
536: .getElementsByTagName("url-pattern");
537: String[] urlPatterns = new String[urlPatternNL
538: .getLength()];
539: for (int k = 0; k < urlPatternNL.getLength(); k++) {
540: Element urlPatternE = (Element) urlPatternNL
541: .item(k);
542: urlPatterns[k] = XML.getElementText(urlPatternE);
543: }
544: NodeList httpMethodNL = webResourceCollectionE
545: .getElementsByTagName("http-method");
546: String[] httpMethods = new String[httpMethodNL
547: .getLength()];
548: for (int k = 0; k < httpMethodNL.getLength(); k++) {
549: Element httpMethodE = (Element) httpMethodNL
550: .item(k);
551: httpMethods[k] = XML.getElementText(httpMethodE);
552: }
553: webResourceCollection
554: .setWebResourceName(webResourceName);
555: webResourceCollection.setDescriptions(descriptions);
556: webResourceCollection.setUrlPatterns(urlPatterns);
557: webResourceCollection.setHttpMethods(httpMethods);
558: webResourceCollections[j] = webResourceCollection;
559: }
560: securityConstraint
561: .setWebResourceCollections(webResourceCollections);
562: NodeList authConstraintNL = securityConstraintE
563: .getElementsByTagName("auth-constraint");
564: if (authConstraintNL.getLength() > 0) {
565: Element authConstraintE = (Element) authConstraintNL
566: .item(0);
567: AuthConstraintImpl authConstraint = new AuthConstraintImpl();
568: DescriptionSet descriptions = getDescriptions(authConstraintE);
569: NodeList roleNameNL = authConstraintE
570: .getElementsByTagName("role-name");
571: String[] roleNames = new String[roleNameNL.getLength()];
572: for (int k = 0; k < roleNameNL.getLength(); k++) {
573: Element roleNameE = (Element) roleNameNL.item(k);
574: roleNames[k] = XML.getElementText(roleNameE);
575: }
576: authConstraint.setDescriptions(descriptions);
577: authConstraint.setRoleNames(roleNames);
578: securityConstraint.setAuthConstraint(authConstraint);
579: }
580: NodeList userDataConstraintNL = securityConstraintE
581: .getElementsByTagName("user-data-constraint");
582: if (userDataConstraintNL.getLength() > 0) {
583: Element userDataConstraintE = (Element) userDataConstraintNL
584: .item(0);
585: UserDataConstraintImpl userDataConstraint = new UserDataConstraintImpl();
586: DescriptionSet descriptions = getDescriptions(userDataConstraintE);
587: String transportGuarantee = XML.getChildElementText(
588: userDataConstraintE, "transport-guarantee");
589: userDataConstraint.setDescriptions(descriptions);
590: userDataConstraint
591: .setTransportGuarantee(transportGuarantee);
592: securityConstraint
593: .setUserDataConstraint(userDataConstraint);
594: }
595: securityConstraints[i] = securityConstraint;
596: }
597: return securityConstraints;
598: }
599:
600: private LoginConfigImpl getLoginConfig(Element e) {
601: LoginConfigImpl loginConfig = null;
602: NodeList loginConfigNL = e.getElementsByTagName("login-config");
603: if (loginConfigNL.getLength() > 0) {
604: Element loginConfigE = (Element) loginConfigNL.item(0);
605: loginConfig = new LoginConfigImpl();
606: loginConfig.setAuthMethod(XML.getChildElementText(
607: loginConfigE, "auth-method"));
608: loginConfig.setRealmName(XML.getChildElementText(
609: loginConfigE, "realm-name"));
610: NodeList formLoginConfigNL = loginConfigE
611: .getElementsByTagName("form-login-config");
612: if (formLoginConfigNL.getLength() > 0) {
613: Element formLoginConfigE = (Element) formLoginConfigNL
614: .item(0);
615: FormLoginConfigImpl formLoginConfig = new FormLoginConfigImpl();
616: formLoginConfig.setFormLoginPage(XML
617: .getChildElementText(formLoginConfigE,
618: "form-login-page"));
619: formLoginConfig.setFormErrorPage(XML
620: .getChildElementText(formLoginConfigE,
621: "form-error-page"));
622: loginConfig.setFormLoginConfig(formLoginConfig);
623: }
624: }
625: return loginConfig;
626: }
627:
628: private SecurityRoleSet getSecurityRoles(Element e) {
629: SecurityRoleSetImpl securityRoles = new SecurityRoleSetImpl();
630: NodeList securityRoleNL = e
631: .getElementsByTagName("security-role");
632: for (int i = 0; i < securityRoleNL.getLength(); i++) {
633: Element securityRoleE = (Element) securityRoleNL.item(i);
634: String roleName = XML.getChildElementText(securityRoleE,
635: "role-name");
636: String description = XML.getChildElementText(securityRoleE,
637: "description");
638: SecurityRoleImpl securityRole = new SecurityRoleImpl();
639: securityRole.setDescription(description);
640: securityRole.setRoleName(roleName);
641: securityRoles.add(securityRole);
642: }
643: return securityRoles;
644: }
645:
646: private EnvEntryImpl[] getEnvEntries(Element e) {
647: NodeList envEntryNL = e.getElementsByTagName("env-entry");
648: EnvEntryImpl[] envEntries = new EnvEntryImpl[envEntryNL
649: .getLength()];
650: for (int i = 0; i < envEntryNL.getLength(); i++) {
651: Element envEntryE = (Element) envEntryNL.item(i);
652: EnvEntryImpl envEntry = new EnvEntryImpl();
653: envEntry.setDescriptions(getDescriptions(envEntryE));
654: envEntry.setEnvEntryName(XML.getChildElementText(envEntryE,
655: "env-entry-name"));
656: envEntry.setEnvEntryValue(XML.getChildElementText(
657: envEntryE, "env-entry-value"));
658: envEntry.setEnvEntryType(XML.getChildElementText(envEntryE,
659: "env-entry-type"));
660: envEntries[i] = envEntry;
661: }
662: return envEntries;
663: }
664:
665: private EjbRefImpl[] getEjbRefs(Element e) {
666: NodeList ejbRefNL = e.getElementsByTagName("ejb-ref");
667: EjbRefImpl[] ejbRefs = new EjbRefImpl[ejbRefNL.getLength()];
668: for (int i = 0; i < ejbRefNL.getLength(); i++) {
669: Element ejbRefE = (Element) ejbRefNL.item(i);
670: EjbRefImpl ejbRef = new EjbRefImpl();
671: ejbRef.setDescriptions(getDescriptions(ejbRefE));
672: ejbRef.setEjbRefName(XML.getChildElementText(ejbRefE,
673: "ejb-ref-name"));
674: ejbRef.setEjbRefType(XML.getChildElementText(ejbRefE,
675: "ejb-ref-type"));
676: ejbRef.setHome(XML.getChildElementText(ejbRefE, "home"));
677: ejbRef
678: .setRemote(XML.getChildElementText(ejbRefE,
679: "remote"));
680: ejbRef.setEjbLink(XML.getChildElementText(ejbRefE,
681: "ejb-link"));
682: ejbRefs[i] = ejbRef;
683: }
684: return ejbRefs;
685: }
686:
687: private EjbLocalRefImpl[] getEjbLocalRefs(Element e) {
688: NodeList ejbRefNL = e.getElementsByTagName("ejb-local-ref");
689: EjbLocalRefImpl[] ejbLocalRefs = new EjbLocalRefImpl[ejbRefNL
690: .getLength()];
691: for (int i = 0; i < ejbRefNL.getLength(); i++) {
692: Element ejbLocalRefE = (Element) ejbRefNL.item(i);
693: EjbLocalRefImpl ejbLocalRef = new EjbLocalRefImpl();
694: ejbLocalRef.setDescriptions(getDescriptions(ejbLocalRefE));
695: ejbLocalRef.setEjbRefName(XML.getChildElementText(
696: ejbLocalRefE, "ejb-ref-name"));
697: ejbLocalRef.setEjbRefType(XML.getChildElementText(
698: ejbLocalRefE, "ejb-ref-type"));
699: ejbLocalRef.setLocalHome(XML.getChildElementText(
700: ejbLocalRefE, "local-home"));
701: ejbLocalRef.setLocal(XML.getChildElementText(ejbLocalRefE,
702: "local"));
703: ejbLocalRef.setEjbLink(XML.getChildElementText(
704: ejbLocalRefE, "ejb-link"));
705: ejbLocalRefs[i] = ejbLocalRef;
706: }
707: return ejbLocalRefs;
708: }
709:
710: }
|