Search code examples
grails

Grails URLMappings


I have a plugin that relies on a custom url mapping. When i install the plugin i need to copy the content of the UrlMappings.groovy of the plugin and merge it with the one in the application where the plugin is installed

I would like however to register these url mappings directly into the grails framework without copying the content into the application itself. I don't want the user to change these mappings as they are core to how the plugins works.

Anyone can give me hints where to venture to achieve that.

Thank you

-ken


Solution

  • Seems like i need to interface with UrlMappingsHolderFactoryBean directly to be able to do that. I was hoping that there might be an easier way to do that. The code below is taken from the UrlMappingPlugin itself, the only source that i found to help me solve my problem.

       if (application.isUrlMappingsClass(event.source)) {
            application.addArtefact(UrlMappingsArtefactHandler.TYPE, event.source)
    
            BeanBuilder beans = beans {
                grailsUrlMappingsHolderBean(UrlMappingsHolderFactoryBean) {
                    grailsApplication = application
                }
            }
    
            ApplicationContext appCtx = event.ctx
            beans.registerBeans(appCtx)
    
            HotSwappableTargetSource ts = appCtx.getBean("urlMappingsTargetSource")
            ts.swap appCtx.getBean("grailsUrlMappingsHolderBean")
        }