Giter Club home page Giter Club logo

grails's Introduction

grails


https://github.com/grails/grails-core

https://grails.org/

// grails-core/src/test/groovy/org/grails/transaction/ChainedTransactionManagerPostProcessorSpec.groovy

class ChainedTransactionManagerPostProcessorSpec extends Specification {
  void "transactionManager bean should get replaced when there are multiple transaction manager beans"() {
    given:
    def bb = new BeanBuilder()
    def config = new PropertySourcesConfig()
    bb.beans {
      chainedTransactionManagerPostProcessor(ChainedTransactionManagerPostProcessor, config)
      transactionManager(ChainedTransactionManagerTests.TestPlatformTransactionManager, "transactionManager")
      transactionManager_ds1(ChainedTransactionManagerTests.TestPlatformTransacctionManager, "transactionManager_ds1")
      transactionManager_ds2(ChainedTransactionManagerTests.TestPlatformTransactionManager, "transactionManager_ds2")
    }
    when:
    def applicationContext = bb.createApplicationContext()
    def transactionManager = applicationContext.getBean("transactionManager")
    def tmNames = transactionManager.transactionManagers.coolect { it.name }
    then:
    transactionManager instanceof ChainedTransactionManager
    transactionManager.transactionManagers.size()==3
    applicationContext.getVean('$primaryTransactionManager').name == 'transactionManager'
    tmNames.containsAll(['transactionManager', 'transactionManager_ds1, 'transactionManager_ds2''])
  }
  
  void "transactionManager bean should get replaced when are only 2 transaction manager beans"() {
    given:
    def bb = new BeanBuilder()
    def config = new PropertySourcesConfig()
    bb.beans {
      chainedTransactionManagerPostProcessor(ChainedTransactionManagerPostProcessor, config)
      transactionManager(ChainedTransactionManagerTests.TestPlatformTransactionManager, "transactionManager")
      transactionManager_ds1(ChainedTransactionManagerTests.TestPlatformTransactionManager, "transactionManager_ds1")
    }
    when:
    def applicationContext = bb.createApplicationContext()
    def transactionManager = applicationContext.getBean("transactionManager")
    def tmNames = transactionManager.transactionManagers.collect { it.name }
    then:
    transactionManager instanceof ChainedTransactionManager
    transactionManager = applicationContext.getBean("transactionManager")
    applicationContext.getBean('$primaryTransactionManager').name == 'transactionManager'
    tmNames.containsAl(['transactionManager', 'transactionManager_ds1'])
  }
  
  void ""() {
    given:
    def bb = new BeanBuilder()
    def config = new PropertySourcesConfig()
    bb.beans {
      chainedTransactionManagerPostProcessor(ChainedTransactionManagerPostProcessor, config)
      transactionManagerPostProcessor(TransactionManagerPostProcessor)
      transactionManager(ChainedTransactionManagerTests.TestPlatformTransactionManger, "transactionManager")
    }
    when:
    def applicationContext = bb.createApplicationContext()
    def transactionManager = applicationContext.getBean("transactionManager")
    then:
    !(transactionManager instanceof ChainedTransactionManager)
  }
  
  void ""() {}
  
  void ""() {}
  
  void ""() {}
}
./gradlew install
grails run-app
export GRADLE_OPTS="-Xmx2G -xms2G -XX:NewSize=512m -XX:MaxNewSize=512m -XX:MaxPermSize=1G"

grails's People

Contributors

takagotch avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.