/* (non-Javadoc)
* @see org.eclipse.m2e.wtp.AbstractProjectConfiguratorDelegate#configure(org.eclipse.core.resources.IProject, org.apache.maven.project.MavenProject, org.eclipse.core.runtime.IProgressMonitor)
*/
@Override
protected void configure(IProject project, MavenProject mavenProject, IProgressMonitor monitor) throws CoreException {
IFacetedProject facetedProject = ProjectFacetsManager.create(project, true, monitor);
if (facetedProject == null) {
return;
}
Set<Action> actions = new LinkedHashSet<Action>();
installJavaFacet(actions, project, facetedProject);
IMavenProjectFacade facade = MavenPlugin.getMavenProjectRegistry().create(project, monitor);
RarPluginConfiguration config = new RarPluginConfiguration(facade);
String contentDir = config.getRarContentDirectory();
IProjectFacetVersion connectorFv = config.getConnectorFacetVersion();
IDataModel rarModelCfg = DataModelFactory.createDataModel(new ConnectorFacetInstallDataModelProvider());
IFolder contentFolder = project.getFolder(contentDir);
if(!facetedProject.hasProjectFacet(WTPProjectsUtil.JCA_FACET)) {
// Configuring content directory, used by WTP to create META-INF/manifest.mf, ra.xml
rarModelCfg.setProperty(IConnectorFacetInstallDataModelProperties.CONFIG_FOLDER, contentDir);
//Don't generate ra.xml by default - Setting will be ignored for JCA 1.6
rarModelCfg.setProperty(IConnectorFacetInstallDataModelProperties.GENERATE_DD, false);
rarModelCfg.setBooleanProperty(IConnectorFacetInstallDataModelProperties.ADD_TO_EAR, false);
removeConflictingFacets(facetedProject, connectorFv, actions);
actions.add(new IFacetedProject.Action(IFacetedProject.Action.Type.INSTALL, connectorFv, rarModelCfg));
} else {
IProjectFacetVersion projectFacetVersion = facetedProject.getProjectFacetVersion(WTPProjectsUtil.JCA_FACET);
if(projectFacetVersion.getVersionString() != null && !projectFacetVersion.getVersionString().equals(projectFacetVersion.getVersionString())){
removeConflictingFacets(facetedProject, connectorFv, actions);
actions.add(new IFacetedProject.Action(IFacetedProject.Action.Type.VERSION_CHANGE, connectorFv, rarModelCfg));
}
}
String customRaXml = config.getCustomRaXml();
if(!actions.isEmpty()) {
ResourceCleaner fileCleaner = new ResourceCleaner(project);
try {
addFoldersToClean(fileCleaner, facade);
fileCleaner.addFiles(contentFolder.getFile("META-INF/MANIFEST.MF").getProjectRelativePath()); //$NON-NLS-1$
if (customRaXml != null) {
fileCleaner.addFiles(contentFolder.getFile("META-INF/ra.xml").getProjectRelativePath()); //$NON-NLS-1$
}
facetedProject.modify(actions, monitor);
} finally {
//Remove any unwanted MANIFEST.MF the Facet installation has created
fileCleaner.cleanUp();
}
}