DATAGRAPH-1357 - Add support for java.net.URI attributes.

This commit is contained in:
Michael Simons
2020-08-10 10:16:41 +02:00
committed by GitHub
parent 232a678244
commit 9888cf33e7
4 changed files with 27 additions and 0 deletions

View File

@@ -165,6 +165,14 @@ If you require the time zone, use a type that supports it (i.e. `ZoneDateTime`)
|List of String (The name value of the enum)
|
|java.net.URL
|String
|
|java.net.URI
|String
|
|===
== Custom conversions

View File

@@ -19,6 +19,7 @@ import java.lang.reflect.Array;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.time.Instant;
import java.time.ZoneOffset;
@@ -92,6 +93,7 @@ final class AdditionalTypes {
hlp.add(ConverterBuilder.reading(Value.class, Instant.class, AdditionalTypes::asInstant).andWriting(AdditionalTypes::value));
hlp.add(ConverterBuilder.reading(Value.class, UUID.class, AdditionalTypes::asUUID).andWriting(AdditionalTypes::value));
hlp.add(ConverterBuilder.reading(Value.class, URL.class, AdditionalTypes::asURL).andWriting(AdditionalTypes::value));
hlp.add(ConverterBuilder.reading(Value.class, URI.class, AdditionalTypes::asURI).andWriting(AdditionalTypes::value));
CONVERTERS = Collections.unmodifiableList(hlp);
}
@@ -124,6 +126,17 @@ final class AdditionalTypes {
return Values.value(url.toString());
}
static URI asURI(Value value) {
return URI.create(value.asString());
}
static Value value(URI uri) {
if (uri == null) {
return Values.NULL;
}
return Values.value(uri.toString());
}
static Instant asInstant(Value value) {
return value.asZonedDateTime().toInstant();
}

View File

@@ -20,6 +20,7 @@ import lombok.Builder;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.time.Duration;
import java.time.Instant;
@@ -114,6 +115,7 @@ public abstract class Neo4jConversionsITBase {
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
hlp.put("aURI", URI.create("urn:isbn:9783864905254"));
hlp.put("anEnum", SomeEnum.TheUsualMisfit);
hlp.put("anArrayOfEnums", new SomeEnum[] { SomeEnum.ValueA, SomeEnum.ValueB });
hlp.put("aCollectionOfEnums", Arrays.asList(SomeEnum.ValueC, SomeEnum.TheUsualMisfit));
@@ -217,6 +219,7 @@ public abstract class Neo4jConversionsITBase {
+ " n.anInstant = datetime('2019-09-26T20:34:23Z'),"
+ " n.aUUID = 'd4ec9208-4b17-4ec7-a709-19a5e53865a8'," + " n.listOfDoubles = [1.0],"
+ " n.aURL = 'https://www.test.com',"
+ " n.aURI = 'urn:isbn:9783864905254',"
+ " n.anEnum = 'TheUsualMisfit'," + " n.anArrayOfEnums = ['ValueA', 'ValueB'],"
+ " n.aCollectionOfEnums = ['ValueC', 'TheUsualMisfit']" + " RETURN id(n) AS id", parameters)
.single().get("id").asLong();

View File

@@ -23,6 +23,7 @@ import lombok.With;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.URI;
import java.net.URL;
import java.time.Duration;
import java.time.Instant;
@@ -102,6 +103,8 @@ public class ThingWithAllAdditionalTypes {
private URL aURL;
private URI aURI;
private SomeEnum anEnum;
private SomeEnum[] anArrayOfEnums;