protected void loadBuildModule()

in src/main/java/org/apache/easyant/tasks/LoadModule.java [263:394]


    protected void loadBuildModule(File buildModule) {
        IvyContext.pushNewContext().setIvy(getEasyAntIvyInstance());
        EasyAntModuleDescriptorParser parser = getEasyAntModuleDescriptorParser(buildModule);
        log("Loading EasyAnt module descriptor :" + parser.getClass().getName(), Project.MSG_DEBUG);

        try {
            parser.parseDescriptor(getEasyAntIvyInstance().getSettings(), buildModule.toURI().toURL(), new URLResource(
                    buildModule.toURI().toURL()), true);
            EasyAntModuleDescriptor md = parser.getEasyAntModuleDescriptor();
            ModuleRevisionId currentModule = md.getIvyModuleDescriptor().getModuleRevisionId();

            String buildConfigurations = null;
            for (String conf : md.getBuildConfigurations()) {
                if (buildConfigurations == null) {
                    buildConfigurations = conf;
                } else {
                    buildConfigurations = buildConfigurations + "," + conf;
                }
            }
            getProject().setProperty(EasyAntMagicNames.AVAILABLE_BUILD_CONFIGURATIONS, buildConfigurations);
            updateMainConfs();

            for (PropertyDescriptor property : md.getProperties().values()) {
                if (canInherit(property, currentModule)) {
                    PropertyTask propTask = new PropertyTask();
                    propTask.setName(property.getName());
                    propTask.setValue(property.getValue());
                    propTask.setBuildConfigurations(property.getBuildConfigurations());
                    propTask.setTaskType("antlib:org.apache.easyant:property");
                    getOwningTarget().addTask(propTask);
                    initTask(propTask).perform();
                }
            }
            if (md.getConfigureProjectDescriptor() != null) {
                ConfigureProjectDescriptor descriptor = md.getConfigureProjectDescriptor();
                ConfigureProject configureProject = new ConfigureProject();
                configureProject.setDefaultTarget(descriptor.getDefaultTarget());
                configureProject.setBasedir(descriptor.getBasedir());
                configureProject.setTaskType("antlib:org.apache.easyant:configure-project");
                getOwningTarget().addTask(configureProject);
                initTask(configureProject).perform();
            }

            ResolvePlugins resolvePlugins = new ResolvePlugins();

            if (md.getBuildType() != null) {
                if (canInherit(md.getBuildType(), currentModule)) {
                    // Import importTask = new Import();
                    // importTask.setMrid(md.getBuildType().getMrid());
                    // importTask.setMode(md.getBuildType().getMode());
                    // importTask.setAs(md.getBuildType().getAs());
                    // importTask.setMandatory(md.getBuildType().isMandatory());
                    // importTask.setBuildConfigurations(md.getBuildType().getBuildConfigurations());
                    // importTask.setDependencies(md.getBuildType().getDependencies());
                    // importTask.setConflicts(md.getBuildType().getConflicts());
                    // importTask.setExcludes(md.getBuildType().getExcludes());
                    //
                    // importTask.setTaskType("antlib:org.apache.easyant:import");
                    // getOwningTarget().addTask(importTask);
                    // initTask(importTask).perform();
                    IvyDependency buildtype = resolvePlugins.createDependency();
                    buildtype.setOrg(md.getBuildType().getModuleRevisionId().getOrganisation());
                    buildtype.setName(md.getBuildType().getModuleRevisionId().getName());
                    buildtype.setRev(md.getBuildType().getModuleRevisionId().getRevision());
                }
            }
            for (PluginDescriptor plugin : md.getPlugins()) {
                if (canInherit(plugin, currentModule)) {
                    // Import importTask = new Import();
                    // importTask.setMrid(plugin.getMrid());
                    // importTask.setMode(plugin.getMode());
                    // importTask.setAs(plugin.getAs());
                    // importTask.setMandatory(plugin.isMandatory());
                    // importTask.setBuildConfigurations(plugin.getBuildConfigurations());
                    // importTask.setDependencies(plugin.getDependencies());
                    // importTask.setConflicts(plugin.getConflicts());
                    // importTask.setExcludes(plugin.getExcludes());
                    // importTask.setTaskType("antlib:org.apache.easyant:import");
                    // getOwningTarget().addTask(importTask);
                    // initTask(importTask).perform();
                    IvyDependency pluginDependency = resolvePlugins.createDependency();
                    pluginDependency.setOrg(plugin.getModuleRevisionId().getOrganisation());
                    pluginDependency.setName(plugin.getModuleRevisionId().getName());
                    pluginDependency.setRev(plugin.getModuleRevisionId().getRevision());
                }
            }
            initTask(resolvePlugins).execute();

            if (md.getBuildType() != null) {
                if (canInherit(md.getBuildType(), currentModule)) {
                    ImportDeferred importDeferredTask = new ImportDeferred();
                    importDeferredTask.setOrganisation(md.getBuildType().getModuleRevisionId().getOrganisation());
                    importDeferredTask.setModule(md.getBuildType().getModuleRevisionId().getName());
                    importDeferredTask.setMode(md.getBuildType().getMode());
                    importDeferredTask.setAs(md.getBuildType().getAs());
                    importDeferredTask.setMandatory(md.getBuildType().isMandatory());
                    importDeferredTask.setBuildConfigurations(md.getBuildType().getBuildConfigurations());

                    importDeferredTask.setTaskType("antlib:org.apache.easyant:import-deferred");
                    getOwningTarget().addTask(importDeferredTask);
                    initTask(importDeferredTask).perform();
                }
            }
            for (PluginDescriptor plugin : md.getPlugins()) {
                if (canInherit(plugin, currentModule)) {
                    ImportDeferred importDeferredTask = new ImportDeferred();
                    importDeferredTask.setOrganisation(plugin.getModuleRevisionId().getOrganisation());
                    importDeferredTask.setModule(plugin.getModuleRevisionId().getName());
                    importDeferredTask.setMode(plugin.getMode());
                    importDeferredTask.setAs(plugin.getAs());
                    importDeferredTask.setMandatory(plugin.isMandatory());
                    importDeferredTask.setBuildConfigurations(plugin.getBuildConfigurations());
                    importDeferredTask.setTaskType("antlib:org.apache.easyant:import-deferred");
                    getOwningTarget().addTask(importDeferredTask);
                    initTask(importDeferredTask).perform();

                }
            }

            // Apply ExtensionPointMapping
            for (ExtensionPointMappingDescriptor epMapping : md.getExtensionPointsMappings()) {
                BindTarget bindTarget = new BindTarget();
                bindTarget.setTarget(epMapping.getTarget());
                bindTarget.setExtensionOf(epMapping.getExtensionPoint());
                bindTarget.setBuildConfigurations(epMapping.getBuildConfigurations());
                initTask(bindTarget).perform();
            }
        } catch (Exception e) {
            throw new BuildException("problem while parsing Ivy module file: " + e.getMessage(), e);
        }
        IvyContext.popContext();
    }