diff --git a/compiler/frontend.java/src/META-INF/services/org.jetbrains.jet.lang.resolve.java.resolver.ProgressChecker b/compiler/frontend.java/src/META-INF/services/org.jetbrains.jet.lang.resolve.java.resolver.ProgressChecker new file mode 100644 index 00000000000..402eb2541c0 --- /dev/null +++ b/compiler/frontend.java/src/META-INF/services/org.jetbrains.jet.lang.resolve.java.resolver.ProgressChecker @@ -0,0 +1 @@ +org.jetbrains.jet.lang.resolve.java.resolver.ProgressCheckerImpl diff --git a/compiler/frontend.java/src/META-INF/services/org.jetbrains.jet.lang.resolve.java.structure.JavaElementFactory b/compiler/frontend.java/src/META-INF/services/org.jetbrains.jet.lang.resolve.java.structure.JavaElementFactory new file mode 100644 index 00000000000..6922eb666fe --- /dev/null +++ b/compiler/frontend.java/src/META-INF/services/org.jetbrains.jet.lang.resolve.java.structure.JavaElementFactory @@ -0,0 +1 @@ +org.jetbrains.jet.lang.resolve.java.structure.impl.JavaElementFactoryImpl diff --git a/compiler/frontend.java/src/META-INF/services/org.jetbrains.jet.lang.resolve.java.structure.JavaSignatureFormatter b/compiler/frontend.java/src/META-INF/services/org.jetbrains.jet.lang.resolve.java.structure.JavaSignatureFormatter new file mode 100644 index 00000000000..6141d60e3ac --- /dev/null +++ b/compiler/frontend.java/src/META-INF/services/org.jetbrains.jet.lang.resolve.java.structure.JavaSignatureFormatter @@ -0,0 +1 @@ +org.jetbrains.jet.lang.resolve.java.structure.impl.JavaSignatureFormatterImpl diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/ProgressChecker.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/ProgressChecker.java index 3761a779044..c33a634a868 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/ProgressChecker.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/ProgressChecker.java @@ -18,11 +18,21 @@ package org.jetbrains.jet.lang.resolve.java.resolver; import org.jetbrains.annotations.NotNull; +import java.util.Iterator; +import java.util.ServiceLoader; + public abstract class ProgressChecker { + private static ProgressChecker instance; + @NotNull public static ProgressChecker getInstance() { - // TODO: ServiceLoader.load() - return new ProgressCheckerImpl(); + if (instance == null) { + Iterator iterator = + ServiceLoader.load(ProgressChecker.class, ProgressChecker.class.getClassLoader()).iterator(); + assert iterator.hasNext() : "No service found: " + ProgressChecker.class.getName(); + instance = iterator.next(); + } + return instance; } public abstract void checkCanceled(); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaElementFactory.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaElementFactory.java index b6873690a2e..258edac4c43 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaElementFactory.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaElementFactory.java @@ -17,13 +17,22 @@ package org.jetbrains.jet.lang.resolve.java.structure; import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaElementFactoryImpl; + +import java.util.Iterator; +import java.util.ServiceLoader; public abstract class JavaElementFactory { + private static JavaElementFactory instance; + @NotNull public static JavaElementFactory getInstance() { - // TODO: ServiceLoader.load - return new JavaElementFactoryImpl(); + if (instance == null) { + Iterator iterator = + ServiceLoader.load(JavaElementFactory.class, JavaElementFactory.class.getClassLoader()).iterator(); + assert iterator.hasNext() : "No service found: " + JavaElementFactory.class.getName(); + instance = iterator.next(); + } + return instance; } @NotNull diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaSignatureFormatter.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaSignatureFormatter.java index f50fabdceed..3c55bc7c8d2 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaSignatureFormatter.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaSignatureFormatter.java @@ -17,12 +17,22 @@ package org.jetbrains.jet.lang.resolve.java.structure; import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaSignatureFormatterImpl; + +import java.util.Iterator; +import java.util.ServiceLoader; public abstract class JavaSignatureFormatter { + private static JavaSignatureFormatter instance; + + @NotNull public static JavaSignatureFormatter getInstance() { - // TODO: ServiceLoader.load - return new JavaSignatureFormatterImpl(); + if (instance == null) { + Iterator iterator = + ServiceLoader.load(JavaSignatureFormatter.class, JavaSignatureFormatter.class.getClassLoader()).iterator(); + assert iterator.hasNext() : "No service found: " + JavaSignatureFormatter.class.getName(); + instance = iterator.next(); + } + return instance; } /**