@Override public final void configure(ServiceProfile<?> profile) throws InterruptedException, IOException { this.prefix = profile.getPrefix(); try { configureResourceId(profile); Map<String, String> desiredProperties = getDesiredProperties(profile); Map<String, String> desiredEnvironmentVariables = getDesiredEnvironmentVariables(profile); this.properties = Collections.unmodifiableMap(desiredProperties); this.environmentVariables = Collections.unmodifiableMap(desiredEnvironmentVariables); doConfigure(profile, desiredProperties, desiredEnvironmentVariables); } catch (IllegalArgumentException e) { throw new IOException(MessageFormat.format( "Failed to configure \"{0}\" ({1})", profile.getPrefix(), profile.getPrefix()), e); } }