Sha256: ea0a4ecc0b9557740c20542745e5634bf3203745ddedb5774f421127138733ed

Contents?: true

Size: 1.69 KB

Versions: 1

Compression:

Stored size: 1.69 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

        load_driver

        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

      def load_driver; end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
trinidad_dbpool-0.5.0 lib/trinidad_dbpool/webapp_extension.rb