Check if variable is null to avoid NPE If staticVariableTypes is an empty list in the YAML file, then we throw an NPE by trying to run collectEntries() on a null object or trying to run containsKey() on a null object.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/9bdef4d8 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/9bdef4d8 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/9bdef4d8 Branch: refs/heads/tp32 Commit: 9bdef4d86c3065b02c402a6d44dbf0329a0e2ddc Parents: 1e349c8 Author: dpitera <[email protected]> Authored: Thu Apr 6 12:16:59 2017 -0400 Committer: dpitera <[email protected]> Committed: Mon Apr 17 14:31:41 2017 -0400 ---------------------------------------------------------------------- CHANGELOG.asciidoc | 1 + .../customizer/AbstractSandboxExtension.groovy | 4 ++-- .../jsr223/customizer/FileSandboxExtension.groovy | 16 ++++++++++------ 3 files changed, 13 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9bdef4d8/CHANGELOG.asciidoc ---------------------------------------------------------------------- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 40819af..6923a84 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -73,6 +73,7 @@ TinkerPop 3.2.5 (Release Date: NOT OFFICIALLY RELEASED YET) * Implemented `DefaultGraphManager` to include previous `GraphManager` functionality and adhere to updated interface. * Deprecated `GraphManager.getGraphs()` and added `GraphManager.getGraphNames()`. * Deprecated `GraphManager.getTraversalSources()` and added `GraphManager.getTraversalSourceNames()`. +* Fixed a bug so now users can supply a YAML with an empty `staticVariableTypes` to be used by the `FileSandboxExtension` [[release-3-2-4]] TinkerPop 3.2.4 (Release Date: February 8, 2017) http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9bdef4d8/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/AbstractSandboxExtension.groovy ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/AbstractSandboxExtension.groovy b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/AbstractSandboxExtension.groovy index 699e250..9685607 100644 --- a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/AbstractSandboxExtension.groovy +++ b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/AbstractSandboxExtension.groovy @@ -51,7 +51,7 @@ abstract class AbstractSandboxExtension extends GroovyTypeCheckingExtensionSuppo def boolean autoTypeUnknown = allowAutoTypeOfUnknown() unresolvedVariable { var -> - if (staticVariableTyping.containsKey(var.name)) { + if ((null != staticVariableTyping) && (staticVariableTyping.containsKey(var.name))) { storeType(var, classNodeFor(staticVariableTyping[var.name])) handled = true return @@ -87,4 +87,4 @@ abstract class AbstractSandboxExtension extends GroovyTypeCheckingExtensionSuppo visitor.visitMethod(methodNode) } } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9bdef4d8/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/FileSandboxExtension.groovy ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/FileSandboxExtension.groovy b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/FileSandboxExtension.groovy index 30e440b..6e9e374 100644 --- a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/FileSandboxExtension.groovy +++ b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/FileSandboxExtension.groovy @@ -63,12 +63,16 @@ class FileSandboxExtension extends AbstractSandboxExtension { autoTypeUnknown = settings.autoTypeUnknown methodWhiteList = settings.methodWhiteList - staticVariableTypes = settings.staticVariableTypes.collectEntries { kv -> - try { - return [(kv.key): Class.forName(kv.value)] - } catch (Exception ex) { - logger.error("Could not convert ${kv.value} to a Class for variable ${kv.key}", ex) - throw ex + if (null == settings.staticVariableTypes) { + staticVariableTypes = null + } else { + staticVariableTypes = settings.staticVariableTypes.collectEntries { kv -> + try { + return [(kv.key): Class.forName(kv.value)] + } catch (Exception ex) { + logger.error("Could not convert ${kv.value} to a Class for variable ${kv.key}", ex) + throw ex + } } } }
