1 16 17 package org.apache.taglibs.standard.tag.common.sql; 18 19 import javax.servlet.jsp.JspException ; 20 import javax.servlet.jsp.JspTagException ; 21 import javax.servlet.jsp.PageContext ; 22 import javax.servlet.jsp.jstl.core.Config; 23 import javax.servlet.jsp.tagext.TagSupport ; 24 import javax.sql.DataSource ; 25 26 import org.apache.taglibs.standard.resources.Resources; 27 import org.apache.taglibs.standard.tag.common.core.Util; 28 29 30 37 public class SetDataSourceTagSupport extends TagSupport { 38 39 protected Object dataSource; 40 protected boolean dataSourceSpecified; 41 protected String jdbcURL; 42 protected String driverClassName; 43 protected String userName; 44 protected String password; 45 46 private int scope; 47 private String var; 48 49 50 53 public SetDataSourceTagSupport() { 54 super(); 55 init(); 56 } 57 58 private void init() { 59 dataSource = null; 60 dataSourceSpecified = false; 61 jdbcURL = driverClassName = userName = password = null; 62 var = null; 63 scope = PageContext.PAGE_SCOPE; 64 } 65 66 67 70 75 public void setScope(String scope) { 76 this.scope = Util.getScope(scope); 77 } 78 79 public void setVar(String var) { 80 this.var = var; 81 } 82 83 84 87 public int doStartTag() throws JspException { 88 DataSource ds; 89 90 if (dataSource != null) { 91 ds = DataSourceUtil.getDataSource(dataSource, pageContext); 92 } else { 93 if (dataSourceSpecified) { 94 throw new JspException ( 95 Resources.getMessage("SQL_DATASOURCE_NULL")); 96 } 97 98 DataSourceWrapper dsw = new DataSourceWrapper(); 99 try { 100 if (driverClassName != null) { 102 dsw.setDriverClassName(driverClassName); 103 } 104 } 105 catch (Exception e) { 106 throw new JspTagException ( 107 Resources.getMessage("DRIVER_INVALID_CLASS", 108 e.toString()), e); 109 } 110 dsw.setJdbcURL(jdbcURL); 111 dsw.setUserName(userName); 112 dsw.setPassword(password); 113 ds = (DataSource ) dsw; 114 } 115 116 if (var != null) { 117 pageContext.setAttribute(var, ds, scope); 118 } else { 119 Config.set(pageContext, Config.SQL_DATA_SOURCE, ds, scope); 120 } 121 122 return SKIP_BODY; 123 } 124 125 public void release() { 127 init(); 128 } 129 } 130 | Popular Tags |