org.datatransferproject.spi.cloud.extension.CloudExtensionLoader Maven / Gradle / Ivy
/*
* Copyright 2018 The Data Transfer Project Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.datatransferproject.spi.cloud.extension;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import java.util.ServiceLoader;
/** Helper for loading the cloud extension in a runtime. */
public class CloudExtensionLoader {
public static CloudExtension getCloudExtension() {
ImmutableList.Builder extensionsBuilder = ImmutableList.builder();
ServiceLoader.load(CloudExtension.class).iterator().forEachRemaining(extensionsBuilder::add);
ImmutableList extensions = extensionsBuilder.build();
Preconditions.checkState(
extensions.size() == 1,
"Exactly one CloudExtension is required, but found " + extensions.size());
return extensions.get(0);
}
private CloudExtensionLoader() {}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy