001: /**
002: * JOnAS: Java(TM) Open Application Server
003: * Copyright (C) 2005 Bull S.A.
004: * Contact: jonas-team@objectweb.org
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: *
021: * Initial Developer: Matt Wringe
022: *
023: * --------------------------------------------------------------------------
024: * $Id: WebJettyDDModifier.java 7057 2005-07-18 23:53:31Z mwringe $
025: * --------------------------------------------------------------------------
026: */package org.objectweb.jonas_ws.wsgen.ddmodifier;
027:
028: import org.w3c.dom.Document;
029: import org.w3c.dom.Element;
030:
031: /**
032: * Modify the web-jetty.xml file. Wrapper around a web.xml DOM
033: *
034: * @author Matt Wringe
035: */
036: public class WebJettyDDModifier extends DeploymentDescModifier {
037:
038: /** the name of the class that sets the realm for Jetty */
039: private static final String REALM_CLASS = "org.objectweb.jonas.security.realm.web.jetty50.Standard";
040:
041: /** the name of the class that sets the context for Jetty */
042: private static final String CONTEXT_CLASS = "org.mortbay.jetty.servlet.WebApplicationContext";
043:
044: /** Default Realm name is no name is specified */
045: private static final String DEFAULT_REALM_NAME = "Endpoint Authentication Area";
046:
047: /**
048: * Create a new WebJettyDDModifier
049: *
050: * @param doc the context.xml Document
051: */
052: public WebJettyDDModifier(Document doc) {
053: super (doc.getDocumentElement(), doc);
054: }
055:
056: /**
057: * Sets up the realm for Jetty to use
058: *
059: * @param realm the realm to use
060: */
061: public void configRealm(String realm) {
062: configRealm(DEFAULT_REALM_NAME, realm);
063: }
064:
065: /**
066: * Sets up the realm for Jetty to use
067: *
068: * @param realmName the realm name for the realm
069: * @param realm the realm to use
070: */
071: public void configRealm(String realmName, String realm) {
072: Element configureElement = getElement();
073: configureElement.appendChild(setRealmName(realmName));
074: configureElement.appendChild(setRealm(realm, realmName));
075: }
076:
077: /**
078: * Returns an element that defines the realm name to use
079: *
080: * @param realmName the name of the realm
081: * @return an element that defines the realm name
082: */
083: private Element setRealmName(String realmName) {
084: Element callElement = newElement("Call");
085: callElement.setAttribute("name", "setRealmName");
086:
087: Element argElement = newElement("Arg", realmName);
088: callElement.appendChild(argElement);
089:
090: return callElement;
091: }
092:
093: /**
094: * Returns an element that defines which realm to use
095: *
096: * @param realm the realm
097: * @param realmName the name of the realm
098: * @return an element that defines which realm to use
099: */
100: private Element setRealm(String realm, String realmName) {
101: Element callElement = newElement("Call");
102: callElement.setAttribute("name", "setRealm");
103:
104: Element argElement = newElement("Arg");
105:
106: Element newElement = newElement("New");
107: newElement.setAttribute("class", REALM_CLASS);
108:
109: Element argRealmName = newElement("Arg", realmName);
110: Element argRealm = newElement("Arg", realm);
111:
112: newElement.appendChild(argRealmName);
113: newElement.appendChild(argRealm);
114:
115: argElement.appendChild(newElement);
116: callElement.appendChild(argElement);
117:
118: return callElement;
119: }
120: }
|