private ImportPackageMetaData generateImportMonikerData()

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;
	}