DATAGRAPH-1357 - Add support for java.net.URI attributes.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user