home *** CD-ROM | disk | FTP | other *** search
- package sun.misc;
-
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.net.URL;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Set;
-
- public final class Service {
- private static final String prefix = "META-INF/services/";
-
- private Service() {
- }
-
- private static void fail(Class var0, String var1, Throwable var2) throws ServiceConfigurationError {
- ServiceConfigurationError var3 = new ServiceConfigurationError(var0.getName() + ": " + var1);
- var3.initCause(var2);
- throw var3;
- }
-
- private static void fail(Class var0, String var1) throws ServiceConfigurationError {
- throw new ServiceConfigurationError(var0.getName() + ": " + var1);
- }
-
- private static void fail(Class var0, URL var1, int var2, String var3) throws ServiceConfigurationError {
- fail(var0, var1 + ":" + var2 + ": " + var3);
- }
-
- private static int parseLine(Class var0, URL var1, BufferedReader var2, int var3, List var4, Set var5) throws IOException, ServiceConfigurationError {
- String var6 = var2.readLine();
- if (var6 == null) {
- return -1;
- } else {
- int var7 = var6.indexOf(35);
- if (var7 >= 0) {
- var6 = var6.substring(0, var7);
- }
-
- var6 = var6.trim();
- int var8 = var6.length();
- if (var8 != 0) {
- if (var6.indexOf(32) >= 0 || var6.indexOf(9) >= 0) {
- fail(var0, var1, var3, "Illegal configuration-file syntax");
- }
-
- int var9 = var6.codePointAt(0);
- if (!Character.isJavaIdentifierStart(var9)) {
- fail(var0, var1, var3, "Illegal provider-class name: " + var6);
- }
-
- for(int var10 = Character.charCount(var9); var10 < var8; var10 += Character.charCount(var9)) {
- var9 = var6.codePointAt(var10);
- if (!Character.isJavaIdentifierPart(var9) && var9 != 46) {
- fail(var0, var1, var3, "Illegal provider-class name: " + var6);
- }
- }
-
- if (!var5.contains(var6)) {
- var4.add(var6);
- var5.add(var6);
- }
- }
-
- return var3 + 1;
- }
- }
-
- private static Iterator parse(Class var0, URL var1, Set var2) throws ServiceConfigurationError {
- InputStream var3 = null;
- BufferedReader var4 = null;
- ArrayList var5 = new ArrayList();
-
- try {
- var3 = var1.openStream();
- var4 = new BufferedReader(new InputStreamReader(var3, "utf-8"));
- int var6 = 1;
-
- while((var6 = parseLine(var0, var1, var4, var6, var5, var2)) >= 0) {
- }
- } catch (IOException var15) {
- fail(var0, ": " + var15);
- } finally {
- try {
- if (var4 != null) {
- var4.close();
- }
-
- if (var3 != null) {
- var3.close();
- }
- } catch (IOException var14) {
- fail(var0, ": " + var14);
- }
-
- }
-
- return var5.iterator();
- }
-
- public static Iterator providers(Class var0, ClassLoader var1) throws ServiceConfigurationError {
- return new LazyIterator(var0, var1, (1)null);
- }
-
- public static Iterator providers(Class var0) throws ServiceConfigurationError {
- ClassLoader var1 = Thread.currentThread().getContextClassLoader();
- return providers(var0, var1);
- }
-
- public static Iterator installedProviders(Class var0) throws ServiceConfigurationError {
- ClassLoader var1 = ClassLoader.getSystemClassLoader();
-
- ClassLoader var2;
- for(var2 = null; var1 != null; var1 = var1.getParent()) {
- var2 = var1;
- }
-
- return providers(var0, var2);
- }
-
- // $FF: synthetic method
- static void access$000(Class var0, String var1) throws ServiceConfigurationError {
- fail(var0, var1);
- }
-
- // $FF: synthetic method
- static Iterator access$100(Class var0, URL var1, Set var2) throws ServiceConfigurationError {
- return parse(var0, var1, var2);
- }
-
- // $FF: synthetic method
- static void access$200(Class var0, String var1, Throwable var2) throws ServiceConfigurationError {
- fail(var0, var1, var2);
- }
- }
-