summaryrefslogtreecommitdiffstats
path: root/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema
diff options
context:
space:
mode:
Diffstat (limited to 'infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema')
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ModuleInfoBackedCtxProvider.java51
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ResourceLoader.java135
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/SchemaModule.java33
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/SchemaServiceProvider.java81
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/SerializerProvider.java46
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java30
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModuleMappingIndex.java69
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModulesProvider.java97
8 files changed, 0 insertions, 542 deletions
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ModuleInfoBackedCtxProvider.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ModuleInfoBackedCtxProvider.java
deleted file mode 100644
index e2d0fbfaa..000000000
--- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ModuleInfoBackedCtxProvider.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * 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:
- *
- * http://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 io.fd.honeycomb.infra.distro.schema;
-
-import static io.fd.honeycomb.infra.distro.schema.YangModulesProvider.YangModules;
-
-import com.google.common.base.MoreObjects;
-import com.google.inject.Inject;
-import io.fd.honeycomb.infra.distro.ProviderTrait;
-import java.util.stream.Collectors;
-import org.opendaylight.yangtools.sal.binding.generator.impl.ModuleInfoBackedContext;
-import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public final class ModuleInfoBackedCtxProvider extends ProviderTrait<ModuleInfoBackedContext> {
- private static final Logger LOG = LoggerFactory.getLogger(ModuleInfoBackedCtxProvider.class);
-
- // optional in sense that list of modules inside can be empty if none was found
- @Inject
- private YangModules moduleInfos;
-
- @Override
- protected ModuleInfoBackedContext create() {
- ModuleInfoBackedContext create = ModuleInfoBackedContext.create();
- create.addModuleInfos(moduleInfos.getYangBindings().stream()
- .map(YangModelBindingProvider::getModuleInfo)
- .collect(Collectors.toList()));
- LOG.debug("ModuleInfoBackedContext created from {}", moduleInfos);
- return create;
- }
-
- @Override
- public String toString() {
- return MoreObjects.toStringHelper(this).add("writerFactories", moduleInfos).toString();
- }
-}
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ResourceLoader.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ResourceLoader.java
deleted file mode 100644
index c851dab1b..000000000
--- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ResourceLoader.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2017 Cisco and/or its affiliates.
- *
- * 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:
- *
- * http://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 io.fd.honeycomb.infra.distro.schema;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static java.lang.String.format;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Strings;
-import com.google.common.io.Resources;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Set;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import java.util.stream.Collectors;
-import org.apache.commons.io.IOUtils;
-
-interface ResourceLoader {
-
- default Set<String> loadResourceContentsOnPath(final String path) {
- final URL folderUrl = getClass().getClassLoader().getResource(path);
- checkNotNull(folderUrl, "Resources %s not found", path);
-
- if (ResourceLoaderIml.urlToUri(folderUrl).getScheme().equals("jar")) {
- return ResourceLoaderIml.readFromJar(path, folderUrl);
- } else {
- return ResourceLoaderIml.readFromFolder(folderUrl);
- }
-
- }
-
- final class ResourceLoaderIml {
-
- private static Set<String> readFromFolder(final URL folderUrl) {
- final File folder = new File(folderUrl.getPath());
- final File[] files = checkNotNull(folder.listFiles(), "No files present on path %s", folderUrl);
- return Arrays.stream(files)
- .map(ResourceLoaderIml::fileToUrl)
- .map(ResourceLoaderIml::urlToContentString)
- .flatMap(content -> Arrays.stream(content.split(System.lineSeparator())))
- .filter(ResourceLoaderIml::filterNonEmpty)
- .collect(Collectors.toSet());
- }
-
- private static Set<String> readFromJar(final String path, final URL url) {
- final String uriString = urlToUri(url).toString();
- final String fileReference = extractJarFilePath(uriString);
- try (JarFile jar = new JarFile(new File(fileReference))) {
- return Collections.list(jar.entries())
- .stream()
- .filter(jarEntry -> jarEntry.getName().contains(path))
- .map(jarEntry -> getJarEntryStream(jar, jarEntry))
- .map(ResourceLoaderIml::readJarEntryStream)
- .flatMap(content -> Arrays.stream(content.split(System.lineSeparator())))
- .filter(ResourceLoaderIml::filterNonEmpty)
- .collect(Collectors.toSet());
- } catch (IOException e) {
- throw new IllegalStateException(e);
- }
- }
-
- private static String extractJarFilePath(final String uriString) {
- return uriString.substring(0, uriString.indexOf("!")).replace("jar:file:", "");
- }
-
- private static boolean filterNonEmpty(final String line) {
- return !Strings.isNullOrEmpty(line.trim());
- }
-
- private static String readJarEntryStream(final InputStream inputStream) {
- try {
- final String value = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
- IOUtils.closeQuietly(inputStream);
- return value;
- } catch (IOException e) {
- throw new IllegalStateException(e);
- }
- }
-
- private static InputStream getJarEntryStream(final JarFile jar, final JarEntry jarEntry) {
- try {
- return jar.getInputStream(jarEntry);
- } catch (IOException e) {
- throw new IllegalStateException(format("Unable to get stream for entry %s | jar %s", jar, jarEntry));
- }
- }
-
- private static URI urlToUri(final URL url) {
- try {
- return url.toURI();
- } catch (URISyntaxException e) {
- throw new IllegalStateException(format("Unable to convert URL %s to URI", url));
- }
- }
-
- private static String urlToContentString(final URL url) {
- try {
- return Resources.toString(url, Charsets.UTF_8);
- } catch (IOException e) {
- throw new IllegalArgumentException("Unable to read resource from: " + url, e);
- }
- }
-
- private static URL fileToUrl(final File file) {
- try {
- return file.toURI().toURL();
- } catch (MalformedURLException e) {
- throw new IllegalStateException(e);
- }
- }
- }
-}
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/SchemaModule.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/SchemaModule.java
deleted file mode 100644
index 0799a06f3..000000000
--- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/SchemaModule.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * 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:
- *
- * http://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 io.fd.honeycomb.infra.distro.schema;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.Singleton;
-import org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec;
-import org.opendaylight.controller.sal.core.api.model.SchemaService;
-import org.opendaylight.yangtools.sal.binding.generator.impl.ModuleInfoBackedContext;
-
-public class SchemaModule extends AbstractModule {
-
- protected void configure() {
- bind(ModuleInfoBackedContext.class).toProvider(ModuleInfoBackedCtxProvider.class).in(Singleton.class);
- bind(SchemaService.class).toProvider(SchemaServiceProvider.class).in(Singleton.class);
- bind(BindingToNormalizedNodeCodec.class).toProvider(SerializerProvider.class).in(Singleton.class);
- }
-
-}
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/SchemaServiceProvider.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/SchemaServiceProvider.java
deleted file mode 100644
index eb3552c12..000000000
--- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/SchemaServiceProvider.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * 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:
- *
- * http://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 io.fd.honeycomb.infra.distro.schema;
-
-import com.google.inject.Inject;
-import io.fd.honeycomb.infra.distro.ProviderTrait;
-import org.opendaylight.controller.sal.core.api.model.SchemaService;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.sal.binding.generator.impl.ModuleInfoBackedContext;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
-
-public final class SchemaServiceProvider extends ProviderTrait<SchemaService> {
-
- @Inject
- private ModuleInfoBackedContext mibCtx;
-
- public StaticSchemaService create() {
- return new StaticSchemaService(mibCtx.getSchemaContext());
- }
-
- /**
- * Static schema context provider service.
- */
- private static final class StaticSchemaService implements SchemaService {
- private final SchemaContext schemaContext;
-
- StaticSchemaService(SchemaContext schemaContext) {
- this.schemaContext = schemaContext;
- }
-
- @Override
- public void addModule(final Module module) {
- throw new UnsupportedOperationException("Static service");
- }
-
- @Override
- public void removeModule(final Module module) {
- throw new UnsupportedOperationException("Static service");
- }
-
- @Override
- public SchemaContext getSessionContext() {
- return schemaContext;
- }
-
- @Override
- public SchemaContext getGlobalContext() {
- return schemaContext;
- }
-
- @Override
- public ListenerRegistration<SchemaContextListener> registerSchemaContextListener(
- final SchemaContextListener listener) {
- listener.onGlobalContextUpdated(schemaContext);
- return new ListenerRegistration<SchemaContextListener>() {
- public void close() {}
-
- public SchemaContextListener getInstance() {
- return listener;
- }
-
- };
- }
- }
-}
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/SerializerProvider.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/SerializerProvider.java
deleted file mode 100644
index 2a1963c0a..000000000
--- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/SerializerProvider.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * 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:
- *
- * http://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 io.fd.honeycomb.infra.distro.schema;
-
-import com.google.inject.Inject;
-import io.fd.honeycomb.infra.distro.ProviderTrait;
-import javassist.ClassPool;
-import org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec;
-import org.opendaylight.yangtools.binding.data.codec.gen.impl.DataObjectSerializerGenerator;
-import org.opendaylight.yangtools.binding.data.codec.gen.impl.StreamWriterGenerator;
-import org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry;
-import org.opendaylight.yangtools.sal.binding.generator.impl.ModuleInfoBackedContext;
-import org.opendaylight.yangtools.sal.binding.generator.util.BindingRuntimeContext;
-import org.opendaylight.yangtools.sal.binding.generator.util.JavassistUtils;
-
-public class SerializerProvider extends ProviderTrait<BindingToNormalizedNodeCodec> {
-
- @Inject
- private ModuleInfoBackedContext mibCtx;
-
- @Override
- protected BindingToNormalizedNodeCodec create() {
- final DataObjectSerializerGenerator serializerGenerator =
- StreamWriterGenerator.create(JavassistUtils.forClassPool(ClassPool.getDefault()));
- BindingNormalizedNodeCodecRegistry codecRegistry = new BindingNormalizedNodeCodecRegistry(serializerGenerator);
- BindingRuntimeContext ctx = BindingRuntimeContext.create(mibCtx, mibCtx.getSchemaContext());
- codecRegistry.onBindingRuntimeContextUpdated(ctx);
- BindingToNormalizedNodeCodec codec = new BindingToNormalizedNodeCodec(mibCtx, codecRegistry);
- codec.onGlobalContextUpdated(mibCtx.getSchemaContext());
- return codec;
- }
-}
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java
deleted file mode 100644
index d705226bf..000000000
--- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * 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:
- *
- * http://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 io.fd.honeycomb.infra.distro.schema;
-
-import com.google.inject.AbstractModule;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class YangBindingProviderModule extends AbstractModule {
- private static final Logger LOG = LoggerFactory.getLogger(YangBindingProviderModule.class);
-
- protected void configure() {
- LOG.info("Configuring YangBindingProviderModule");
- bind(YangModulesProvider.YangModules.class).toProvider(YangModulesProvider.class).asEagerSingleton();
- }
-}
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModuleMappingIndex.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModuleMappingIndex.java
deleted file mode 100644
index a483cfd9c..000000000
--- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModuleMappingIndex.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * 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:
- *
- * http://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 io.fd.honeycomb.infra.distro.schema;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.LinkedListMultimap;
-import com.google.common.collect.Multimap;
-import java.util.Arrays;
-import java.util.Set;
-import java.util.stream.Stream;
-import javax.annotation.Nonnull;
-
-/**
- * Index from guice module to yang module providers
- */
-class YangModuleMappingIndex implements ResourceLoader {
-
- private static final String G_MODULE_TOKEN = "GUICE_MODULE:";
- private static final String KEY_VALUE_SEPARATOR = "|";
- private static final String Y_MODULE_TOKEN = "YANG_MODULES:";
- private static final String Y_MODULE_SEPARATOR = ",";
-
- /**
- * key - module class name
- * value - yang module provider
- */
- private final Multimap<String, String> index;
-
- YangModuleMappingIndex(final String indexPath) {
- this.index = LinkedListMultimap.create();
- loadResourceContentsOnPath(indexPath)
- .forEach(line -> {
- final String moduleName = parseModuleName(line);
- parseYangModules(line).forEach(yModuleProvider -> index.put(moduleName, yModuleProvider));
- });
- }
-
- Set<String> getByModuleName(@Nonnull final String moduleName) {
- return ImmutableSet.copyOf(index.get(moduleName));
- }
-
- int applicationModulesCount() {
- return index.keySet().size();
- }
-
- private static String parseModuleName(final String rawLine) {
- return rawLine.substring(rawLine.indexOf(G_MODULE_TOKEN) + G_MODULE_TOKEN.length(),
- rawLine.indexOf(KEY_VALUE_SEPARATOR));
- }
-
- private static Stream<String> parseYangModules(final String rawLine) {
- return Arrays.stream(rawLine.substring(rawLine.indexOf(Y_MODULE_TOKEN) + Y_MODULE_TOKEN.length())
- .split(Y_MODULE_SEPARATOR));
- }
-}
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModulesProvider.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModulesProvider.java
deleted file mode 100644
index f6d8ea0c1..000000000
--- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModulesProvider.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * 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:
- *
- * http://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 io.fd.honeycomb.infra.distro.schema;
-
-
-import static java.lang.String.format;
-
-import com.google.common.base.Charsets;
-import com.google.common.io.Resources;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import io.fd.honeycomb.infra.distro.activation.ActivationConfig;
-import io.fd.honeycomb.infra.distro.activation.ActiveModules;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Collection;
-import java.util.Set;
-import java.util.stream.Collectors;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider;
-
-/**
- * Loads active yang modules
- * Relying on generate yang-module-index
- */
-public class YangModulesProvider implements Provider<YangModulesProvider.YangModules> {
-
- @Inject
- private ActiveModules activeModules;
-
- @Inject
- private ActivationConfig config;
-
- @Override
- public YangModules get() {
- // no need to bind this, pretty big map and its needed just here
- final YangModuleMappingIndex index = new YangModuleMappingIndex(config.getYangModulesIndexPath());
-
- return new YangModules(activeModules.getActiveModulesClasses().stream()
- .map(Class::getName)
- .map(index::getByModuleName)
- .flatMap(Collection::stream)
- .map(YangModulesProvider::loadClass)
- .map(aClass -> (Class<? extends YangModelBindingProvider>) aClass)
- .collect(Collectors.toSet()));
- }
-
- static class YangModules {
- private final Set<Class<? extends YangModelBindingProvider>> yangBindings;
-
- YangModules(final Set<Class<? extends YangModelBindingProvider>> yangBindings) {
- this.yangBindings = yangBindings;
- }
-
- Set<YangModelBindingProvider> getYangBindings() {
- return yangBindings.stream()
- .map(providerClass -> {
- try {
- return providerClass.newInstance();
- } catch (InstantiationException | IllegalAccessException e) {
- throw new IllegalStateException(format("Unable to create instance of %s", providerClass),
- e);
- }
- }).collect(Collectors.toSet());
- }
- }
-
- private static Class<?> loadClass(@Nonnull final String className) {
- try {
- return Class.forName(className);
- } catch (ClassNotFoundException e) {
- throw new IllegalArgumentException("Unable to load class: " + className, e);
- }
- }
-
- static String urlToString(@Nonnull final URL url) {
- try {
- return Resources.toString(url, Charsets.UTF_8);
- } catch (IOException e) {
- throw new IllegalArgumentException("Unable to read resource from: " + url, e);
- }
- }
-}