package org.bundlemaker.core.spi.modext;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import org.bundlemaker.core.analysis.IResourceArtifact;
import org.bundlemaker.core.project.IProjectContentEntry;
import org.bundlemaker.core.project.IProjectContentResource;
import org.bundlemaker.core.resource.IModule;
import org.bundlemaker.core.resource.IModuleResource;
import org.bundlemaker.core.spi.parser.IParsableResource;
import org.eclipse.core.runtime.IAdapterFactory;
/**
* <p>
* </p>
*
* @author Gerd Wütherich (gerd@gerd-wuetherich.de)
*/
public interface IModelExtension {
/**
* <p>
* Is called once directly after the {@link IModelExtension} has been created. This method can be used e.g. to
* register {@link IAdapterFactory IAdapterFactories} for IModularizedSystem, IModule or IModuleResource.
* </p>
*/
void initializeModelExtension();
/**
* <p>
* </p>
*
* @param projectContent
* @param storedResourcesMap
*/
void prepareStoredResourceModel(IProjectContentEntry projectContent,
Map<IProjectContentResource, ? extends IParsableResource> storedResourcesMap);
/**
* <p>
* </p>
*
* @param projectContent
* @param resourceCache
* @param newAndModifiedBinaryResources
* @param newAndModifiedSourceResources
*/
void beforeParseResourceModel(IProjectContentEntry projectContent,
Set<? extends IProjectContentResource> newAndModifiedBinaryResources,
Set<? extends IProjectContentResource> newAndModifiedSourceResources);
/**
* <p>
* </p>
*
* @param projectContent
* @param resourceCache
* @param newAndModifiedBinaryResources
* @param newAndModifiedSourceResources
*/
void afterParseResourceModel(IProjectContentEntry projectContent,
Set<? extends IProjectContentResource> newAndModifiedBinaryResources,
Set<? extends IProjectContentResource> newAndModifiedSourceResources);
/**
* <p>
* </p>
*
* @param set2
* @param set
*
* @param binaryResourceStandins
* @param sourceResourceStandins
*/
void resourceModelSetupCompleted(IProjectContentEntry contentEntry, Collection<IModuleResource> binaryResources,
Collection<IModuleResource> sourceResources);
/**
* <p>
* </p>
*
* @param modules
* @param context
*/
void prepareAnalysisModel(IModule[] modules, IAnalysisModelContext context);
/**
* <p>
* </p>
*
* @param resource
*/
boolean shouldAddResourceArtifact(IModuleResource resource);
/**
* <p>
* </p>
*
* @param resourceArtifact
* @param resource
* @return
*/
void setupResourceArtifact(IResourceArtifact resourceArtifact, IModuleResource resource);
}