Search in sources :

Example 11 with GrailsClass

use of grails.core.GrailsClass in project grails-core by grails.

the class GrailsApplicationAttributesTests method getAttributesForClasses.

private GrailsApplicationAttributes getAttributesForClasses(Class<?>[] classes, GroovyClassLoader gcl) {
    MockApplicationContext context = new MockApplicationContext();
    MockServletContext servletContext = new MockServletContext();
    servletContext.setAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT, context);
    GrailsApplication app = new DefaultGrailsApplication(classes, gcl);
    app.initialise();
    context.registerMockBean(GrailsApplication.APPLICATION_ID, app);
    GrailsClass[] controllers = app.getArtefacts(ControllerArtefactHandler.TYPE);
    for (int i = 0; i < controllers.length; i++) {
        context.registerMockBean(controllers[i].getFullName(), controllers[i].newInstance());
    }
    GrailsClass[] taglibs = app.getArtefacts(TagLibArtefactHandler.TYPE);
    for (int i = 0; i < taglibs.length; i++) {
        context.registerMockBean(taglibs[i].getFullName(), taglibs[i].newInstance());
    }
    return new DefaultGrailsApplicationAttributes(servletContext);
}
Also used : GrailsClass(grails.core.GrailsClass) DefaultGrailsApplication(grails.core.DefaultGrailsApplication) GrailsApplication(grails.core.GrailsApplication) DefaultGrailsApplication(grails.core.DefaultGrailsApplication) MockServletContext(org.springframework.mock.web.MockServletContext) MockApplicationContext(org.grails.support.MockApplicationContext)

Example 12 with GrailsClass

use of grails.core.GrailsClass in project grails-core by grails.

the class UrlMappingsHolderFactoryBean method afterPropertiesSet.

public void afterPropertiesSet() throws Exception {
    Assert.state(applicationContext != null, "Property [applicationContext] must be set!");
    Assert.state(grailsApplication != null, "Property [grailsApplication] must be set!");
    List urlMappings = new ArrayList();
    List excludePatterns = new ArrayList();
    GrailsClass[] mappings = grailsApplication.getArtefacts(UrlMappingsArtefactHandler.TYPE);
    final DefaultUrlMappingEvaluator mappingEvaluator = new DefaultUrlMappingEvaluator(applicationContext);
    mappingEvaluator.setPluginManager(pluginManager);
    if (mappings.length == 0) {
        urlMappings.addAll(mappingEvaluator.evaluateMappings(DefaultUrlMappings.getMappings()));
    } else {
        for (int i = 0; i < mappings.length; i++) {
            GrailsClass mapping = mappings[i];
            GrailsUrlMappingsClass mappingClass = (GrailsUrlMappingsClass) mapping;
            List<UrlMapping> grailsClassMappings;
            if (Script.class.isAssignableFrom(mappingClass.getClazz())) {
                grailsClassMappings = mappingEvaluator.evaluateMappings(mappingClass.getClazz());
            } else {
                grailsClassMappings = mappingEvaluator.evaluateMappings(mappingClass.getMappingsClosure());
            }
            if (!StringUtils.isEmpty(mapping.getPluginName())) {
                for (int j = 0; j < grailsClassMappings.size(); j++) {
                    grailsClassMappings.get(j).setPluginIndex(i);
                }
            }
            urlMappings.addAll(grailsClassMappings);
            if (mappingClass.getExcludePatterns() != null) {
                excludePatterns.addAll(mappingClass.getExcludePatterns());
            }
        }
    }
    DefaultUrlMappingsHolder defaultUrlMappingsHolder = new DefaultUrlMappingsHolder(urlMappings, excludePatterns, true);
    Config config = grailsApplication.getConfig();
    Integer cacheSize = config.getProperty(URL_MAPPING_CACHE_MAX_SIZE, Integer.class, null);
    if (cacheSize != null) {
        defaultUrlMappingsHolder.setMaxWeightedCacheCapacity(cacheSize);
    }
    Integer urlCreatorCacheSize = config.getProperty(URL_CREATOR_CACHE_MAX_SIZE, Integer.class, null);
    if (urlCreatorCacheSize != null) {
        defaultUrlMappingsHolder.setUrlCreatorMaxWeightedCacheCapacity(urlCreatorCacheSize);
    }
    // call initialize() after settings are in place
    defaultUrlMappingsHolder.initialize();
    UrlConverter urlConverter = applicationContext.containsBean(UrlConverter.BEAN_NAME) ? applicationContext.getBean(UrlConverter.BEAN_NAME, UrlConverter.class) : null;
    final GrailsControllerUrlMappings grailsControllerUrlMappings = new GrailsControllerUrlMappings(grailsApplication, defaultUrlMappingsHolder, urlConverter);
    ((ConfigurableApplicationContext) applicationContext).addApplicationListener(new ApplicationListener<ArtefactAdditionEvent>() {

        @Override
        public void onApplicationEvent(ArtefactAdditionEvent event) {
            GrailsClass artefact = event.getArtefact();
            if (artefact instanceof GrailsControllerClass) {
                grailsControllerUrlMappings.registerController((GrailsControllerClass) artefact);
            }
        }
    });
    urlMappingsHolder = grailsControllerUrlMappings;
}
Also used : UrlMapping(grails.web.mapping.UrlMapping) GrailsControllerUrlMappings(org.grails.web.mapping.mvc.GrailsControllerUrlMappings) ConfigurableApplicationContext(org.springframework.context.ConfigurableApplicationContext) GrailsControllerClass(grails.core.GrailsControllerClass) Config(grails.config.Config) ArrayList(java.util.ArrayList) GrailsUrlMappingsClass(grails.core.GrailsUrlMappingsClass) ArtefactAdditionEvent(grails.core.events.ArtefactAdditionEvent) GrailsClass(grails.core.GrailsClass) UrlConverter(grails.web.UrlConverter) ArrayList(java.util.ArrayList) List(java.util.List)

Aggregations

GrailsClass (grails.core.GrailsClass)12 GroovyClassLoader (groovy.lang.GroovyClassLoader)3 AbstractGrailsClass (org.grails.core.AbstractGrailsClass)3 Test (org.junit.jupiter.api.Test)3 PersistenceContextInterceptor (grails.persistence.support.PersistenceContextInterceptor)2 GrailsBootstrapClass (grails.web.servlet.bootstrap.GrailsBootstrapClass)2 Config (grails.config.Config)1 DefaultGrailsApplication (grails.core.DefaultGrailsApplication)1 GrailsApplication (grails.core.GrailsApplication)1 GrailsControllerClass (grails.core.GrailsControllerClass)1 GrailsDomainClass (grails.core.GrailsDomainClass)1 GrailsDomainClassProperty (grails.core.GrailsDomainClassProperty)1 GrailsTagLibClass (grails.core.GrailsTagLibClass)1 GrailsUrlMappingsClass (grails.core.GrailsUrlMappingsClass)1 InjectableGrailsClass (grails.core.InjectableGrailsClass)1 ArtefactAdditionEvent (grails.core.events.ArtefactAdditionEvent)1 UrlConverter (grails.web.UrlConverter)1 UrlMapping (grails.web.mapping.UrlMapping)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1