EA-89353 - NPE: MavenProjectsTree.doResolve

This commit is contained in:
Vladislav.Soroka
2016-10-05 11:10:02 +03:00
parent 01df507886
commit 9a8480fba1
16 changed files with 43 additions and 13 deletions
@@ -25,9 +25,15 @@ public class MavenModel extends MavenModelBase {
private String myPackaging;
private String myName;
private List<MavenProfile> myProfiles = Collections.emptyList();
private List<MavenProfile> myProfiles;
private final MavenBuild myBuild = new MavenBuild();
private final MavenBuild myBuild;
public MavenModel() {
myMavenId = new MavenId(MavenId.UNKNOWN_VALUE, MavenId.UNKNOWN_VALUE, MavenId.UNKNOWN_VALUE);
myProfiles = Collections.emptyList();
myBuild = new MavenBuild();
}
public MavenId getMavenId() {
return myMavenId;
@@ -15,6 +15,7 @@
*/
package org.jetbrains.idea.maven.server;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.maven.model.MavenExplicitProfiles;
import org.jetbrains.idea.maven.model.MavenModel;
@@ -30,6 +31,7 @@ public interface MavenServer extends Remote {
MavenServerIndexer createIndexer() throws RemoteException;
@NotNull
MavenModel interpolateAndAlignModel(MavenModel model, File basedir) throws RemoteException;
MavenModel assembleInheritance(MavenModel model, MavenModel parentModel) throws RemoteException;
@@ -31,21 +31,22 @@ public class MavenServerExecutionResult implements Serializable {
@NotNull public final Collection<MavenProjectProblem> problems;
@NotNull public final Set<MavenId> unresolvedArtifacts;
public MavenServerExecutionResult(ProjectData projectData,
Collection<MavenProjectProblem> problems,
Set<MavenId> unresolvedArtifacts) {
public MavenServerExecutionResult(@Nullable ProjectData projectData,
@NotNull Collection<MavenProjectProblem> problems,
@NotNull Set<MavenId> unresolvedArtifacts) {
this.projectData = projectData;
this.problems = problems;
this.unresolvedArtifacts = unresolvedArtifacts;
}
public static class ProjectData implements Serializable {
@NotNull
public final MavenModel mavenModel;
public final Map<String, String> mavenModelMap;
public final NativeMavenProjectHolder nativeMavenProject;
public final Collection<String> activatedProfiles;
public ProjectData(MavenModel mavenModel,
public ProjectData(@NotNull MavenModel mavenModel,
Map<String, String> mavenModelMap,
NativeMavenProjectHolder nativeMavenProject,
Collection<String> activatedProfiles) {
@@ -15,6 +15,7 @@
*/
package org.jetbrains.idea.maven.server;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.maven.model.MavenExplicitProfiles;
import org.jetbrains.idea.maven.model.MavenModel;
import org.jetbrains.idea.maven.server.embedder.Maven2ServerEmbedderImpl;
@@ -57,6 +58,7 @@ public class Maven2ServerImpl extends MavenRemoteObject implements MavenServer {
}
}
@NotNull
public MavenModel interpolateAndAlignModel(MavenModel model, File basedir) {
try {
return Maven2ServerEmbedderImpl.interpolateAndAlignModel(model, basedir);
@@ -26,6 +26,7 @@ import org.apache.maven.shared.dependency.tree.DependencyNode;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.jdom.Element;
import org.jdom.IllegalNameException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.maven.model.*;
import org.jetbrains.idea.maven.server.Maven2ServerGlobals;
import org.sonatype.nexus.index.ArtifactInfo;
@@ -36,6 +37,7 @@ import java.rmi.RemoteException;
import java.util.*;
public class Maven2ModelConverter {
@NotNull
public static MavenModel convertModel(Model model, File localRepository) throws RemoteException {
Build build = model.getBuild();
return convertModel(model,
@@ -51,6 +53,7 @@ public class Maven2ModelConverter {
return directory == null ? Collections.<String>emptyList() : Collections.singletonList(directory);
}
@NotNull
public static MavenModel convertModel(Model model,
List<String> sources,
List<String> testSources,
@@ -155,6 +155,7 @@ public class Maven2ServerEmbedderImpl extends MavenRemoteObject implements Maven
return result;
}
@NotNull
public static MavenModel interpolateAndAlignModel(MavenModel model, File basedir) throws RemoteException {
Model result = Maven2ModelConverter.toNativeModel(model);
result = doInterpolate(result, basedir);
@@ -25,6 +25,7 @@ import org.apache.maven.shared.dependency.tree.DependencyNode;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.jdom.Element;
import org.jdom.IllegalNameException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.maven.model.*;
import org.jetbrains.idea.maven.server.embedder.CustomMaven3Artifact;
import org.sonatype.nexus.index.ArtifactInfo;
@@ -35,6 +36,7 @@ import java.rmi.RemoteException;
import java.util.*;
public class MavenModelConverter {
@NotNull
public static MavenModel convertModel(Model model, File localRepository) throws RemoteException {
if(model.getBuild() == null) {
model.setBuild(new Build());
@@ -53,6 +55,7 @@ public class MavenModelConverter {
return directory == null ? Collections.<String>emptyList() : Collections.singletonList(directory);
}
@NotNull
public static MavenModel convertModel(Model model,
List<String> sources,
List<String> testSources,
@@ -384,6 +387,7 @@ public class MavenModelConverter {
|| Xpp3Dom.class.isAssignableFrom(clazz);
}
@NotNull
public static Model toNativeModel(MavenModel model) {
Model result = new Model();
result.setArtifactId(model.getMavenId().getArtifactId());
@@ -25,6 +25,7 @@ import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.graph.DependencyNode;
import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
import org.eclipse.aether.util.graph.transformer.ConflictResolver;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.maven.model.*;
@@ -40,6 +41,7 @@ import java.util.*;
*/
public class Maven3AetherModelConverter extends MavenModelConverter {
@NotNull
public static MavenModel convertModelWithAetherDependencyTree(Model model,
List<String> sources,
List<String> testSources,
@@ -330,6 +330,7 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
return (List<Exception>)((List)list);
}
@NotNull
public static MavenModel interpolateAndAlignModel(MavenModel model, File basedir) throws RemoteException {
Model result = MavenModelConverter.toNativeModel(model);
result = doInterpolate(result, basedir);
@@ -418,7 +419,8 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
);
}
private static Model doInterpolate(Model result, File basedir) throws RemoteException {
@NotNull
private static Model doInterpolate(@NotNull Model result, File basedir) throws RemoteException {
try {
AbstractStringBasedModelInterpolator interpolator = new CustomMaven3ModelInterpolator(new DefaultPathTranslator());
interpolator.initialize();
@@ -913,7 +915,7 @@ public class Maven3ServerEmbedderImpl extends Maven3ServerEmbedder {
MavenProject mavenProject = result.getMavenProject();
if (mavenProject == null) return new MavenServerExecutionResult(null, problems, unresolvedArtifacts);
MavenModel model = null;
MavenModel model = new MavenModel();
try {
if (USE_MVN2_COMPATIBLE_DEPENDENCY_RESOLVING) {
//noinspection unchecked
@@ -15,6 +15,7 @@
*/
package org.jetbrains.idea.maven.server;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.maven.model.MavenExplicitProfiles;
import org.jetbrains.idea.maven.model.MavenModel;
@@ -61,6 +62,7 @@ public class Maven3ServerImpl extends MavenRemoteObject implements MavenServer {
}
}
@NotNull
public MavenModel interpolateAndAlignModel(MavenModel model, File basedir) {
try {
return Maven3ServerEmbedderImpl.interpolateAndAlignModel(model, basedir);
@@ -15,12 +15,12 @@
*/
package org.jetbrains.idea.maven.server;
import com.intellij.openapi.util.text.StringUtil;
import gnu.trove.THashMap;
import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.model.Model;
import org.apache.maven.model.Parent;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.maven.model.*;
import org.sonatype.aether.graph.DependencyNode;
@@ -36,6 +36,7 @@ import java.util.*;
*/
public class Maven30AetherModelConverter extends MavenModelConverter {
@NotNull
public static MavenModel convertModelWithAetherDependencyTree(Model model,
List<String> sources,
List<String> testSources,
@@ -294,6 +294,7 @@ public class Maven30ServerEmbedderImpl extends Maven3ServerEmbedder {
return (List<Exception>)((List)list);
}
@NotNull
public static MavenModel interpolateAndAlignModel(MavenModel model, File basedir) throws RemoteException {
Model result = MavenModelConverter.toNativeModel(model);
result = doInterpolate(result, basedir);
@@ -836,7 +837,7 @@ public class Maven30ServerEmbedderImpl extends Maven3ServerEmbedder {
MavenProject mavenProject = result.getMavenProject();
if (mavenProject == null) return new MavenServerExecutionResult(null, problems, unresolvedArtifacts);
MavenModel model = null;
MavenModel model = new MavenModel();
try {
if (USE_MVN2_COMPATIBLE_DEPENDENCY_RESOLVING) {
//noinspection unchecked
@@ -15,6 +15,7 @@
*/
package org.jetbrains.idea.maven.server;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.maven.model.MavenExplicitProfiles;
import org.jetbrains.idea.maven.model.MavenModel;
@@ -61,6 +62,7 @@ public class Maven30ServerImpl extends MavenRemoteObject implements MavenServer
}
}
@NotNull
public MavenModel interpolateAndAlignModel(MavenModel model, File basedir) {
try {
return Maven30ServerEmbedderImpl.interpolateAndAlignModel(model, basedir);
@@ -130,7 +130,6 @@ public class MavenProjectReader {
if (result == null) {
result = new MavenModel();
result.setMavenId(new MavenId(UNKNOWN, UNKNOWN, UNKNOWN));
result.setPackaging(MavenConstants.TYPE_JAR);
return new RawModelReadResult(result, problems, alwaysOnProfiles);
}
@@ -142,7 +141,6 @@ public class MavenProjectReader {
result = new MavenModel();
Element xmlProject = readXml(file, problems, MavenProjectProblem.ProblemType.SYNTAX);
if (xmlProject == null || !"project".equals(xmlProject.getName())) {
result.setMavenId(new MavenId(UNKNOWN, UNKNOWN, UNKNOWN));
result.setPackaging(MavenConstants.TYPE_JAR);
return new RawModelReadResult(result, problems, alwaysOnProfiles);
}
@@ -15,6 +15,7 @@
*/
package org.jetbrains.idea.maven.project;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.maven.model.MavenExplicitProfiles;
import org.jetbrains.idea.maven.model.MavenId;
@@ -27,6 +28,7 @@ import java.util.Map;
import java.util.Set;
public class MavenProjectReaderResult {
@NotNull
public final MavenModel mavenModel;
public final Map<String, String> nativeModelMap;
public final MavenExplicitProfiles activatedProfiles;
@@ -34,7 +36,7 @@ public class MavenProjectReaderResult {
public final Collection<MavenProjectProblem> readingProblems;
public final Set<MavenId> unresolvedArtifactIds;
public MavenProjectReaderResult(MavenModel mavenModel,
public MavenProjectReaderResult(@NotNull MavenModel mavenModel,
Map<String, String> nativeModelMap,
MavenExplicitProfiles activatedProfiles,
@Nullable NativeMavenProjectHolder nativeMavenProject,
@@ -496,6 +496,7 @@ public class MavenServerManager extends RemoteObjectWrapper<MavenServer> impleme
};
}
@NotNull
public MavenModel interpolateAndAlignModel(final MavenModel model, final File basedir) {
return perform(new Retriable<MavenModel>() {
@Override