Sha256: 1860945fffc085a9c8cb6c98f4026432ae05fdbe66447c2ec90ceb3557f15cb7

Contents?: true

Size: 1.68 KB

Versions: 2

Compression:

Stored size: 1.68 KB

Contents

module Trinidad
  module Extensions
    class DbpoolWebAppExtension < WebAppExtension
      def configure(tomcat, app_context)
        case @options
        when Hash
          [create_resource(tomcat, app_context, @options)]
        when Array
          @options.map { |opts| create_resource tomcat, app_context, opts }
        end
      end
      
      protected
      def create_resource tomcat, app_context, options
        jndi, url = options.delete(:jndi), options.delete(:url)
        url = protocol + url unless %r{^#{protocol}} =~ url
        options[:url] = url
        
        driver_name = options.delete(:driver) || options.delete(:driverName) || 
                      self.driver_name
                    
        # <Resource name="jdbc/MyDB" 
        #           auth="Container" 
        #           type="javax.sql.DataSource"
        #           url="jdbc:mysql://localhost:3306/mydb"
        #           driverClassName="com.mysql.jdbc.Driver"
        #           maxActive="100" maxIdle="30" maxWait="10000"
        #           username="root" password="secret" />
        resource = Trinidad::Tomcat::ContextResource.new
        resource.set_auth(options.delete(:auth)) if options.has_key?(:auth)
        resource.set_description(options.delete(:description)) if options.has_key?(:description)
        resource.set_name(jndi)
        resource.set_type('javax.sql.DataSource')

        options.each { |key, value| resource.set_property(key.to_s, value.to_s) }
        resource.set_property('driverClassName', driver_name)

        app_context.naming_resources.add_resource(resource)
        app_context.naming_resources = resource.naming_resources

        resource
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
trinidad_dbpool-0.4.3 lib/trinidad_dbpool/webapp_extension.rb
trinidad_dbpool-0.4.2 lib/trinidad_dbpool/webapp_extension.rb