You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sdap.apache.org by le...@apache.org on 2017/10/27 22:39:44 UTC

[07/51] [partial] incubator-sdap-nexus git commit: SDAP-1 Import all code under the SDAP SGA

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/build/reports/project/dependencies/js/script.js
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-messages/build/reports/project/dependencies/js/script.js b/nexus-ingest/nexus-messages/build/reports/project/dependencies/js/script.js
new file mode 100644
index 0000000..7f4d9a8
--- /dev/null
+++ b/nexus-ingest/nexus-messages/build/reports/project/dependencies/js/script.js
@@ -0,0 +1,202 @@
+/*
+ * Copyright 2013 the original author or authors.
+ *
+ * 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.
+ */
+
+function populateFooter(report) {
+    $("#gradleVersion").text(report.gradleVersion);
+    $("#generationDate").text(report.generationDate);
+}
+
+function initializeProjectPage(report) {
+    $(document).ready(function() {
+        // event handling to close the insight div
+        $('#insight').on('click', '#dismissInsight', function(event) {
+            $('#insight').fadeOut();
+            event.preventDefault();
+        });
+
+        // creates a node of a dependency tree
+        function createDependencyNode(dependency) {
+            var node = {
+                data : dependency.name,
+                state : "open",
+                attr : {'data-module' : dependency.module},
+                children : []
+            };
+            var classes = [];
+            if (dependency.alreadyRendered) {
+                classes.push('alreadyRendered');
+            }
+            if (dependency.hasConflict) {
+                classes.push('hasConflict');
+            }
+            if (!dependency.resolvable) {
+                classes.push('unresolvable');
+            }
+            if (classes.length > 0) {
+                node.attr['class'] = classes.join(' ');
+            }
+            $.each(dependency.children, function(index, dependency) {
+                var dependencyNode = createDependencyNode(dependency);
+                node.children.push(dependencyNode);
+            });
+            return node;
+        }
+
+        // finds the moduleInsight by module among the given moduleInsights and returns its insight
+        function findInsight(moduleInsights, module) {
+            for (var i = 0; i < moduleInsights.length; i++) {
+                if (moduleInsights[i].module == module) {
+                    return moduleInsights[i].insight;
+                }
+            }
+            return null;
+        }
+
+        // creates a node of the insight tree
+        function createInsightNode(dependency) {
+            var node = {
+                data : dependency.name + (dependency.description ? ' (' + dependency.description + ')' : ''),
+                state : "open",
+                attr : {},
+                children : []
+            }
+            var classes = [];
+            if (dependency.alreadyRendered) {
+                classes.push('alreadyRendered');
+            }
+            if (!dependency.resolvable) {
+                classes.push('unresolvable');
+            }
+            if (dependency.hasConflict) {
+                classes.push('hasConflict');
+            }
+            if (dependency.isLeaf) {
+                classes.push('leaf');
+            }
+            if (classes.length > 0) {
+                node.attr['class'] = classes.join(' ');
+            }
+            $.each(dependency.children, function(index, dependency) {
+                var dependencyNode = createInsightNode(dependency);
+                node.children.push(dependencyNode);
+            });
+            return node;
+        }
+
+        // generates a tree for the given module by finding the insight among the given moduleInsights,
+        // and displays the insight div
+        function showModuleInsight(module, moduleInsights) {
+            var $insightDiv = $('#insight');
+            $insightDiv.html('');
+            $insightDiv.append($('<i> </i>').attr('id', 'dismissInsight').attr('title', 'Close'));
+            $insightDiv.append($('<h3>Insight for module </h3>').append(module));
+            var $tree = $('<div>').addClass('insightTree');
+            var insight = findInsight(moduleInsights, module);
+            var nodes = [];
+            $.each(insight, function(index, dependency) {
+                var dependencyNode = createInsightNode(dependency);
+                nodes.push(dependencyNode);
+            });
+            $tree.append($('<img>').attr('src', 'throbber.gif')).append('Loading...');
+            $tree.jstree({
+                json_data : {
+                    data : nodes
+                },
+                themes : {
+                    url : 'css/tree.css',
+                    icons : false
+                },
+                plugins : ['json_data', 'themes']
+            }).bind("loaded.jstree", function (event, data) {
+                        $('li.unresolvable a').attr('title', 'This dependency could not be resolved');
+                        $('li.alreadyRendered a').attr('title', 'The children of this dependency are not displayed because they have already been displayed before');
+                    });
+            $insightDiv.append($tree);
+            $tree.on('click', 'a', function(event) {
+                event.preventDefault();
+            });
+            $insightDiv.fadeIn();
+        }
+
+        // generates the configuration dependeny trees
+        var $dependencies = $('#dependencies');
+        var project = report.project;
+
+        $dependencies.append($('<h2/>').text('Project ' + project.name));
+        if (project.description) {
+            $dependencies.append($('<p>').addClass('projectDescription').text(project.name));
+        }
+
+        $.each(project.configurations, function(index, configuration) {
+            var $configurationDiv = $('<div/>').addClass('configuration');
+            var $configurationTitle = $('<h3/>').addClass('closed').append($('<ins/>')).append(configuration.name);
+            if (configuration.description) {
+                $configurationTitle.append(' - ').append($('<span/>').addClass('configurationDescription').text(configuration.description));
+            }
+            $configurationDiv.append($configurationTitle);
+
+            var $contentDiv = $('<div/>').addClass('configurationContent').hide();
+            var $tree = $('<div>').addClass('dependencyTree');
+            $contentDiv.append($tree);
+            if (configuration.dependencies && configuration.dependencies.length > 0) {
+                var nodes = [];
+                $.each(configuration.dependencies, function(index, dependency) {
+                    var dependencyNode = createDependencyNode(dependency);
+                    nodes.push(dependencyNode);
+                });
+                $tree.append($('<img>').attr('src', 'throbber.gif')).append('Loading...');
+                $tree.jstree({
+                    json_data : {
+                        data : nodes
+                    },
+                    themes : {
+                        url : 'css/tree.css',
+                        icons : false
+                    },
+                    plugins : ['json_data', 'themes']
+                }).bind("loaded.jstree", function (event, data) {
+                            $('li.unresolvable a').attr('title', 'This dependency could not be resolved');
+                            $('li.alreadyRendered a').attr('title', 'The children of this dependency are not displayed because they have already been displayed before');
+                        });
+            }
+            else {
+                $tree.append($('<p/>').text("No dependency"));
+            }
+
+            $tree.on('click', 'a', function(event) {
+                event.preventDefault();
+                var module = $(this).closest('li').attr('data-module');
+                showModuleInsight(module, configuration.moduleInsights);
+            });
+
+            $configurationDiv.append($contentDiv);
+            $dependencies.append($configurationDiv);
+        });
+
+        // allows the titles of each dependency tree to toggle the visibility of their tree
+        $dependencies.on('click', 'h3', function(event) {
+            $('div.configurationContent', $(this).parent()).slideToggle();
+            $(this).toggleClass('closed');
+        });
+
+        $('#projectBreacrumb').text(project.name);
+        populateFooter(report);
+    });
+}
+
+if (window.projectDependencyReport) {
+    initializeProjectPage(window.projectDependencyReport);
+}

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.html
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.html b/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.html
new file mode 100644
index 0000000..c6f8578
--- /dev/null
+++ b/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.html
@@ -0,0 +1,40 @@
+
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+		<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+		<link rel="stylesheet" type="text/css" href="css/base-style.css"/>
+		<link rel="stylesheet" type="text/css" href="css/style.css"/>
+		<script src="js/jquery.min-1.11.0.js" charset="utf-8">
+		</script>
+		<script src="js/jquery.jstree.js" charset="utf-8">
+		</script>
+		<script src="root.js" charset="utf-8">
+		</script>
+		<script src="js/script.js" charset="utf-8">
+		</script>
+		<title>Dependency reports
+		</title>
+	</head>
+	<body>
+		<div id="content">
+			<h1>Dependency Report
+			</h1>
+			<div class="breadcrumbs">
+				<a href="index.html">Projects
+				</a> &gt; 
+				<span id="projectBreacrumb"/>
+			</div>
+			<div id="insight">
+			</div>
+			<div id="dependencies">
+			</div>
+			<div id="footer">
+				<p>Generated by 
+					<a href="http://www.gradle.org">Gradle 2.12
+					</a> at Sep 11, 2017 11:06:29 AM
+				</p>
+			</div>
+		</div>
+	</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.js
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.js b/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.js
new file mode 100644
index 0000000..db39485
--- /dev/null
+++ b/nexus-ingest/nexus-messages/build/reports/project/dependencies/root.js
@@ -0,0 +1 @@
+var projectDependencyReport = {"gradleVersion":"Gradle 2.12","generationDate":"Mon Sep 11 11:06:29 PDT 2017","project":{"name":"nexus-messages","description":null,"configurations":[{"name":"archives","description":"Configuration for archive artifacts.","dependencies":[],"moduleInsights":[]},{"name":"compile","description":"Dependencies for source set 'main'.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"compile","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name":"compileClasspath","description":"Compile classpath for source set 'main'.","dependencies":[{"module":"com.google.protobuf:protob
 uf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"compileClasspath","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name":"compileOnly","description":"Compile dependencies for source set 'main'.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"compileOnly","resolvable":true,"hasConflict":false,"alreadyRendered":
 false,"isLeaf":true,"children":[]}]}]}]},{"name":"default","description":"Configuration for default artifacts.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"default","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name":"protobuf","description":null,"dependencies":[],"moduleInsights":[]},{"name":"protobufToolsLocator_protoc","description":null,"dependencies":[{"module":"com.google.protobuf:protoc","name":"com.google.protobuf:protoc:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protoc","insight":[{"name":"c
 om.google.protobuf:protoc:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"protobufToolsLocator_protoc","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name":"runtime","description":"Runtime dependencies for source set 'main'.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"runtime","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name":"testCompile","description":"Dependencies for source set 'test'.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1"
 ,"resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"testCompile","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name":"testCompileClasspath","description":"Compile classpath for source set 'test'.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"testCompileClasspath","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name
 ":"testCompileOnly","description":"Compile dependencies for source set 'test'.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-java","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"testCompileOnly","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]},{"name":"testProtobuf","description":null,"dependencies":[],"moduleInsights":[]},{"name":"testRuntime","description":"Runtime dependencies for source set 'test'.","dependencies":[{"module":"com.google.protobuf:protobuf-java","name":"com.google.protobuf:protobuf-java:2.6.1","resolvable":true,"hasConflict":false,"alreadyRendered":false,"children":[]}],"moduleInsights":[{"module":"com.google.protobuf:protobuf-j
 ava","insight":[{"name":"com.google.protobuf:protobuf-java:2.6.1","description":null,"resolvable":true,"hasConflict":false,"children":[{"name":"testRuntime","resolvable":true,"hasConflict":false,"alreadyRendered":false,"isLeaf":true,"children":[]}]}]}]}]}};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/build/reports/project/properties.txt
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-messages/build/reports/project/properties.txt b/nexus-ingest/nexus-messages/build/reports/project/properties.txt
new file mode 100644
index 0000000..881ab7b
--- /dev/null
+++ b/nexus-ingest/nexus-messages/build/reports/project/properties.txt
@@ -0,0 +1,128 @@
+
+------------------------------------------------------------
+Root project
+------------------------------------------------------------
+
+allprojects: [root project 'nexus-messages']
+ant: org.gradle.api.internal.project.DefaultAntBuilder@3ad50290
+antBuilderFactory: org.gradle.api.internal.project.DefaultAntBuilderFactory@590029cc
+archivesBaseName: nexus-messages
+artifacts: org.gradle.api.internal.artifacts.dsl.DefaultArtifactHandler_Decorated@7b001246
+asDynamicObject: org.gradle.api.internal.ExtensibleDynamicObject@180d9997
+assemble: task ':assemble'
+baseClassLoaderScope: org.gradle.api.internal.initialization.DefaultClassLoaderScope@a5ed984
+buildDependents: task ':buildDependents'
+buildDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build
+buildFile: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build.gradle
+buildNeeded: task ':buildNeeded'
+buildScriptSource: org.gradle.groovy.scripts.UriScriptSource@52c8cf4a
+buildscript: org.gradle.api.internal.initialization.DefaultScriptHandler@29a17577
+check: task ':check'
+childProjects: {}
+class: class org.gradle.api.internal.project.DefaultProject_Decorated
+classLoaderScope: org.gradle.api.internal.initialization.DefaultClassLoaderScope@5d1480f5
+classes: task ':classes'
+clean: task ':clean'
+compileJava: task ':compileJava'
+compileTestJava: task ':compileTestJava'
+components: [org.gradle.api.internal.java.JavaLibrary@21faf02a]
+conf2ScopeMappings: org.gradle.api.publication.maven.internal.pom.DefaultConf2ScopeMappingContainer@8e909257
+configurationActions: org.gradle.configuration.project.DefaultProjectConfigurationActionContainer@355cc9c0
+configurations: [configuration ':archives', configuration ':compile', configuration ':compileClasspath', configuration ':compileOnly', configuration ':default', configuration ':protobuf', configuration ':protobufToolsLocator_protoc', configuration ':runtime', configuration ':testCompile', configuration ':testCompileClasspath', configuration ':testCompileOnly', configuration ':testProtobuf', configuration ':testRuntime']
+convention: org.gradle.api.internal.plugins.DefaultConvention@17f418d1
+defaultArtifacts: org.gradle.api.internal.plugins.DefaultArtifactPublicationSet_Decorated@6e9e21f2
+defaultTasks: []
+deferredProjectConfiguration: org.gradle.api.internal.project.DeferredProjectConfiguration@1893f7ab
+dependencies: org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@4bd22fb0
+dependencyCacheDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/dependency-cache
+dependencyCacheDirName: dependency-cache
+dependencyReport: task ':dependencyReport'
+depth: 0
+description: null
+distDirectory: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/distrobution
+distsDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/distributions
+distsDirName: distributions
+docsDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/docs
+docsDirName: docs
+ext: org.gradle.api.internal.plugins.DefaultExtraPropertiesExtension@7c57848b
+extensions: org.gradle.api.internal.plugins.DefaultConvention@17f418d1
+extractIncludeProto: task ':extractIncludeProto'
+extractIncludeTestProto: task ':extractIncludeTestProto'
+extractProto: task ':extractProto'
+extractTestProto: task ':extractTestProto'
+fileOperations: org.gradle.api.internal.file.DefaultFileOperations@6359bb42
+fileResolver: org.gradle.api.internal.file.BaseDirFileResolver@64f0362d
+genDirectory: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/gen
+generatePomFileForMavenJavaPublication: task ':generatePomFileForMavenJavaPublication'
+generateProto: task ':generateProto'
+generateTestProto: task ':generateTestProto'
+gradle: build 'nexus-messages'
+group: org.nasa.jpl.nexus
+htmlDependencyReport: task ':htmlDependencyReport'
+inheritedScope: org.gradle.api.internal.ExtensibleDynamicObject$InheritedDynamicObject@3e852aac
+install: task ':install'
+jar: task ':jar'
+javadoc: task ':javadoc'
+libsDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/libs
+libsDirName: libs
+logger: org.gradle.logging.internal.slf4j.OutputEventListenerBackedLogger@34e667fd
+logging: org.gradle.logging.internal.DefaultLoggingManager@7eb6822b
+mavenPomDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/poms
+modelRegistry: org.gradle.model.internal.registry.DefaultModelRegistry@509ba514
+modelSchemaStore: org.gradle.model.internal.manage.schema.extract.DefaultModelSchemaStore@426bb8e6
+module: org.gradle.api.internal.artifacts.ProjectBackedModule@37a6f6a0
+name: nexus-messages
+osdetector: com.google.gradle.osdetector.OsDetectorExtension_Decorated@35bfa074
+parent: null
+parentIdentifier: null
+path: :
+pluginManager: org.gradle.api.internal.plugins.DefaultPluginManager_Decorated@22782c25
+plugins: [org.gradle.api.plugins.HelpTasksPlugin@34a3975e, org.gradle.language.base.plugins.LifecycleBasePlugin@5755195c, org.gradle.api.plugins.BasePlugin@51529a58, org.gradle.api.plugins.ReportingBasePlugin@22d2e496, org.gradle.platform.base.plugins.ComponentBasePlugin@5a34f2ae, org.gradle.language.base.plugins.LanguageBasePlugin@269151f1, org.gradle.platform.base.plugins.BinaryBasePlugin@245f195b, org.gradle.api.plugins.JavaBasePlugin@68468161, org.gradle.api.plugins.JavaPlugin@b82466a, com.google.gradle.osdetector.OsDetectorPlugin@21920c0a, com.google.protobuf.gradle.ProtobufPlugin@6208f25, org.gradle.api.plugins.MavenPlugin@22751cdc, org.gradle.api.publish.plugins.PublishingPlugin@12c940d0, org.gradle.api.publish.maven.plugins.MavenPublishPlugin@3cece406, org.gradle.api.plugins.ProjectReportsPlugin@5b3d0ef5]
+processOperations: org.gradle.api.internal.file.DefaultFileOperations@6359bb42
+processResources: task ':processResources'
+processTestResources: task ':processTestResources'
+project: root project 'nexus-messages'
+projectDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages
+projectEvaluationBroadcaster: ProjectEvaluationListener broadcast
+projectEvaluator: org.gradle.configuration.project.LifecycleProjectEvaluator@6815459b
+projectRegistry: org.gradle.api.internal.project.DefaultProjectRegistry@65abfe88
+projectReport: task ':projectReport'
+projectReportDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/reports/project
+projectReportDirName: project
+projects: [root project 'nexus-messages']
+properties: {...}
+propertyReport: task ':propertyReport'
+protobuf: com.google.protobuf.gradle.ProtobufConfigurator@2d5f4e49
+publish: task ':publish'
+publishToMavenLocal: task ':publishToMavenLocal'
+publishing: org.gradle.api.publish.internal.DefaultPublishingExtension_Decorated@2cc9955e
+pythonBuildDirPath: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/python/nexusproto
+reporting: org.gradle.api.reporting.ReportingExtension_Decorated@4e2556c3
+reportsDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/reports
+repositories: [org.gradle.api.internal.artifacts.repositories.DefaultMavenArtifactRepository_Decorated@cdefb01]
+resources: org.gradle.api.internal.resources.DefaultResourceHandler@36bb0bac
+rootDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages
+rootProject: root project 'nexus-messages'
+scriptHandlerFactory: org.gradle.api.internal.initialization.DefaultScriptHandlerFactory@61413634
+scriptPluginFactory: org.gradle.configuration.DefaultScriptPluginFactory@5b6e791
+serviceRegistryFactory: org.gradle.internal.service.scopes.ProjectScopeServices$4@7ecb12d5
+services: ProjectScopeServices
+sourceCompatibility: 1.8
+sourceSets: [source set 'main', source set 'test']
+standardOutputCapture: org.gradle.logging.internal.DefaultLoggingManager@7eb6822b
+state: project state 'EXECUTED'
+status: integration
+subprojects: []
+tarPython: task ':tarPython'
+targetCompatibility: 1.8
+taskReport: task ':taskReport'
+tasks: [task ':assemble', task ':buildDependents', task ':buildNeeded', task ':check', task ':classes', task ':clean', task ':compileJava', task ':compileTestJava', task ':dependencyReport', task ':extractIncludeProto', task ':extractIncludeTestProto', task ':extractProto', task ':extractTestProto', task ':generatePomFileForMavenJavaPublication', task ':generateProto', task ':generateTestProto', task ':htmlDependencyReport', task ':install', task ':jar', task ':javadoc', task ':processResources', task ':processTestResources', task ':projectReport', task ':propertyReport', task ':publish', task ':publishToMavenLocal', task ':tarPython', task ':taskReport', task ':test', task ':testClasses', task ':wrapper', task ':writeNewPom']
+test: task ':test'
+testClasses: task ':testClasses'
+testReportDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/reports/tests
+testReportDirName: tests
+testResultsDir: /Users/greguska/githubprojects/nexus/nexus-ingest/nexus-messages/build/test-results
+testResultsDirName: test-results
+version: 1.0.0.RELEASE
+wrapper: task ':wrapper'
+writeNewPom: task ':writeNewPom'

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/build/reports/project/tasks.txt
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-messages/build/reports/project/tasks.txt b/nexus-ingest/nexus-messages/build/reports/project/tasks.txt
new file mode 100644
index 0000000..2a2bcbe
--- /dev/null
+++ b/nexus-ingest/nexus-messages/build/reports/project/tasks.txt
@@ -0,0 +1,68 @@
+
+------------------------------------------------------------
+All tasks runnable from root project
+------------------------------------------------------------
+
+Build tasks
+-----------
+assemble - Assembles the outputs of this project.
+build - Assembles and tests this project.
+buildDependents - Assembles and tests this project and all projects that depend on it.
+buildNeeded - Assembles and tests this project and all projects it depends on.
+classes - Assembles main classes.
+clean - Deletes the build directory.
+jar - Assembles a jar archive containing the main classes.
+testClasses - Assembles test classes.
+
+Build Setup tasks
+-----------------
+init - Initializes a new Gradle build. [incubating]
+
+Documentation tasks
+-------------------
+javadoc - Generates Javadoc API documentation for the main source code.
+
+Help tasks
+----------
+buildEnvironment - Displays all buildscript dependencies declared in root project 'nexus-messages'.
+components - Displays the components produced by root project 'nexus-messages'. [incubating]
+dependencies - Displays all dependencies declared in root project 'nexus-messages'.
+dependencyInsight - Displays the insight into a specific dependency in root project 'nexus-messages'.
+help - Displays a help message.
+model - Displays the configuration model of root project 'nexus-messages'. [incubating]
+projects - Displays the sub-projects of root project 'nexus-messages'.
+properties - Displays the properties of root project 'nexus-messages'.
+tasks - Displays the tasks runnable from root project 'nexus-messages'.
+
+Publishing tasks
+----------------
+generatePomFileForMavenJavaPublication - Generates the Maven POM file for publication 'mavenJava'.
+publish - Publishes all publications produced by this project.
+publishMavenJavaPublicationToMavenLocal - Publishes Maven publication 'mavenJava' to the local Maven repository.
+publishToMavenLocal - Publishes all Maven publications produced by this project to the local Maven cache.
+
+Reporting tasks
+---------------
+projectReport - Generates a report about your project.
+
+Verification tasks
+------------------
+check - Runs all checks.
+test - Runs the unit tests.
+
+Other tasks
+-----------
+install - Installs the 'archives' artifacts into the local Maven repository.
+tarPython
+wrapper
+writeNewPom
+
+Rules
+-----
+Pattern: clean<TaskName>: Cleans the output files of a task.
+Pattern: build<ConfigurationName>: Assembles the artifacts of a configuration.
+Pattern: upload<ConfigurationName>: Assembles and uploads the artifacts belonging to a configuration.
+
+To see all tasks and more detail, run gradle tasks --all
+
+To see more detail about a task, run gradle help --task <task>

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/example.gradle.properties
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-messages/example.gradle.properties b/nexus-ingest/nexus-messages/example.gradle.properties
new file mode 100644
index 0000000..356eee2
--- /dev/null
+++ b/nexus-ingest/nexus-messages/example.gradle.properties
@@ -0,0 +1,7 @@
+artifactory_contextUrl=https://artifactory.com/artifactory
+artifactory_user=ARTIFACTORY_USERNAME
+artifactory_password=ARTIFACTORY_PASSWORD
+publish_repoKey=private-maven-key
+resolve_repoKey=maven-central-key
+
+python_executable=/path/to/anaconda/bin/python

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.jar
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.jar b/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..2c6137b
Binary files /dev/null and b/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.jar differ

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.properties
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.properties b/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..a7e6b9b
--- /dev/null
+++ b/nexus-ingest/nexus-messages/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Thu Apr 27 10:03:46 PDT 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.12-bin.zip

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/gradlew
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-messages/gradlew b/nexus-ingest/nexus-messages/gradlew
new file mode 100755
index 0000000..9d82f78
--- /dev/null
+++ b/nexus-ingest/nexus-messages/gradlew
@@ -0,0 +1,160 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/src/main/proto/NexusContent.proto
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-messages/src/main/proto/NexusContent.proto b/nexus-ingest/nexus-messages/src/main/proto/NexusContent.proto
new file mode 100644
index 0000000..ea83c9f
--- /dev/null
+++ b/nexus-ingest/nexus-messages/src/main/proto/NexusContent.proto
@@ -0,0 +1,99 @@
+
+syntax = "proto2";
+
+package org.nasa.jpl.nexus.ingest.wiretypes;
+message GridTile{
+
+    optional ShapedArray latitude = 1;
+    optional ShapedArray longitude = 2;
+
+    optional int64 time = 3;
+
+    optional ShapedArray variable_data = 4;
+
+    repeated MetaData meta_data = 5;
+
+}
+
+message SwathTile{
+
+    optional ShapedArray latitude = 1;
+    optional ShapedArray longitude = 2;
+    optional ShapedArray time = 3;
+
+    optional ShapedArray variable_data = 4;
+
+    repeated MetaData meta_data = 5;
+
+}
+
+message MetaData{
+    required string name = 1;
+    required ShapedArray meta_data = 2;
+}
+
+message ShapedArray{
+    repeated int32 shape = 1 [packed=true];
+    required string dtype = 2;
+    required bytes array_data = 3;
+}
+
+message Attribute{
+    optional string name = 1;
+    repeated string values = 2;
+}
+
+message TileSummary{
+
+    optional string tile_id = 1;
+    optional string section_spec = 2;
+    optional string dataset_name = 3;
+    optional string granule = 4;
+    optional string dataset_uuid = 5;
+    optional string data_var_name = 6;
+    repeated Attribute global_attributes = 7;
+
+    message BBox{
+        optional float lat_min = 1;
+        optional float lat_max = 2;
+        optional float lon_min = 3;
+        optional float lon_max = 4;
+    }
+    optional BBox bbox = 8;
+    
+    message DataStats{
+        optional float min = 1;
+        optional float max = 2;
+        optional float mean = 3;
+        optional int64 count = 4;
+
+        optional int64 min_time = 5;
+        optional int64 max_time = 6;
+    }
+    optional DataStats stats = 9;
+}
+
+message NexusTile{
+    optional TileSummary summary = 1;
+    optional TileData tile = 2;
+}
+
+message TileData{
+    optional string tile_id = 1;
+
+    oneof tile_type{
+        GridTile grid_tile = 2;
+        SwathTile swath_tile = 3;
+    }
+}
+
+message DimensionSlice{
+
+    oneof name_or_position{
+        string dimension_name = 1;
+        int32 dimension_position = 2;
+    }
+    required int64 start = 3;
+    required int64 stop = 4;
+    optional int64 step = 5;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/src/main/python/nexusproto/__init__.py
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-messages/src/main/python/nexusproto/__init__.py b/nexus-ingest/nexus-messages/src/main/python/nexusproto/__init__.py
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/src/main/python/nexusproto/serialization.py
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-messages/src/main/python/nexusproto/serialization.py b/nexus-ingest/nexus-messages/src/main/python/nexusproto/serialization.py
new file mode 100644
index 0000000..64fe207
--- /dev/null
+++ b/nexus-ingest/nexus-messages/src/main/python/nexusproto/serialization.py
@@ -0,0 +1,40 @@
+"""
+Copyright (c) 2016 Jet Propulsion Laboratory,
+California Institute of Technology.  All rights reserved
+"""
+import StringIO
+
+import numpy
+
+import nexusproto.NexusContent_pb2 as nexusproto
+
+
+def from_shaped_array(shaped_array):
+    memfile = StringIO.StringIO()
+    memfile.write(shaped_array.array_data)
+    memfile.seek(0)
+    data_array = numpy.load(memfile)
+    memfile.close()
+
+    return data_array
+
+
+def to_shaped_array(data_array):
+    shaped_array = nexusproto.ShapedArray()
+
+    shaped_array.shape.extend([dimension_size for dimension_size in data_array.shape])
+    shaped_array.dtype = str(data_array.dtype)
+
+    memfile = StringIO.StringIO()
+    numpy.save(memfile, data_array)
+    shaped_array.array_data = memfile.getvalue()
+    memfile.close()
+
+    return shaped_array
+
+def to_metadata(name, data_array):
+    metadata = nexusproto.MetaData()
+    metadata.name = name
+    metadata.meta_data.CopyFrom(to_shaped_array(data_array))
+
+    return metadata

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-messages/src/main/python/nexusproto/setup.py
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-messages/src/main/python/nexusproto/setup.py b/nexus-ingest/nexus-messages/src/main/python/nexusproto/setup.py
new file mode 100644
index 0000000..53ea282
--- /dev/null
+++ b/nexus-ingest/nexus-messages/src/main/python/nexusproto/setup.py
@@ -0,0 +1,31 @@
+"""
+Copyright (c) 2016 Jet Propulsion Laboratory,
+California Institute of Technology.  All rights reserved
+"""
+from setuptools import setup
+
+__version__ = '0.3'
+
+setup(
+    name='nexusproto',
+    version=__version__,
+    url="https://github.jpl.nasa.gov/thuang/nexus",
+
+    author="Team Nexus",
+
+    description="Protobufs used when passing NEXUS messages across the wire.",
+
+    packages=['nexusproto'],
+    platforms='any',
+
+    install_requires=[
+        'protobuf'
+    ],
+
+    classifiers=[
+        'Development Status :: 1 - Pre-Alpha',
+        'Intended Audience :: Developers',
+        'Operating System :: OS Independent',
+        'Programming Language :: Python :: 2.7',
+    ]
+)

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-sink/.gitignore
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-sink/.gitignore b/nexus-ingest/nexus-sink/.gitignore
new file mode 100644
index 0000000..ef1dff6
--- /dev/null
+++ b/nexus-ingest/nexus-sink/.gitignore
@@ -0,0 +1,16 @@
+gradlew.bat
+
+.gradle/
+
+.idea/
+
+.DS_Store
+
+gradle.properties
+
+build/*
+!build/reports
+
+build/reports/*
+!build/reports/license
+!build/reports/project

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-sink/README.md
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-sink/README.md b/nexus-ingest/nexus-sink/README.md
new file mode 100644
index 0000000..868d879
--- /dev/null
+++ b/nexus-ingest/nexus-sink/README.md
@@ -0,0 +1,11 @@
+# nexus-sink
+
+[Spring-XD Module](http://docs.spring.io/spring-xd/docs/current/reference/html/#modules) that handles saving a NexusTile to both Solr and Cassandra.
+
+The project can be built by running
+
+`./gradlew clean build`
+
+The module can then be uploaded to Spring XD by running the following command in an XD Shell
+
+`module upload --type sink --name nexus --file nexus-sink/build/libs/nexus-sink-VERSION.jar`
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/nexus-sink/build.gradle
----------------------------------------------------------------------
diff --git a/nexus-ingest/nexus-sink/build.gradle b/nexus-ingest/nexus-sink/build.gradle
new file mode 100644
index 0000000..7807398
--- /dev/null
+++ b/nexus-ingest/nexus-sink/build.gradle
@@ -0,0 +1,176 @@
+buildscript {
+    repositories {
+        if( project.hasProperty('artifactory_contextUrl') ) {
+            maven {
+                url "${artifactory_contextUrl}"
+                credentials {
+                    username = "${artifactory_user}"
+                    password = "${artifactory_password}"
+                }
+            }
+        }
+        maven {
+            url "http://repo.spring.io/plugins-snapshot"
+        }
+        maven {
+            url 'http://repo.spring.io/plugins-release'
+        }
+        maven {
+            url "http://repo.spring.io/release"
+        }
+        maven {
+            url "http://repo.spring.io/milestone"
+        }
+        maven {
+            url "http://repo.spring.io/snapshot"
+        }
+        mavenCentral()
+        jcenter()
+    }
+    //noinspection GroovyAssignabilityCheck
+    dependencies {
+        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4+"
+        classpath("org.springframework.xd:spring-xd-module-plugin:1.3.1.RELEASE")
+    }
+}
+
+if( project.hasProperty('artifactory_contextUrl') ) {
+    allprojects {
+        apply plugin: "com.jfrog.artifactory"
+    }
+
+    artifactory {
+        contextUrl = "${artifactory_contextUrl}"
+        publish {
+            repository {
+                repoKey = "${publish_repoKey}"
+                username = "${artifactory_user}"
+                password = "${artifactory_password}"
+                maven = true
+
+            }
+            defaults {
+                // Reference to Gradle publications defined in the build script.
+                // This is how we tell the Artifactory Plugin which artifacts should be
+                // published to Artifactory.
+                publications('mavenJava')
+                publishArtifacts = true
+                // Publish generated POM files to Artifactory (true by default)
+                publishPom = true
+            }
+        }
+        resolve {
+            repository {
+                repoKey = "${resolve_repoKey}"
+                username = "${artifactory_user}"
+                password = "${artifactory_password}"
+                maven = true
+
+            }
+        }
+    }
+
+    repositories {
+        maven {
+            url "$artifactory_contextUrl/$resolve_repoKey"
+            credentials {
+                username "${artifactory_user}"
+                password "${artifactory_password}"
+            }
+        }
+    }
+
+    artifactoryPublish.dependsOn bootRepackage
+
+}else {
+    repositories {
+        mavenCentral()
+        jcenter()
+        maven {
+            url "http://repo.spring.io/release"
+        }
+        mavenLocal()
+    }
+}
+
+ext {
+    springXdVersion = '1.3.1.RELEASE'
+    springIntegrationDslVersion = '1.1.2.RELEASE'
+    springDataCassandraVersion = '1.3.4.RELEASE'
+    springDataSolrVersion = '2.0.2.RELEASE'
+
+    nexusMessagesVersion = '1.0.0.RELEASE'
+
+    testversions = [
+        cassandraUnitVersion: '2.1.3.1',
+        solrCoreVersion: '5.3.1'
+    ]
+}
+
+
+
+apply plugin: 'java'
+apply plugin: 'groovy'
+apply plugin: 'idea'
+apply plugin: 'spring-xd-module'
+apply plugin: 'maven-publish'
+apply plugin: 'project-report'
+
+group = 'org.nasa.jpl.nexus.ingest'
+version = '1.4-SNAPSHOT'
+mainClassName = ''
+
+sourceCompatibility = 1.8
+targetCompatibility = 1.8
+
+publishing {
+    publications {
+        mavenJava(MavenPublication) {
+            from components.java
+        }
+    }
+}
+
+//noinspection GroovyAssignabilityCheck
+sourceSets {
+    //noinspection GroovyAssignabilityCheck
+    main {
+        groovy {
+            // override the default locations, rather than adding additional ones
+            srcDirs = ['src/main/groovy', 'src/main/java']
+        }
+        java {
+            srcDirs = [] // don't compile Java code twice
+        }
+    }
+}
+
+//noinspection GroovyAssignabilityCheck
+dependencies {
+    compile("org.springframework.boot:spring-boot-starter-integration")
+    compile "org.springframework.integration:spring-integration-java-dsl:${springIntegrationDslVersion}"
+    compile "org.nasa.jpl.nexus:nexus-messages:${nexusMessagesVersion}"
+    compile "org.springframework.data:spring-data-cassandra:${springDataCassandraVersion}"
+    compile("org.springframework.data:spring-data-solr:${springDataSolrVersion}"){
+        exclude group: 'org.apache.solr', module: 'solr-solrj'
+    }
+    compile "org.apache.solr:solr-solrj:5.3.1"
+    compile 'org.codehaus.groovy:groovy'
+
+
+    testCompile group: 'io.findify', name: 's3mock_2.12', version: '0.2.3'
+    testCompile('org.springframework.boot:spring-boot-starter-test')
+    testCompile("org.apache.cassandra:cassandra-all")
+    testCompile("org.apache.solr:solr-core:${testversions.solrCoreVersion}"){
+        exclude group: 'org.eclipse.jetty'
+    }
+    testCompile("com.vividsolutions:jts:1.13")
+    testCompile("org.cassandraunit:cassandra-unit-spring:${testversions.cassandraUnitVersion}") {
+        exclude group: 'org.slf4j', module: 'slf4j-log4j12'
+    }
+    testCompile group: 'junit', name: 'junit', version: '4.11'
+}
+
+task wrapper(type: Wrapper) {
+    gradleVersion = '2.12'
+}