1 //========================================================================
2 //$Id: JettyWebXmlConfiguration.java,v 1.5 2005/11/19 00:32:42 gregwilkins Exp $
3 //Copyright 2000-2005 Mort Bay Consulting Pty. Ltd.
4 //------------------------------------------------------------------------
5 //Licensed under the Apache License, Version 2.0 (the "License");
6 //you may not use this file except in compliance with the License.
7 //You may obtain a copy of the License at
8 //http://www.apache.org/licenses/LICENSE-2.0
9 //Unless required by applicable law or agreed to in writing, software
10 //distributed under the License is distributed on an "AS IS" BASIS,
11 //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 //See the License for the specific language governing permissions and
13 //limitations under the License.
14 //========================================================================
15
16 package org.mortbay.jetty.webapp;
17
18 import org.mortbay.log.Log;
19 import org.mortbay.resource.Resource;
20 import org.mortbay.xml.XmlConfiguration;
21
22
23 /**
24 *
25 * JettyWebConfiguration.
26 *
27 * Looks for Xmlconfiguration files in WEB-INF. Searches in order for the first of jetty6-web.xml, jetty-web.xml or web-jetty.xml
28 *
29 * @author janb
30 *
31 */
32 public class JettyWebXmlConfiguration implements Configuration
33 {
34 private WebAppContext _context;
35
36
37 /**
38 * @see Configuration#setWebAppContext
39 */
40 public void setWebAppContext (WebAppContext context)
41 {
42 _context = context;
43 }
44
45 public WebAppContext getWebAppContext ()
46 {
47 return _context;
48 }
49
50 /** configureClassPath
51 * Not used.
52 * @see Configuration#configureClassLoader
53 */
54 public void configureClassLoader () throws Exception
55 {
56 }
57
58 /** configureDefaults
59 * Not used.
60 * @see Configuration#configureDefaults
61 */
62 public void configureDefaults () throws Exception
63 {
64 }
65
66 /** configureWebApp
67 * Apply web-jetty.xml configuration
68 * @see Configuration#configureWebApp()
69 */
70 public void configureWebApp () throws Exception
71 {
72 //cannot configure if the _context is already started
73 if (_context.isStarted())
74 {
75 if (Log.isDebugEnabled()){Log.debug("Cannot configure webapp after it is started");}
76 return;
77 }
78
79 if(Log.isDebugEnabled())
80 Log.debug("Configuring web-jetty.xml");
81
82 Resource web_inf=getWebAppContext().getWebInf();
83 // handle any WEB-INF descriptors
84 if(web_inf!=null&&web_inf.isDirectory())
85 {
86 // do jetty.xml file
87 Resource jetty=web_inf.addPath("jetty6-web.xml");
88 if(!jetty.exists())
89 jetty=web_inf.addPath("jetty-web.xml");
90 if(!jetty.exists())
91 jetty=web_inf.addPath("web-jetty.xml");
92
93 if(jetty.exists())
94 {
95 // No server classes while configuring
96 String[] old_server_classes = _context.getServerClasses();
97 try
98 {
99 _context.setServerClasses(null);
100 if(Log.isDebugEnabled())
101 Log.debug("Configure: "+jetty);
102 XmlConfiguration jetty_config=new XmlConfiguration(jetty.getURL());
103 jetty_config.configure(getWebAppContext());
104 }
105 finally
106 {
107 if (_context.getServerClasses()==null)
108 _context.setServerClasses(old_server_classes);
109 }
110 }
111 }
112 }
113
114
115 /** deconfigureWebApp
116 * @see Configuration#deconfigureWebApp()
117 */
118 public void deconfigureWebApp () throws Exception
119 {
120
121 }
122
123 }