Skip to content

Separate API and impl, fix all leaked internal references, put API in v1 package. #85

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
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
14 changes: 14 additions & 0 deletions api-v1/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>neo4j-java-driver-parent</artifactId>
<groupId>org.neo4j.driver</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>neo4j-driver-api-v1</artifactId>

</project>
14 changes: 14 additions & 0 deletions driver/module-rules.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<!DOCTYPE macker PUBLIC "-//innig//DTD Macker 0.4//EN" "http://innig.net/macker/dtd/macker-0.4.dtd">
<macker>
<ruleset name="API must never explicitly refer to the API implementation.">
<!-- This prevents circular dependencies and ensures it remains possible to private alternative
implementations of the API. -->
<access-rule>
<deny>
<from class="org.neo4j.driver.v1.**"/>
<to class="org.neo4j.driver.internal.**"/>
</deny>
</access-rule>
</ruleset>
</macker>
22 changes: 22 additions & 0 deletions driver/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@
</licenses>

<dependencies>
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-driver-api-v1</artifactId>
<version>${project.version}</version>
</dependency>
<!-- Test dependencies -->
<dependency>
<groupId>org.hamcrest</groupId>
Expand Down Expand Up @@ -153,6 +158,23 @@
</execution>
</executions>
</plugin>
<plugin>
<!-- Used to enforce architectural rules -->
<groupId>de.andrena.tools.macker</groupId>
<artifactId>macker-maven-plugin</artifactId>
<version>1.0.2</version>
<configuration>
<rule>module-rules.xml</rule>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>macker</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

Expand Down
9 changes: 8 additions & 1 deletion driver/src/main/java/org/neo4j/driver/GraphDatabase.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,19 @@

import java.net.URI;

import org.neo4j.driver.internal.StandardDriverV1;
import org.neo4j.driver.v1.Config;
import org.neo4j.driver.v1.Driver;

/**
* Creates {@link Driver drivers}, optionally letting you {@link #driver(URI, Config)} to configure them.
* @see Driver
*/
public class GraphDatabase
{
// This is explicitly and consciously placed outside the versioned API package. This class is an entry point into the API, it
// is the glue that connects the standard implementation (eg. the stuff under 'internal') with the API.

/**
* Return a driver for a Neo4j instance with the default configuration settings
*
Expand Down Expand Up @@ -57,6 +64,6 @@ public static Driver driver( URI url )
*/
public static Driver driver( URI url, Config config )
{
return new Driver( url, config );
return new StandardDriverV1( url, config );
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*/
package org.neo4j.driver.internal;

import org.neo4j.driver.Identity;
import org.neo4j.driver.v1.Identity;

public class Identities
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import java.util.Collections;
import java.util.Map;

import org.neo4j.driver.Value;
import org.neo4j.driver.v1.Value;

public final class ParameterSupport
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
import java.util.Collection;
import java.util.Map;

import org.neo4j.driver.Entity;
import org.neo4j.driver.Identity;
import org.neo4j.driver.Value;
import org.neo4j.driver.v1.Entity;
import org.neo4j.driver.v1.Identity;
import org.neo4j.driver.v1.Value;

public abstract class SimpleEntity implements Entity
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*/
package org.neo4j.driver.internal;

import org.neo4j.driver.Identity;
import org.neo4j.driver.v1.Identity;

public class SimpleIdentity implements Identity
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@
import java.util.Collections;
import java.util.Map;

import org.neo4j.driver.Identity;
import org.neo4j.driver.Node;
import org.neo4j.driver.Value;
import org.neo4j.driver.v1.Identity;
import org.neo4j.driver.v1.Node;
import org.neo4j.driver.v1.Value;

/**
* {@link org.neo4j.driver.Node} implementation that directly contains labels and properties.
* {@link org.neo4j.driver.v1.Node} implementation that directly contains labels and properties.
*/
public class SimpleNode extends SimpleEntity implements Node
{
Expand Down
10 changes: 5 additions & 5 deletions driver/src/main/java/org/neo4j/driver/internal/SimplePath.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@
import java.util.Iterator;
import java.util.List;

import org.neo4j.driver.Entity;
import org.neo4j.driver.Node;
import org.neo4j.driver.Path;
import org.neo4j.driver.Relationship;
import org.neo4j.driver.v1.Entity;
import org.neo4j.driver.v1.Node;
import org.neo4j.driver.v1.Path;
import org.neo4j.driver.v1.Relationship;

/**
* {@link org.neo4j.driver.Path} implementation that directly contains all nodes and relationships.
* {@link org.neo4j.driver.v1.Path} implementation that directly contains all nodes and relationships.
*/
public class SimplePath implements Path
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
import java.util.HashMap;
import java.util.Map;

import org.neo4j.driver.Record;
import org.neo4j.driver.Value;
import org.neo4j.driver.v1.Record;
import org.neo4j.driver.v1.Value;

public class SimpleRecord implements Record
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@
import java.util.Collections;
import java.util.Map;

import org.neo4j.driver.Identity;
import org.neo4j.driver.Relationship;
import org.neo4j.driver.Value;
import org.neo4j.driver.v1.Identity;
import org.neo4j.driver.v1.Relationship;
import org.neo4j.driver.v1.Value;

/**
* {@link org.neo4j.driver.Relationship} implementation that directly contains type and properties
* along with {@link org.neo4j.driver.Identity} values for start and end nodes.
* {@link org.neo4j.driver.v1.Relationship} implementation that directly contains type and properties
* along with {@link org.neo4j.driver.v1.Identity} values for start and end nodes.
*/
public class SimpleRelationship extends SimpleEntity implements Relationship
{
Expand Down
12 changes: 6 additions & 6 deletions driver/src/main/java/org/neo4j/driver/internal/SimpleResult.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@
import java.util.Iterator;
import java.util.List;

import org.neo4j.driver.Record;
import org.neo4j.driver.Result;
import org.neo4j.driver.ResultSummary;
import org.neo4j.driver.ReusableResult;
import org.neo4j.driver.Value;
import org.neo4j.driver.exceptions.ClientException;
import org.neo4j.driver.v1.Record;
import org.neo4j.driver.v1.Result;
import org.neo4j.driver.v1.ResultSummary;
import org.neo4j.driver.v1.ReusableResult;
import org.neo4j.driver.v1.Value;
import org.neo4j.driver.v1.exceptions.ClientException;

public class SimpleResult implements Result
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/**
* Copyright (c) 2002-2015 "Neo Technology,"
* Network Engine for Objects in Lund AB [http://neotechnology.com]
*
* This file is part of Neo4j.
*
* 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.
*/
package org.neo4j.driver.internal;

import java.net.URI;

import org.neo4j.driver.internal.pool.StandardConnectionPool;
import org.neo4j.driver.internal.spi.ConnectionPool;
import org.neo4j.driver.v1.Config;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.Session;

public class StandardDriverV1 implements Driver, AutoCloseable
{
private final ConnectionPool connections;
private final URI url;

public StandardDriverV1( URI url, Config config )
{
this.url = url;
this.connections = new StandardConnectionPool( config );
}

/**
* Establish a session
* @return a session that could be used to run {@link Session#run(String) a statement} or
* {@link Session#newTransaction() a transaction }.
*/
@Override
public Session session()
{
return new StandardSession( connections.acquire( url ) );
// TODO a ConnectionPool per URL
// ConnectionPool connections = new StandardConnectionPool( logging, url );
// And to get a connection from the pool could be
// connections.acquire();
}

/**
* Close all the resources assigned to this driver
* @throws Exception any error that might happen when releasing all resources
*/
@Override
public void close() throws Exception
{
connections.close();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@

import java.util.Map;

import org.neo4j.driver.Result;
import org.neo4j.driver.Session;
import org.neo4j.driver.Statement;
import org.neo4j.driver.Transaction;
import org.neo4j.driver.Value;
import org.neo4j.driver.exceptions.ClientException;
import org.neo4j.driver.internal.spi.Connection;
import org.neo4j.driver.internal.summary.ResultBuilder;
import org.neo4j.driver.v1.Result;
import org.neo4j.driver.v1.Session;
import org.neo4j.driver.v1.Statement;
import org.neo4j.driver.v1.Transaction;
import org.neo4j.driver.v1.Value;
import org.neo4j.driver.v1.exceptions.ClientException;

public class StandardSession implements Session
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@
import java.util.Collections;
import java.util.Map;

import org.neo4j.driver.Result;
import org.neo4j.driver.Statement;
import org.neo4j.driver.Transaction;
import org.neo4j.driver.Value;
import org.neo4j.driver.exceptions.ClientException;
import org.neo4j.driver.exceptions.Neo4jException;
import org.neo4j.driver.internal.spi.Connection;
import org.neo4j.driver.internal.summary.ResultBuilder;
import org.neo4j.driver.v1.Result;
import org.neo4j.driver.v1.Statement;
import org.neo4j.driver.v1.Transaction;
import org.neo4j.driver.v1.Value;
import org.neo4j.driver.v1.exceptions.ClientException;
import org.neo4j.driver.v1.exceptions.Neo4jException;

public class StandardTransaction implements Transaction
{
Expand Down Expand Up @@ -67,7 +67,7 @@ public StandardTransaction( Connection conn, Runnable cleanup )
this.cleanup = cleanup;

// Note there is no sync here, so this will just get queued locally
conn.run( "BEGIN", Collections.<String, Value>emptyMap(), null );
conn.run( "BEGIN", Collections.<String,Value>emptyMap(), null );
conn.discardAll();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*/
package org.neo4j.driver.internal;

import org.neo4j.driver.Session;
import org.neo4j.driver.v1.Session;

public class Version
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import java.nio.channels.ByteChannel;
import java.nio.channels.SocketChannel;

import org.neo4j.driver.exceptions.ClientException;
import org.neo4j.driver.v1.exceptions.ClientException;
import org.neo4j.driver.internal.util.BytePrinter;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import java.nio.channels.ClosedByInterruptException;
import java.nio.channels.ReadableByteChannel;

import org.neo4j.driver.exceptions.ClientException;
import org.neo4j.driver.v1.exceptions.ClientException;
import org.neo4j.driver.internal.packstream.PackInput;
import org.neo4j.driver.internal.util.BytePrinter;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import java.nio.ByteBuffer;
import java.nio.channels.WritableByteChannel;

import org.neo4j.driver.exceptions.ClientException;
import org.neo4j.driver.v1.exceptions.ClientException;
import org.neo4j.driver.internal.packstream.PackOutput;

import static java.lang.Math.max;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import java.nio.ByteBuffer;
import java.nio.channels.ByteChannel;

import org.neo4j.driver.internal.spi.Logger;
import org.neo4j.driver.v1.logging.Logger;
import org.neo4j.driver.internal.util.BytePrinter;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
import java.util.Arrays;
import java.util.Map;

import org.neo4j.driver.Value;
import org.neo4j.driver.internal.spi.Logger;
import org.neo4j.driver.v1.Value;
import org.neo4j.driver.v1.logging.Logger;

import static org.neo4j.driver.internal.messaging.AckFailureMessage.ACK_FAILURE;
import static org.neo4j.driver.internal.messaging.DiscardAllMessage.DISCARD_ALL;
Expand Down
Loading