Search in sources :

Example 26 with GrailsPlugin

use of grails.plugins.GrailsPlugin in project grails-core by grails.

the class AbstractGrailsPluginManager method informOfClassChange.

public void informOfClassChange(Class<?> aClass) {
    if (aClass == null || application == null) {
        return;
    }
    ArtefactHandler handler = application.getArtefactType(aClass);
    if (handler == null) {
        return;
    }
    String pluginName = handler.getPluginName();
    if (pluginName == null) {
        return;
    }
    GrailsPlugin plugin = getGrailsPlugin(pluginName);
    if (plugin != null) {
        if (!plugin.isEnabled(applicationContext.getEnvironment().getActiveProfiles()))
            return;
        plugin.notifyOfEvent(GrailsPlugin.EVENT_ON_CHANGE, aClass);
    } else {
        String classNameAsPath = aClass.getName().replace('.', File.separatorChar);
        String groovyClass = classNameAsPath + ".groovy";
        String javaClass = classNameAsPath + ".java";
        for (GrailsPlugin grailsPlugin : pluginList) {
            List<WatchPattern> watchPatterns = grailsPlugin.getWatchedResourcePatterns();
            if (watchPatterns != null) {
                for (WatchPattern watchPattern : watchPatterns) {
                    File parent = watchPattern.getDirectory();
                    String extension = watchPattern.getExtension();
                    if (parent != null && extension != null) {
                        File f = new File(parent, groovyClass);
                        if (f.exists() && f.getName().endsWith(extension)) {
                            grailsPlugin.notifyOfEvent(GrailsPlugin.EVENT_ON_CHANGE, aClass);
                        } else {
                            f = new File(parent, javaClass);
                            if (f.exists() && f.getName().endsWith(extension)) {
                                grailsPlugin.notifyOfEvent(GrailsPlugin.EVENT_ON_CHANGE, aClass);
                            }
                        }
                    }
                }
            }
        }
    }
}
Also used : WatchPattern(org.grails.plugins.support.WatchPattern) GrailsPlugin(grails.plugins.GrailsPlugin) ArtefactHandler(grails.core.ArtefactHandler) File(java.io.File)

Example 27 with GrailsPlugin

use of grails.plugins.GrailsPlugin in project grails-core by grails.

the class AbstractGrailsPluginManager method registerProvidedArtefacts.

public void registerProvidedArtefacts(GrailsApplication app) {
    checkInitialised();
    // since plugin classes are added as overridable artefacts, which are added as the first
    // item in the list of artefacts, we have to iterate in reverse order to ensure plugin
    // load sequence is maintained
    ArrayList<GrailsPlugin> plugins = new ArrayList<GrailsPlugin>(pluginList);
    Collections.reverse(plugins);
    for (GrailsPlugin plugin : plugins) {
        if (plugin.supportsCurrentScopeAndEnvironment()) {
            if (isPluginDisabledForProfile(plugin))
                continue;
            for (Class<?> artefact : plugin.getProvidedArtefacts()) {
                String shortName = GrailsNameUtils.getShortName(artefact);
                if (!isAlreadyRegistered(app, artefact, shortName)) {
                    app.addOverridableArtefact(artefact);
                }
            }
        }
    }
}
Also used : GrailsPlugin(grails.plugins.GrailsPlugin) ArrayList(java.util.ArrayList)

Aggregations

GrailsPlugin (grails.plugins.GrailsPlugin)27 DefaultGrailsPlugin (org.grails.plugins.DefaultGrailsPlugin)9 PluginException (grails.plugins.exceptions.PluginException)4 BinaryGrailsPlugin (org.grails.plugins.BinaryGrailsPlugin)4 ApplicationContext (org.springframework.context.ApplicationContext)4 ExpandoMetaClass (groovy.lang.ExpandoMetaClass)2 MetaClassRegistry (groovy.lang.MetaClassRegistry)2 ConfigObject (groovy.util.ConfigObject)2 File (java.io.File)2 NavigableMap (org.grails.config.NavigableMap)2 DefaultRuntimeSpringConfiguration (org.grails.spring.DefaultRuntimeSpringConfiguration)2 RuntimeSpringConfiguration (org.grails.spring.RuntimeSpringConfiguration)2 FileSystemResource (org.springframework.core.io.FileSystemResource)2 Enhanced (grails.artefact.Enhanced)1 ArtefactHandler (grails.core.ArtefactHandler)1 ConfigSlurper (groovy.util.ConfigSlurper)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 Properties (java.util.Properties)1