Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Contributing to coding

If you're reading this, you're awesome! Thank you for helping us make this project great and being a part of the coding community. Here are a few guidelines that will help you along the way.
Code of Conduct

Steps to contribute:

1. Fork this repository into your account on Github
2. Clone your forked repository (not our original one) to your hard drive with git clone https://github.com/YOURUSERNAME/universal-graph-client.git
3. Design and develop your changes
4. Add/update unit tests
5. Add/update integration tests
6. Add/update documentation on gh-pages branch
7. Create a pull request for review to request merge

THANK YOU!
154 changes: 73 additions & 81 deletions README.md

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions graph-client-impl-provider-dse/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,11 @@
<artifactId>universal-graph-client-impl-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>dse-driver</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.jmockit</groupId>
<artifactId>jmockit</artifactId>
Expand Down
147 changes: 147 additions & 0 deletions graph-client-impl-provider-neptune/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
<?xml version="1.0" encoding="UTF-8"?>

<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<parent>
<groupId>com.intuit.graph.client</groupId>
<artifactId>graph-client-core</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>

<modelVersion>4.0.0</modelVersion>
<groupId>com.intuit.graph.client.impl</groupId>
<artifactId>graph-client-impl-provider-neptune</artifactId>
<version>1.0-SNAPSHOT</version>
<name>graph-client-impl-provider-neptune</name>
<packaging>jar</packaging>

<properties>
<!-- Skip tests by default. will be activated by jdk8 profile -->
<skipTests>true</skipTests>
</properties>

<repositories>
<repository>
<id>central</id>
<name>Maven Repository Switchboard</name>
<layout>default</layout>
<url>http://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>intuit-nexus</id>
<name>Intuit Nexus Repo</name>
<url>http://nexus.intuit.net/nexus/content/groups/public</url>
</repository>
<repository>
<id>idea-nexus-snapshot</id>
<name>IDEA Nexus Snapshot Repo</name>
<url>http://nexus2-idea.intuit.net/nexus/content/repositories/intuit-idea-analytics-snapshots</url>
<snapshots>
<updatePolicy>always</updatePolicy>
</snapshots>
<releases>
<updatePolicy>always</updatePolicy>
</releases>
</repository>
<repository>
<id>idea-nexus</id>
<name>IDEA Nexus Repo</name>
<url>http://nexus2-idea.intuit.net/nexus/content/repositories/intuit-idea-analytics</url>
</repository>
</repositories>

<dependencies>
<dependency>
<groupId>com.intuit.graph.client</groupId>
<artifactId>universal-graph-client-api</artifactId>
<version>0.5-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.intuit.graph.client.impl</groupId>
<artifactId>universal-graph-client-impl-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>gremlin-driver</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>gremlin-groovy</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.7.25</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin}</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${maven.failsafe.plugin}</version>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
<execution>
<id>verify</id>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${maven.release.plugin}</version>
</plugin>
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
<id>ctg.central</id>
<name>CTG Cache Repository</name>
<url>http://nexus.intuit.net/nexus/content/groups/public</url>
</pluginRepository>
</pluginRepositories>

<profiles>
<!-- Cassandra 2.2+ requires JDK8 to run, so none of our tests will work
unless we're using jdk8. -->
<profile>
<id>jdk8-tests</id>
<activation>
<jdk>1.8</jdk>
</activation>
<properties>
<skipTests>false</skipTests>
</properties>
</profile>
</profiles>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.intuit.ugc.impl.persistence.neptune;

import javax.inject.Inject;

public class NeptuneConnectionManager {

private NeptunePersistenceConfiguration config;

@Inject
public NeptuneConnectionManager(NeptunePersistenceConfiguration config) {
this.config = config;
}

public NeptuneGraphSession getDSEGraphSession() { return new NeptuneGraphSession(config); }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.intuit.ugc.impl.persistence.neptune;

import com.google.inject.Inject;
import com.google.inject.Provider;

public class NeptuneDSEPersistenceRepositoryProvider implements Provider<NeptuneGraphVisitor> {

NeptuneConnectionManager manager;

@Inject
public NeptuneDSEPersistenceRepositoryProvider(NeptuneConnectionManager manager) {
this.manager = manager;
}

@Override
public NeptuneGraphVisitor get() {
return new NeptuneGraphVisitor(this.manager);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.intuit.ugc.impl.persistence.neptune;

import org.apache.tinkerpop.gremlin.driver.Cluster;
import org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;

public class NeptuneGraphSession {

private Cluster cluster = null;
private GraphTraversalSource graphSource = null;

public NeptuneGraphSession(NeptunePersistenceConfiguration config) { init(config); }

protected void init(NeptunePersistenceConfiguration config) {
Cluster.Builder builder = Cluster.build();
builder.addContactPoint(config.getHost());
builder.port(config.getPort());
builder.enableSsl(true);
builder.keyCertChainFile(config.getKeyFile());
cluster = builder.create();
graphSource = new GraphTraversalSource(DriverRemoteConnection.using(cluster));
}

/**
* Get DSESession
*
* @return
*/
public GraphTraversalSource getSession() {
return graphSource;
}

/**
* Close connection
*/
public void closeConnections() throws Exception {
if (graphSource != null) {
graphSource.close();
graphSource = null;
}
if (cluster != null) {
cluster.close();
cluster = null;
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package com.intuit.ugc.impl.persistence.neptune;

import com.intuit.ugc.impl.core.VisitOperationResult;
import com.intuit.ugc.impl.core.queryplan.operations.*;
import com.intuit.ugc.impl.core.spi.GraphVisitor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class NeptuneGraphVisitor implements GraphVisitor {

private static final Logger LOGGER = LoggerFactory.getLogger(NeptuneGraphVisitor.class);
private NeptuneConnectionManager connectionManager;
private VisitOperationResult qResult = null;
private NeptuneGraphSession graphSession = null;

public NeptuneGraphVisitor(NeptuneConnectionManager connectionManager) {
this.connectionManager = connectionManager;
this.graphSession = connectionManager.getDSEGraphSession();
}

@Override
public void visit(CreateEntity operation) {

}

@Override
public void visit(CreateRelationship operation) {

}

@Override
public void visit(GetBatchEntityByID operation) {

}

@Override
public void visit(GetEntityByID operation) {

}

@Override
public void visit(GetEntityByProperty operation) {

}

@Override
public void visit(GraphTerminalOperation operation) {

}

@Override
public void visit(SelectEntities operation) {

}

@Override
public void visit(SelectRelationships operation) {

}

@Override
public void visit(UpdateEntity operation) {

}

@Override
public void visit(UpdateRelationship operation) {

}

@Override
public VisitOperationResult getResult() {
return null;
}

@Override
public void visit(DeleteEntity operation) {

}

@Override
public void visit(DeleteRelationship operation) {

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.intuit.ugc.impl.persistence.neptune;

public interface NeptunePersistenceConfiguration {
public String getHost();

public int getPort();

public String getGraph();

public String getKeyFile();

}
Loading