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
+                }
             }
         }
     }

Reply via email to