/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.easyant.core.descriptor;
import java.util.List;
import java.util.Map;
import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
/**
* This interface is used to access to all metadata provided in <easyant> tag in a module descriptor
*/
public interface EasyAntModuleDescriptor {
/**
* Get the corresponding ivy module descriptor
*
* @return the ivy module Descriptor
*/
ModuleDescriptor getIvyModuleDescriptor();
/**
* Get all the properties loaded inside the <easyant> tag.
*
* @return a map of properties
*/
Map<String, PropertyDescriptor> getProperties();
/**
* Get the build type defined in the module descriptor
*
* @return a {@link PluginDescriptor} of build type module
*/
PluginDescriptor getBuildType();
/**
* Set the build type that should be used
*
* @param buildType
* a {@link PluginDescriptor} of build type module
*/
void setBuildType(PluginDescriptor buildType);
/**
* Get all plugins defined in the module descriptor
*
* @return a list of module revision id that references plugins
*/
List<PluginDescriptor> getPlugins();
/**
* Add a plugin to the easyant context
*
* @param pluginDescriptor
* a plugindescriptor
*/
void addPlugin(PluginDescriptor pluginDescriptor);
/**
* Add a build configuration to the easyant context
*
* @param value
* a string that represents a build configuration name
*/
void addBuildConfiguration(String value);
/**
* Return a list of build configuration defined in this context
*
* @return a list of string that contains build configuration names
*/
List<String> getBuildConfigurations();
/**
* Return the module name
*
* @return a string representing the module name
*/
String getName();
/**
* Return the module description
*
* @return a string representing the module description
*/
String getDescription();
/**
* Get all registered extension points mappings
*
* @return a list of {@link ExtensionPointMappingDescriptor}
*/
List<ExtensionPointMappingDescriptor> getExtensionPointsMappings();
/**
* Add a {@link ExtensionPointMappingDescriptor} to the list of all registered extension points mappings
*
* @param extensionPointMappingDescriptor
* a {@link ExtensionPointMappingDescriptor}
*/
void addExtensionPointMapping(ExtensionPointMappingDescriptor extensionPointMappingDescriptor);
/**
* Get configure project descriptor (defining basedir/defaulttarget etc...)
*
* @return a {@link ConfigureProjectDescriptor}
*/
ConfigureProjectDescriptor getConfigureProjectDescriptor();
/**
* Set configure project descriptor (defining basedir/defaulttarget etc...)
*
* @param configureProjectDescriptor
* a {@link ConfigureProjectDescriptor}
*/
void setConfigureProjectDescriptor(ConfigureProjectDescriptor configureProjectDescriptor);
}