Repository: metron Updated Branches: refs/heads/master e0f9b48e0 -> e1a957be3
METRON-1887: Add logging to the ClasspathFunctionResolver (mmiklavc via mmiklavc) closes apache/metron#1274 Project: http://git-wip-us.apache.org/repos/asf/metron/repo Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/e1a957be Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/e1a957be Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/e1a957be Branch: refs/heads/master Commit: e1a957be3b44986799fb9672536bce43705bd6fa Parents: e0f9b48 Author: mmiklavc <michael.miklav...@gmail.com> Authored: Mon Nov 26 14:21:15 2018 -0700 Committer: Michael Miklavcic <michael.miklav...@gmail.com> Committed: Mon Nov 26 14:21:15 2018 -0700 ---------------------------------------------------------------------- .../common/utils/VFSClassloaderUtil.java | 4 +++ .../resolver/ClasspathFunctionResolver.java | 32 +++++++++++--------- 2 files changed, 22 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metron/blob/e1a957be/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/utils/VFSClassloaderUtil.java ---------------------------------------------------------------------- diff --git a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/utils/VFSClassloaderUtil.java b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/utils/VFSClassloaderUtil.java index 803398c..5690682 100644 --- a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/utils/VFSClassloaderUtil.java +++ b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/utils/VFSClassloaderUtil.java @@ -112,14 +112,18 @@ public class VFSClassloaderUtil { * @throws FileSystemException */ public static Optional<ClassLoader> configureClassloader(String paths) throws FileSystemException { + LOG.debug("Configuring class loader with paths = {}", paths); if(paths.trim().isEmpty()) { + LOG.debug("No paths provided. Not returning a ClassLoader."); return Optional.empty(); } FileSystemManager vfs = generateVfs(); FileObject[] objects = resolve(vfs, paths); if(objects == null || objects.length == 0) { + LOG.debug("No Classloader able to be resolved from provided paths. Not returning a ClassLoader."); return Optional.empty(); } + LOG.debug("vfs = {}, objects = {}", vfs, objects); return Optional.of(new VFSClassLoader(objects, vfs, vfs.getClass().getClassLoader())); } http://git-wip-us.apache.org/repos/asf/metron/blob/e1a957be/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/resolver/ClasspathFunctionResolver.java ---------------------------------------------------------------------- diff --git a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/resolver/ClasspathFunctionResolver.java b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/resolver/ClasspathFunctionResolver.java index b17233a..7b75009 100644 --- a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/resolver/ClasspathFunctionResolver.java +++ b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/resolver/ClasspathFunctionResolver.java @@ -18,6 +18,11 @@ package org.apache.metron.stellar.dsl.functions.resolver; +import static org.apache.metron.stellar.dsl.Context.Capabilities.STELLAR_CONFIG; +import static org.apache.metron.stellar.dsl.functions.resolver.ClasspathFunctionResolver.Config.STELLAR_SEARCH_EXCLUDES_KEY; +import static org.apache.metron.stellar.dsl.functions.resolver.ClasspathFunctionResolver.Config.STELLAR_SEARCH_INCLUDES_KEY; +import static org.apache.metron.stellar.dsl.functions.resolver.ClasspathFunctionResolver.Config.STELLAR_VFS_PATHS; + import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; @@ -33,16 +38,9 @@ import org.apache.metron.stellar.common.utils.VFSClassloaderUtil; import org.apache.metron.stellar.dsl.Context; import org.apache.metron.stellar.dsl.Stellar; import org.apache.metron.stellar.dsl.StellarFunction; - -import org.atteo.classindex.ClassFilter; import org.atteo.classindex.ClassIndex; import org.reflections.util.FilterBuilder; -import static org.apache.metron.stellar.dsl.Context.Capabilities.STELLAR_CONFIG; -import static org.apache.metron.stellar.dsl.functions.resolver.ClasspathFunctionResolver.Config.STELLAR_SEARCH_EXCLUDES_KEY; -import static org.apache.metron.stellar.dsl.functions.resolver.ClasspathFunctionResolver.Config.STELLAR_SEARCH_INCLUDES_KEY; -import static org.apache.metron.stellar.dsl.functions.resolver.ClasspathFunctionResolver.Config.STELLAR_VFS_PATHS; - /** * Performs function resolution for Stellar by searching the classpath. * @@ -239,17 +237,23 @@ public class ClasspathFunctionResolver extends BaseFunctionResolver { public Set<Class<? extends StellarFunction>> resolvables() { ClassLoader[] cls = null; - if(this.classLoaders.size() == 0) { + if (this.classLoaders.size() == 0) { LOG.warn("Using System classloader"); - cls = new ClassLoader[] { getClass().getClassLoader() }; - } - else { - cls = new ClassLoader[this.classLoaders.size()]; + cls = new ClassLoader[]{getClass().getClassLoader()}; + } else { + List<ClassLoader> classLoaderList = new ArrayList<>(); for (int i = 0; i < this.classLoaders.size(); ++i) { ClassLoader cl = this.classLoaders.get(i); - LOG.debug("Using classloader: "+ cl.getClass().getCanonicalName()); - cls[i] = cl; + if (null != cl) { + LOG.debug("Using classloader: {}", cl.getClass().getCanonicalName()); + classLoaderList.add(cl); + } else { + LOG.error( + "This should not happen, so report a bug if you see this error - Classloader {} of {} was null. Classloader list is: {}", + i, this.classLoaders.size(), this.classLoaders); + } } + cls = classLoaderList.toArray(new ClassLoader[classLoaderList.size()]); } FilterBuilder filterBuilder = new FilterBuilder();