Skip to content

Instantly share code, notes, and snippets.

@ifedorenko
Created September 23, 2011 14:53
Show Gist options
  • Save ifedorenko/1237555 to your computer and use it in GitHub Desktop.
Save ifedorenko/1237555 to your computer and use it in GitHub Desktop.
package org.eclipse.m2e.core.internal.embedder;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.apache.maven.model.Resource;
import org.apache.maven.project.MavenProject;
public class MavenProjectMutableState {
private List<String> compileSourceRoots;
private List<String> testCompileSourceRoots;
private List<Resource> resources;
private List<Resource> testResources;
private Properties properties = new Properties();
private MavenProjectMutableState() {
}
public static MavenProjectMutableState takeSnapshot(MavenProject project) {
MavenProjectMutableState snapshot = new MavenProjectMutableState();
snapshot.compileSourceRoots = new ArrayList<String>(project.getCompileSourceRoots());
snapshot.testCompileSourceRoots = new ArrayList<String>(project.getTestCompileSourceRoots());
snapshot.resources = new ArrayList<Resource>(project.getResources());
snapshot.testResources = new ArrayList<Resource>(project.getTestResources());
snapshot.properties.putAll(project.getProperties());
return snapshot;
}
public void restore(MavenProject project) {
setElements(project.getCompileSourceRoots(), compileSourceRoots);
setElements(project.getTestCompileSourceRoots(), testCompileSourceRoots);
setElements(project.getResources(), resources);
setElements(project.getTestResources(), testResources);
project.getProperties().clear();
project.getProperties().putAll(properties);
}
private <T> void setElements(List<T> collection, List<T> elements) {
collection.clear();
collection.addAll(elements);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment