String (ModuleRootModel model, String javadocPath, List<String> currentRoots) { if (javadocPath.startsWith(FILE_PROTOCOL)) { if (new File(javadocPath.substring(FILE_PROTOCOL.length())).exists()) { return VfsUtilCore.pathToUrl(javadocPath.substring(FILE_PROTOCOL.length())); } } else { final String protocol = VirtualFileManager.extractProtocol(javadocPath); if (Comparing.strEqual(protocol, HttpFileSystem.getInstance().getProtocol())) { return javadocPath; } else if (javadocPath.startsWith(JAR_PREFIX)) { final String jarJavadocPath = javadocPath.substring(JAR_PREFIX.length()); if (jarJavadocPath.startsWith(PLATFORM_PROTOCOL)) { final String relativeToPlatform = jarJavadocPath.substring(PLATFORM_PROTOCOL.length() + "resource".length()); // starts with leading / final VirtualFile currentRoot = getContentRoot(model); final String currentModulePath = (currentRoot != null ? currentRoot.getParent().getPath() : model.getModule().getProject().getBaseDir().getPath()) + relativeToPlatform; if (isJarFileExist(currentModulePath)) { return VirtualFileManager.constructUrl(JarFileSystem.PROTOCOL, currentModulePath); } else { final String moduleName = EPathCommonUtil.getRelativeModuleName(relativeToPlatform); final String relativeToModulePathWithJarSuffix = EPathCommonUtil.getRelativeToModulePath(relativeToPlatform); final String relativeToModulePath = stripPathInsideJar(relativeToModulePathWithJarSuffix); final Module otherModule = ModuleManager.getInstance(model.getModule().getProject()).findModuleByName(moduleName); String url = null; if (otherModule != null && otherModule != model.getModule()) { url = expandEclipseRelative2OtherModule(otherModule, relativeToModulePath); } else if (currentRoots != null) { url = EPathCommonUtil.expandEclipseRelative2ContentRoots(currentRoots, moduleName, relativeToModulePath); } if (url != null) { assert relativeToModulePathWithJarSuffix != null; assert relativeToModulePath != null; if (relativeToModulePath.length() < relativeToModulePathWithJarSuffix.length()) { url += relativeToModulePathWithJarSuffix.substring(relativeToModulePath.length()); } return VirtualFileManager.constructUrl(JarFileSystem.PROTOCOL, VfsUtilCore.urlToPath(url)); } } } else if (jarJavadocPath.startsWith(FILE_PROTOCOL)) { final String localFile = jarJavadocPath.substring(FILE_PROTOCOL.length()); if (isJarFileExist(localFile)) { return VirtualFileManager.constructUrl(JarFileSystem.PROTOCOL, localFile); } } } } return javadocPath; }