Skip to content

Commit

Permalink
Move api extensions for LibraryPresentationProvider to utility methods
Browse files Browse the repository at this point in the history
  • Loading branch information
goodwinnk committed Mar 20, 2013
1 parent 8288c1e commit 0590408
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 20 deletions.
Expand Up @@ -31,7 +31,7 @@
import java.io.IOException;
import java.util.List;

public class JSLibraryStdPresentationProvider extends CachingLibraryPresentationProvider<LibraryVersionProperties> {
public class JSLibraryStdPresentationProvider extends LibraryPresentationProvider<LibraryVersionProperties> {
public static JSLibraryStdPresentationProvider getInstance() {
return LibraryPresentationProvider.EP_NAME.findExtension(JSLibraryStdPresentationProvider.class);
}
Expand Down
Expand Up @@ -34,7 +34,7 @@
import java.util.Arrays;
import java.util.List;

public class JavaRuntimePresentationProvider extends CachingLibraryPresentationProvider<LibraryVersionProperties> {
public class JavaRuntimePresentationProvider extends LibraryPresentationProvider<LibraryVersionProperties> {
public static JavaRuntimePresentationProvider getInstance() {
return LibraryPresentationProvider.EP_NAME.findExtension(JavaRuntimePresentationProvider.class);
}
Expand Down
Expand Up @@ -30,7 +30,7 @@
import javax.swing.*;
import java.util.List;

public class JsHeaderLibraryPresentationProvider extends CachingLibraryPresentationProvider<LibraryVersionProperties> {
public class JsHeaderLibraryPresentationProvider extends LibraryPresentationProvider<LibraryVersionProperties> {
public static final LibraryKind KOTLIN_JAVASCRIPT_HEADER_KIND = LibraryKind.create("kotlin-js-header");

public static JsHeaderLibraryPresentationProvider getInstance() {
Expand Down
Expand Up @@ -115,7 +115,7 @@ public void run() {
ModuleRootManager.getInstance(module).orderEntries().librariesOnly().forEachLibrary(new Processor<Library>() {
@Override
public boolean process(Library library) {
if (JsHeaderLibraryPresentationProvider.getInstance().isDetected(library)) {
if (LibraryPresentationProviderUtil.isDetected(JsHeaderLibraryPresentationProvider.getInstance(), library)) {
for (VirtualFile file : library.getRootProvider().getFiles(OrderRootType.SOURCES)) {
pathsToJSLib.add(PathUtil.getLocalPath(file));
}
Expand Down
Expand Up @@ -26,36 +26,34 @@
import java.util.Arrays;
import java.util.List;

public abstract class CachingLibraryPresentationProvider<T extends LibraryProperties> extends LibraryPresentationProvider<T> {
protected CachingLibraryPresentationProvider(@NotNull LibraryKind kind) {
super(kind);
}
public class LibraryPresentationProviderUtil {
private LibraryPresentationProviderUtil() {}

public boolean isDetected(@NotNull Library library) {
return isDetected(Arrays.asList(library.getFiles(OrderRootType.CLASSES)));
public static <LP extends LibraryProperties> boolean isDetected(@NotNull LibraryPresentationProvider<LP> provider, @NotNull Library library) {
return getLibraryProperties(provider, library) != null;
}

public boolean isDetected(@NotNull List<VirtualFile> classesRoots) {
return cachedDetect(classesRoots, getKind()) != null;
public static <LP extends LibraryProperties> boolean isDetected(@NotNull LibraryPresentationProvider<LP> provider, @NotNull List<VirtualFile> classesRoots) {
return cachedDetect(provider, classesRoots) != null;
}

@Nullable
public T getLibraryProperties(@NotNull Library library) {
return cachedDetect(Arrays.asList(library.getFiles(OrderRootType.CLASSES)), getKind());
public static <LP extends LibraryProperties> LP getLibraryProperties(@NotNull LibraryPresentationProvider<LP> provider, @NotNull Library library) {
return cachedDetect(provider, Arrays.asList(library.getFiles(OrderRootType.CLASSES)));
}

@Nullable
private T cachedDetect(@NotNull List<VirtualFile> classesRoots, @NotNull final LibraryKind libraryKind) {
final Ref<T> propertiesRef = new Ref<T>();
private static <LP extends LibraryProperties> LP cachedDetect(@NotNull final LibraryPresentationProvider<LP> provider, @NotNull List<VirtualFile> classesRoots) {
final Ref<LP> propertiesRef = new Ref<LP>();

LibraryDetectionManager.getInstance().processProperties(
classesRoots,
new LibraryDetectionManager.LibraryPropertiesProcessor() {
@Override
public <P extends LibraryProperties> boolean processProperties(@NotNull LibraryKind processedKind, @NotNull P properties) {
if (libraryKind.equals(processedKind)) {
if (provider.getKind().equals(processedKind)) {
//noinspection unchecked
propertiesRef.set((T)properties);
propertiesRef.set((LP)properties);
return false;
}

Expand Down
Expand Up @@ -44,6 +44,7 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.plugin.JetPluginUtil;
import org.jetbrains.jet.plugin.framework.JavaRuntimePresentationProvider;
import org.jetbrains.jet.plugin.framework.LibraryPresentationProviderUtil;
import org.jetbrains.jet.utils.PathUtil;

import javax.swing.event.HyperlinkEvent;
Expand Down Expand Up @@ -168,7 +169,8 @@ private static void updateKotlinLibraries(Collection<Library> libraries, @NotNul

for (Library library : libraries) {
VirtualFile libraryJar = JavaRuntimePresentationProvider.getRuntimeJar(library);
assert JavaRuntimePresentationProvider.getInstance().isDetected(library) && libraryJar != null : "Only java runtime libraries are expected";
assert LibraryPresentationProviderUtil.isDetected(JavaRuntimePresentationProvider.getInstance(), library) &&
libraryJar != null : "Only java runtime libraries are expected";

KotlinRuntimeLibraryUtil.replaceFile(runtimePath, libraryJar);
}
Expand Down Expand Up @@ -208,7 +210,8 @@ private static Collection<VersionedLibrary> findKotlinLibraries(Project project)
continue;
}

LibraryVersionProperties javaRuntimeProperties = JavaRuntimePresentationProvider.getInstance().getLibraryProperties(library);
LibraryVersionProperties javaRuntimeProperties = LibraryPresentationProviderUtil.getLibraryProperties(
JavaRuntimePresentationProvider.getInstance(), library);
if (javaRuntimeProperties != null) {
libraries.add(new VersionedLibrary(library, javaRuntimeProperties.getVersionString()));
}
Expand Down

0 comments on commit 0590408

Please sign in to comment.