KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > caucho > quercus > ResinQuercus


1 /*
2  * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved
3  *
4  * This file is part of Resin(R) Open Source
5  *
6  * Each copy or derived work must preserve the copyright notice and this
7  * notice unmodified.
8  *
9  * Resin Open Source is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * Resin Open Source is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
17  * of NON-INFRINGEMENT. See the GNU General Public License for more
18  * details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with Resin Open Source; if not, write to the
22  *
23  * Free Software Foundation, Inc.
24  * 59 Temple Place, Suite 330
25  * Boston, MA 02111-1307 USA
26  *
27  * @author Scott Ferguson
28  */

29
30 package com.caucho.quercus;
31
32 import com.caucho.config.ConfigException;
33 import com.caucho.loader.*;
34 import com.caucho.quercus.annotation.ClassImplementation;
35 import com.caucho.quercus.env.*;
36 import com.caucho.quercus.lib.file.FileModule;
37 import com.caucho.quercus.lib.session.QuercusSessionManager;
38 import com.caucho.quercus.module.ModuleContext;
39 import com.caucho.quercus.module.ModuleInfo;
40 import com.caucho.quercus.module.ModuleStartupListener;
41 import com.caucho.quercus.module.QuercusModule;
42 import com.caucho.quercus.module.StaticFunction;
43 import com.caucho.quercus.page.InterpretedPage;
44 import com.caucho.quercus.page.PageManager;
45 import com.caucho.quercus.page.QuercusPage;
46 import com.caucho.quercus.parser.QuercusParser;
47 import com.caucho.quercus.program.ClassDef;
48 import com.caucho.quercus.program.InterpretedClassDef;
49 import com.caucho.quercus.program.JavaClassDef;
50 import com.caucho.quercus.program.JavaImplClassDef;
51 import com.caucho.quercus.program.QuercusProgram;
52 import com.caucho.server.webapp.*;
53 import com.caucho.server.session.*;
54 import com.caucho.sql.*;
55 import com.caucho.util.Alarm;
56 import com.caucho.util.L10N;
57 import com.caucho.util.Log;
58 import com.caucho.util.LruCache;
59 import com.caucho.util.TimedCache;
60 import com.caucho.vfs.*;
61 import com.caucho.java.*;
62
63 import javax.sql.DataSource JavaDoc;
64 import java.io.IOException JavaDoc;
65 import java.io.InputStream JavaDoc;
66 import java.lang.ref.SoftReference JavaDoc;
67 import java.lang.reflect.Constructor JavaDoc;
68 import java.lang.reflect.InvocationTargetException JavaDoc;
69 import java.net.URL JavaDoc;
70 import java.sql.*;
71 import java.util.Enumeration JavaDoc;
72 import java.util.HashMap JavaDoc;
73 import java.util.HashSet JavaDoc;
74 import java.util.Map JavaDoc;
75 import java.util.logging.Level JavaDoc;
76 import java.util.logging.Logger JavaDoc;
77
78 /**
79  * Facade for the PHP language.
80  */

81 public class ResinQuercus extends Quercus
82 {
83   private static L10N L = new L10N(ResinQuercus.class);
84   private static final Logger JavaDoc log = Log.open(ResinQuercus.class);
85   
86   private static EnvironmentLocal<ModuleContext> _localModuleContext
87     = new EnvironmentLocal<ModuleContext>();
88
89   private WebApp _webApp;
90   
91   /**
92    * Constructor.
93    */

94   public ResinQuercus()
95   {
96     super();
97
98     setPwd(Vfs.lookup());
99     setWorkDir(WorkDir.getLocalWorkDir());
100   }
101
102   public void setWebApp(WebApp webApp)
103   {
104     _webApp = webApp;
105   }
106
107   public WebApp getWebApp()
108   {
109     return _webApp;
110   }
111
112   @Override JavaDoc
113   public ModuleContext getLocalContext(ClassLoader JavaDoc loader)
114   {
115     synchronized (_localModuleContext) {
116       ModuleContext context = _localModuleContext.getLevel(loader);
117
118       if (context == null) {
119     context = createModuleContext(loader);
120     _localModuleContext.set(context, loader);
121       }
122
123       return context;
124     }
125   }
126
127   public String JavaDoc getCookieName()
128   {
129     SessionManager sm = getSessionManager();
130
131     if (sm != null)
132       return sm.getCookieName();
133     else
134       return "JSESSIONID";
135   }
136
137   public SessionManager getSessionManager()
138   {
139     if (_webApp != null)
140       return _webApp.getSessionManager();
141     else
142       return null;
143   }
144
145   @Override JavaDoc
146   public String JavaDoc getVersion()
147   {
148     return com.caucho.Version.VERSION;
149   }
150
151   @Override JavaDoc
152   public String JavaDoc getVersionDate()
153   {
154     return com.caucho.Version.VERSION_DATE;
155   }
156
157   @Override JavaDoc
158   public DataSource JavaDoc findDatabase(String JavaDoc driver, String JavaDoc url)
159   {
160     try {
161       if (getDatabase() != null)
162     return getDatabase();
163       else
164     return DatabaseManager.findDatabase(driver, url);
165     } catch (Exception JavaDoc e) {
166       throw new QuercusModuleException(e);
167     }
168   }
169
170   /**
171    * Unwrap connection if necessary.
172    */

173   @Override JavaDoc
174   public Connection getConnection(Connection conn)
175   {
176     try {
177       return ((UserConnection) conn).getConnection();
178     } catch (Exception JavaDoc e) {
179       throw new QuercusModuleException(e);
180     }
181   }
182
183   /**
184    * Unwrap statement if necessary.
185    */

186   public Statement getStatement(Statement stmt)
187   {
188     return ((UserStatement) stmt).getStatement();
189   }
190 }
191
192
Popular Tags