From 74caed563ec466465a1eb39335519f5d0b2351a4 Mon Sep 17 00:00:00 2001 From: Sebastian Menski Date: Sun, 23 Aug 2015 08:31:35 +0200 Subject: [PATCH] chore(core): do not expect default DockerCmdExecFactory service Only fail for missing `DockerCmdExecFactory` service if `getDefaultDockerCmdExecFactory` is called. Otherwise `DockerClientBuilder` can't be used without a `DockerCmdExecFactory` service on classpath. --- .../github/dockerjava/core/DockerClientBuilder.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/github/dockerjava/core/DockerClientBuilder.java b/src/main/java/com/github/dockerjava/core/DockerClientBuilder.java index 51f8c4dc7..f9fd4f2de 100644 --- a/src/main/java/com/github/dockerjava/core/DockerClientBuilder.java +++ b/src/main/java/com/github/dockerjava/core/DockerClientBuilder.java @@ -16,12 +16,9 @@ public class DockerClientBuilder { static { serviceLoader.reload(); Iterator iterator = serviceLoader.iterator(); - if (!iterator.hasNext()) { - throw new RuntimeException("Fatal: Can't find any implementation of '" - + DockerCmdExecFactory.class.getName() + "' in the current classpath."); + if (iterator.hasNext()) { + factoryClass = iterator.next().getClass(); } - - factoryClass = iterator.next().getClass(); } private DockerClientImpl dockerClient = null; @@ -49,6 +46,11 @@ public static DockerClientBuilder getInstance(String serverUrl) { } public static DockerCmdExecFactory getDefaultDockerCmdExecFactory() { + if (factoryClass == null) { + throw new RuntimeException("Fatal: Can't find any implementation of '" + + DockerCmdExecFactory.class.getName() + "' in the current classpath."); + } + try { return factoryClass.newInstance(); } catch (InstantiationException | IllegalAccessException e) {