001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.web;
023:
024: import java.net.URL;
025:
026: import org.jboss.metadata.WebMetaData;
027: import org.jboss.deployment.DeploymentInfo;
028:
029: /** A WebApplication represents the information for a war deployment.
030:
031: @see AbstractWebContainer
032:
033: @author Scott.Stark@jboss.org
034: @version $Revision: 57209 $
035: */
036: public class WebApplication {
037: /** Class loader of this application */
038: ClassLoader classLoader = null;
039: /** name of this application */
040: String name = "";
041: /** URL where this application was deployed from */
042: URL url;
043: /** The web app metadata from the web.xml and jboss-web.xml descriptors */
044: WebMetaData metaData;
045: /** Arbitary data object for storing application specific data */
046: Object data;
047: /** The DeploymentInfo for the war */
048: DeploymentInfo warInfo;
049:
050: /** Create an empty WebApplication instance
051: */
052: public WebApplication() {
053: }
054:
055: /** Create a WebApplication instance with with given web-app metadata.
056: @param metaData the web-app metadata containing the web.xml and
057: jboss-web.xml descriptor metadata.
058: */
059: public WebApplication(WebMetaData metaData) {
060: this .metaData = metaData;
061: }
062:
063: /** Create a WebApplication instance with with given name,
064: url and class loader.
065: @param name name of this application
066: @param url url where this application was deployed from
067: @param classLoader Class loader of this application
068: */
069: public WebApplication(String name, URL url, ClassLoader classLoader) {
070: this .name = name;
071: this .url = url;
072: this .classLoader = classLoader;
073: }
074:
075: /** Get the class loader of this WebApplication.
076: * @return The ClassLoader instance of the web application
077: */
078: public ClassLoader getClassLoader() {
079: return classLoader;
080: }
081:
082: /** Set the class loader of this WebApplication.
083: * @param classLoader The ClassLoader instance for the web application
084: */
085: public void setClassLoader(ClassLoader classLoader) {
086: this .classLoader = classLoader;
087: }
088:
089: /** Get the name of this WebApplication.
090: * @return String name of the web application
091: */
092: public String getName() {
093: String n = name;
094: if (n == null)
095: n = url.getFile();
096: return n;
097: }
098:
099: /** Set the name of this WebApplication.
100: * @param name of the web application
101: */
102: public void setName(String name) {
103: this .name = name;
104: }
105:
106: /** Get the URL from which this WebApplication was deployed
107: * @return URL where this application was deployed from
108: */
109: public URL getURL() {
110: return url;
111: }
112:
113: /** Set the URL from which this WebApplication was deployed
114: * @param url URL where this application was deployed from
115: */
116: public void setURL(URL url) {
117: if (url == null)
118: throw new IllegalArgumentException("Null URL");
119: this .url = url;
120: }
121:
122: /** Getter for property metaData.
123: * @return Value of property metaData.
124: */
125: public WebMetaData getMetaData() {
126: return metaData;
127: }
128:
129: /** Setter for property metaData.
130: * @param metaData New value of property metaData.
131: */
132: public void setMetaData(WebMetaData metaData) {
133: this .metaData = metaData;
134: }
135:
136: public Object getAppData() {
137: return data;
138: }
139:
140: public void setAppData(Object data) {
141: this .data = data;
142: }
143:
144: public DeploymentInfo getDeploymentInfo() {
145: return warInfo;
146: }
147:
148: public void setDeploymentInfo(DeploymentInfo warInfo) {
149: this .warInfo = warInfo;
150: }
151:
152: public String toString() {
153: StringBuffer buffer = new StringBuffer("{WebApplication: ");
154: buffer.append(getName());
155: buffer.append(", URL: ");
156: buffer.append(url);
157: buffer.append(", classLoader: ");
158: buffer.append(classLoader);
159: buffer.append(':');
160: buffer.append(classLoader.hashCode());
161: buffer.append('}');
162: return buffer.toString();
163: }
164: }
|