You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2015/08/14 16:00:23 UTC
[3/5] incubator-tinkerpop git commit: Apply windows path cleanup to
all copied paths in DependencyGrabber.
Apply windows path cleanup to all copied paths in DependencyGrabber.
This was causing an exception as shown in TINKERPOP3-804. Refactored the code a bit to remove some duplication.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/089c0f72
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/089c0f72
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/089c0f72
Branch: refs/heads/master
Commit: 089c0f720c9af1646c2fdc67b6d08f93410bca4b
Parents: f94c36c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Aug 14 08:40:24 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Aug 14 08:40:24 2015 -0400
----------------------------------------------------------------------
.../groovy/util/DependencyGrabber.groovy | 62 +++++++++-----------
1 file changed, 29 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/089c0f72/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/util/DependencyGrabber.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/util/DependencyGrabber.groovy b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/util/DependencyGrabber.groovy
index 14f6bbf..07102fe 100644
--- a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/util/DependencyGrabber.groovy
+++ b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/util/DependencyGrabber.groovy
@@ -76,47 +76,43 @@ class DependencyGrabber {
final def dependencyLocations = [] as Set<URI>
dependencyLocations.addAll(Grape.resolve([classLoader: this.classLoaderToUse], null, dep))
- // if windows then the path contains a starting forward slash that prevents it from being
- // recognized by FileSystem - strip it off
- dependencyLocations.collect {
- def p = SystemUtils.IS_OS_WINDOWS ? it.path.substring(1) : it.path
- return fs.getPath(p)
- }.findAll { !(it.fileName.toFile().name ==~ /(slf4j|logback\-classic)-.*\.jar/) }.findAll {
- !filesAlreadyInPath.collect { it.getFileName().toString() }.contains(it.fileName.toFile().name)
- }.each {
- def copying = targetPluginPath.resolve(it.fileName)
- Files.copy(it, copying, StandardCopyOption.REPLACE_EXISTING)
- println "Copying - $copying"
- }
-
- dependencyLocations.collect {
- def p = SystemUtils.IS_OS_WINDOWS ? it.path.substring(1) : it.path
- return fs.getPath(p)
- }.each {
- def copying = targetLibPath.resolve(it.fileName)
- Files.copy(it, copying, StandardCopyOption.REPLACE_EXISTING)
- println "Copying - $copying"
- }
-
- getAdditionalDependencies(targetPluginPath, artifact).collect { fs.getPath(it.path) }
+ // get dependencies for the plugin path which should be part of the class path
+ dependencyLocations.collect(convertUriToPath(fs))
+ .findAll { !(it.fileName.toFile().name ==~ /(slf4j|logback\-classic)-.*\.jar/) }
+ .findAll {!filesAlreadyInPath.collect { it.getFileName().toString() }.contains(it.fileName.toFile().name)}
+ .each(copyTo(targetPluginPath))
+ getAdditionalDependencies(targetPluginPath, artifact).collect(convertUriToPath(fs))
.findAll { !(it.fileName.toFile().name ==~ /(slf4j|logback\-classic)-.*\.jar/) }
.findAll { !filesAlreadyInPath.collect { it.getFileName().toString() }.contains(it.fileName.toFile().name)}
- .each {
- def copying = targetPluginPath.resolve(it.fileName)
- Files.copy(it, copying, StandardCopyOption.REPLACE_EXISTING)
- println "Copying - $copying"
- }
+ .each(copyTo(targetPluginPath))
- getAdditionalDependencies(targetLibPath, artifact).collect { fs.getPath(it.path) }.each {
- def copying = targetLibPath.resolve(it.fileName)
- Files.copy(it, copying, StandardCopyOption.REPLACE_EXISTING)
- println "Copying - $copying"
- }
+ // get dependencies for the lib path. the lib path should not filter out any jars - used for reference
+ dependencyLocations.collect(convertUriToPath(fs)).each(copyTo(targetLibPath))
+ getAdditionalDependencies(targetLibPath, artifact).collect(convertUriToPath(fs)).each(copyTo(targetLibPath))
alterPaths("Gremlin-Plugin-Paths", targetPluginPath, artifact)
alterPaths("Gremlin-Lib-Paths", targetLibPath, artifact)
}
+ private static Closure copyTo(final Path path) {
+ return { Path p ->
+ def copying = path.resolve(p.fileName)
+ Files.copy(p, copying, StandardCopyOption.REPLACE_EXISTING)
+ println "Copying - $copying"
+ }
+ }
+
+ /**
+ * Windows places a starting forward slash in the URI that needs to be stripped off or else the
+ * {@code FileSystem} won't properly resolve it.
+ */
+ private static Closure convertUriToPath(final FileSystem fs) {
+ return { URI uri ->
+ def p = SystemUtils.IS_OS_WINDOWS ? uri.path.substring(1) : uri.path
+ return fs.getPath(p)
+ }
+ }
+
private Set<URI> getAdditionalDependencies(final Path extPath, final Artifact artifact) {
try {
def pathToInstalled = extPath.resolve(artifact.artifact + "-" + artifact.version + ".jar")