View Javadoc

1   /*
2    * Copyright 2002,2004 The Apache Software Foundation.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.apache.commons.jelly.tags.sql;
18  
19  import org.apache.commons.jelly.JellyTagException;
20  import org.apache.commons.jelly.TagSupport;
21  import org.apache.commons.jelly.XMLOutput;
22  
23  /***
24   * <p>Tag handler for &lt;Driver&gt; in JSTL, used to create
25   * a simple DataSource for prototyping.</p>
26   *
27   * @author Hans Bergsten
28   */
29  public class DriverTag extends TagSupport {
30      private static final String DRIVER_CLASS_NAME =
31          "javax.servlet.jsp.jstl.sql.driver";
32      private static final String JDBC_URL = "javax.servlet.jsp.jstl.sql.jdbcURL";
33      private static final String USER_NAME = "javax.servlet.jsp.jstl.sql.userName";
34      private static final String PASSWORD = "javax.servlet.jsp.jstl.sql.password";
35  
36      private String driverClassName;
37      private String jdbcURL;
38      private String scope = "page";
39      private String userName;
40      private String var;
41  
42      //**********************************************************************
43      // Accessor methods
44  
45      public void setDriver(String driverClassName) {
46          this.driverClassName = driverClassName;
47      }
48  
49      public void setJdbcURL(String jdbcURL) {
50          this.jdbcURL = jdbcURL;
51      }
52  
53      /**
54       * Sets the scope of the variable to hold the
55       * result.
56       *
57       */
58      public void setScope(String scopeName) {
59          this.scope = scopeName;
60      }
61  
62      public void setUserName(String userName) {
63          this.userName = userName;
64      }
65  
66      public void setVar(String var) {
67          this.var = var;
68      }
69  
70      //**********************************************************************
71      // Tag logic
72  
73      public void doTag(XMLOutput output) throws JellyTagException {
74          DataSourceWrapper ds = new DataSourceWrapper();
75          try {
76              ds.setDriverClassName(getDriverClassName());
77          }
78          catch (Exception e) {
79              throw new JellyTagException("Invalid driver class name: " + e.getMessage());
80          }
81          ds.setJdbcURL(getJdbcURL());
82          ds.setUserName(getUserName());
83          ds.setPassword(getPassword());
84          context.setVariable(var, ds);
85      }
86  
87      //*********************************************************************
88      // Private utility methods
89  
90      private String getDriverClassName() {
91          if (driverClassName != null) {
92              return driverClassName;
93          }
94          return getInitParameter(DRIVER_CLASS_NAME);
95      }
96  
97      private String getJdbcURL() {
98          if (jdbcURL != null) {
99              return jdbcURL;
100         }
101         return getInitParameter(JDBC_URL);
102     }
103 
104     private String getUserName() {
105         if (userName != null) {
106             return userName;
107         }
108         return getInitParameter(USER_NAME);
109     }
110 
111     private String getPassword() {
112         return getInitParameter(PASSWORD);
113     }
114 
115     protected String getInitParameter(String key) {
116         return "";
117     }
118 }