in com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/visitors/SymbolData.java [372:429]
private ImportPackageMetaData generateImportMonikerData(LsifService lsif, IClassFile cf, String manager,
IJavaProject javaProject) throws JavaModelException {
ImportPackageMetaData importPackageMetaData = new ImportPackageMetaData();
if (cf != null) {
IPath path = cf.getPath();
if (manager.startsWith(PackageInformation.JDK)) {
IPackageFragmentRoot root = javaProject.findPackageFragmentRoot(path);
if (!(root instanceof JarPackageFragmentRoot)) {
return null;
}
Manifest manifest = ((JarPackageFragmentRoot) root).getManifest();
if (manifest == null) {
return null;
}
Attributes attributes = manifest.getMainAttributes();
importPackageMetaData.version = attributes.getValue("Implementation-Version");
if (StringUtils.isEmpty(importPackageMetaData.version)) {
return null;
}
PackageFragmentRoot packageFragmentRoot = (PackageFragmentRoot) cf
.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
if (packageFragmentRoot == null) {
return null;
}
IModuleDescription moduleDescription = packageFragmentRoot.getAutomaticModuleDescription();
importPackageMetaData.packageName = moduleDescription.getElementName();
} else if (StringUtils.equals(manager, PackageInformation.MAVEN)) {
MavenProject mavenProject = Repository.getInstance().enlistMavenProject(lsif, path);
if (mavenProject == null) {
return null;
}
Model model = mavenProject.getModel();
String groupId = model.getGroupId();
if (StringUtils.isEmpty(groupId)) {
return null;
}
String artifactId = model.getArtifactId();
if (StringUtils.isEmpty(artifactId)) {
return null;
}
importPackageMetaData.packageName = groupId + "/" + artifactId;
importPackageMetaData.version = model.getVersion();
if (StringUtils.isEmpty(importPackageMetaData.version)) {
return null;
}
Scm scm = model.getScm();
// scm is optional
if (scm != null) {
importPackageMetaData.url = scm.getUrl();
String connect = scm.getConnection();
if (StringUtils.isNotEmpty(connect)) {
importPackageMetaData.type = ScmUrlUtils.getProvider(connect);
}
}
}
}
return importPackageMetaData;
}