use of org.eclipse.che.maven.data.MavenKey in project che by eclipse.
the class MavenModelReader method doRead.
private ModelReadingResult doRead(File pom) {
List<MavenProjectProblem> problems = new ArrayList<>();
Set<String> enabledProfiles = new HashSet<>();
MavenModel result = new MavenModel();
fillModelByDefaults(result);
Model model = null;
try {
model = Model.readFrom(pom);
} catch (IOException e) {
problems.add(MavenProjectProblem.newProblem(pom.getPath(), e.getMessage(), MavenProblemType.SYNTAX));
}
if (model == null) {
return new ModelReadingResult(result, problems, enabledProfiles);
}
final MavenKey parentKey;
if (model.getParent() == null) {
parentKey = result.getParent().getMavenKey();
} else {
Parent modelParent = model.getParent();
parentKey = new MavenKey(modelParent.getGroupId(), modelParent.getArtifactId(), modelParent.getVersion());
MavenParent parent = new MavenParent(parentKey, modelParent.getRelativePath());
result.setParent(parent);
}
final MavenKey mavenKey = new MavenKey(getNotNull(model.getGroupId(), parentKey.getGroupId()), model.getArtifactId(), getNotNull(model.getVersion(), parentKey.getVersion()));
result.setMavenKey(mavenKey);
if (model.getPackaging() != null) {
result.setPackaging(model.getPackaging());
}
result.setName(model.getName());
final List<String> modules = model.getModules();
if (modules != null) {
result.setModules(new ArrayList<>(model.getModules()));
}
Map<String, String> properties = model.getProperties();
Properties prop = new Properties();
if (properties != null) {
prop.putAll(properties);
}
result.setProperties(prop);
final Build build = model.getBuild();
if (build != null) {
final String sourceDirectory = build.getSourceDirectory();
if (sourceDirectory != null) {
result.getBuild().setSources(singletonList(sourceDirectory));
}
final String testSourceDirectory = build.getTestSourceDirectory();
if (testSourceDirectory != null) {
result.getBuild().setTestSources(singletonList(testSourceDirectory));
}
result.getBuild().setResources(convertResources(build.getResources()));
}
//TODO add profiles
return new ModelReadingResult(result, problems, enabledProfiles);
}
use of org.eclipse.che.maven.data.MavenKey in project che by eclipse.
the class MavenProjectManager method clearMavenKeyMap.
private void clearMavenKeyMap(MavenProject mavenProject) {
MavenKey mavenKey = mavenProject.getMavenKey();
mavenWorkspaceCache.invalidate(mavenKey);
keyToProjectMap.remove(mavenKey);
}
use of org.eclipse.che.maven.data.MavenKey in project che by eclipse.
the class MavenProjectManager method findDependentProjects.
public List<MavenProject> findDependentProjects(List<MavenProject> projects) {
readLock.lock();
try {
List<MavenProject> result = new ArrayList<>();
Set<MavenKey> mavenKeys = projects.stream().map(MavenProject::getMavenKey).collect(Collectors.toSet());
Set<String> paths = projects.stream().map(project -> project.getProject().getFullPath().toOSString()).collect(Collectors.toSet());
for (MavenProject project : projectToMavenProjectMap.values()) {
boolean isAdd = false;
for (String path : project.getModulesPath()) {
if (paths.contains(path)) {
isAdd = true;
break;
}
}
if (!isAdd) {
for (MavenArtifact artifact : project.getDependencies()) {
if (contains(mavenKeys, artifact.getArtifactId(), artifact.getGroupId(), artifact.getVersion())) {
isAdd = true;
break;
}
}
}
if (isAdd) {
result.add(project);
}
}
return result;
} finally {
readLock.unlock();
}
}
use of org.eclipse.che.maven.data.MavenKey in project che by eclipse.
the class MavenProjectManager method fillMavenKeyMap.
private void fillMavenKeyMap(MavenProject mavenProject) {
MavenKey mavenKey = mavenProject.getMavenKey();
mavenWorkspaceCache.put(mavenKey, mavenProject.getPomFile());
keyToProjectMap.put(mavenKey, mavenProject);
}
use of org.eclipse.che.maven.data.MavenKey in project che by eclipse.
the class MavenProject method setModel.
private MavenProjectModifications setModel(MavenModelReaderResult readerResult, boolean clearArtifacts, boolean clearProfiles) {
Info newInfo = info.clone();
newInfo.problems = readerResult.getProblems();
newInfo.activeProfiles = readerResult.getActiveProfiles();
MavenModel model = readerResult.getMavenModel();
newInfo.mavenKey = model.getMavenKey();
if (model.getParent() != null) {
newInfo.parentKey = model.getParent().getMavenKey();
}
newInfo.packaging = model.getPackaging();
newInfo.name = model.getName();
newInfo.sources = model.getBuild().getSources();
newInfo.testSources = model.getBuild().getTestSources();
newInfo.resources = model.getBuild().getResources();
newInfo.testResources = model.getBuild().getTestResources();
newInfo.properties = model.getProperties();
newInfo.filters = model.getBuild().getFilters();
Set<MavenRemoteRepository> remoteRepositories = new HashSet<>();
Set<MavenArtifact> extensions = new HashSet<>();
Set<MavenArtifact> dependencies = new HashSet<>();
Set<MavenPlugin> plugins = new HashSet<>();
Set<MavenKey> unresolvedArtifacts = new HashSet<>();
if (!clearArtifacts) {
if (info.remoteRepositories != null) {
remoteRepositories.addAll(info.remoteRepositories);
}
if (info.extensions != null) {
extensions.addAll(info.extensions);
}
if (info.dependencies != null) {
dependencies.addAll(info.dependencies);
}
if (info.plugins != null) {
plugins.addAll(info.plugins);
}
if (info.unresolvedArtifacts != null) {
unresolvedArtifacts.addAll(info.unresolvedArtifacts);
}
}
remoteRepositories.addAll(model.getRemoteRepositories());
extensions.addAll(model.getExtensions());
dependencies.addAll(model.getDependencies());
plugins.addAll(model.getPlugins());
unresolvedArtifacts.addAll(readerResult.getUnresolvedArtifacts());
newInfo.remoteRepositories = new ArrayList<>(remoteRepositories);
newInfo.extensions = new ArrayList<>(extensions);
newInfo.dependencies = new ArrayList<>(dependencies);
newInfo.plugins = new ArrayList<>(plugins);
newInfo.unresolvedArtifacts = unresolvedArtifacts;
newInfo.modulesNameToPath = collectModulesNameAndPath(model);
return setInfo(newInfo);
}
Aggregations