Как може плъгин на Grails да промени конфигурацията на съпоставянията/ограниченията по подразбиране на приложението?

Създавам приставка за Grails, която ще промени стойността на следното свойство на конфигурацията:

grails.gorm.default.constraints

Проблемът е, че по времето, когато моят дескриптор на приставката започне да се изпълнява (doWithSpring), ако приложението Grails, което използва приставката, имаше съществуваща стойност за свойството ограничения по подразбиране, то вече щеше да е изпълнено.

Бих искал моята добавка да промени стойността на ограниченията по подразбиране, преди Grails да започне да го изпълнява, така че ограниченията, които добавям, също да бъдат включени. Изглежда затварянето на ограниченията по подразбиране се изпълнява многократно по време на Стартиране на приложението Grails.

Опитах няколко подхода:

  • Use the platform-core plugin which this post talks about: How to configure a grails plugin from another grails plugin.
    • Problem there is similar: the Grails app's default constraints block is executed at least once before the plugin's doWithConfig begins to run.
  • (Hackish) Modify Grails app to include a FooConfig.groovy in its "locations", a file which exists in the plugin's grails-app/conf/ dir and thus accessible on the classpath (see below).
    • Problem: Hackish, still working through it but might be my only option.

grails.config.locations = ["classpath:FooConfig.class"] // Yes, *.class


person Vahid Pazirandeh    schedule 01.05.2014    source източник
comment
Донякъде подобен въпрос беше отговорен наскоро тук. Основното правило е, че конфигурацията на приложението се прилага накрая, след като всички конфигурации на плъгина са заредени. Така че всичко, предоставено от приставката, може да бъде заменено в конфигурацията на приложението. Единственото място, където се сетих, че това може да бъде постигнато, е BootStrap, което се извършва в края на процеса на изпълнение на приложението. Надявам се този отговор да помогне.   -  person dmahapatro    schedule 02.05.2014
comment
@dmahapatro интересно, благодаря. Предполагам, че моята ситуация е специална: искам да променя обвързваемия. Какво мислите за това: grails.1312388.n4.nabble.com/   -  person Vahid Pazirandeh    schedule 02.05.2014
comment
Ограничението bindable се добавя от grails-web-databinding плъгин, открит в gails-core чрез AST трансформация. Не мисля, че предишният ми коментар ще бъде приложим за ограничение bindable. Това не е ConstrainedProperty като max, maxSize, inList и т.н. Опасявам се, че трябва да се прилага директно в класа, както е споменато в документите.   -  person dmahapatro    schedule 03.05.2014