Browse Source

DATAMONGO-2210 - Add support to persist URI instances out of the box.

We now register Converter implementations that persist a URI as String by default to avoid the reflection inspection of URI instances.
pull/658/head
Oliver Drotbohm 7 years ago
parent
commit
ec50d96d23
No known key found for this signature in database
GPG Key ID: 6E42B5787543F690
  1. 5
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoConverters.java
  2. 16
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MongoConvertersUnitTests.java

5
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoConverters.java

@ -15,9 +15,12 @@ @@ -15,9 +15,12 @@
*/
package org.springframework.data.mongodb.core.convert;
import static org.springframework.data.convert.ConverterBuilder.*;
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.util.ArrayList;
@ -90,6 +93,8 @@ abstract class MongoConverters { @@ -90,6 +93,8 @@ abstract class MongoConverters {
converters.add(BinaryToByteArrayConverter.INSTANCE);
converters.add(BsonTimestampToInstantConverter.INSTANCE);
converters.add(reading(String.class, URI.class, URI::create).andWriting(URI::toString));
return converters;
}

16
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MongoConvertersUnitTests.java

@ -18,6 +18,7 @@ package org.springframework.data.mongodb.core.convert; @@ -18,6 +18,7 @@ package org.springframework.data.mongodb.core.convert;
import static org.assertj.core.api.Assertions.*;
import java.math.BigDecimal;
import java.net.URI;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.Currency;
@ -28,6 +29,8 @@ import org.assertj.core.data.TemporalUnitLessThanOffset; @@ -28,6 +29,8 @@ import org.assertj.core.data.TemporalUnitLessThanOffset;
import org.bson.BsonTimestamp;
import org.bson.Document;
import org.junit.Test;
import org.springframework.core.convert.support.ConfigurableConversionService;
import org.springframework.core.convert.support.DefaultConversionService;
import org.springframework.data.geo.Box;
import org.springframework.data.geo.Circle;
import org.springframework.data.geo.Point;
@ -156,4 +159,17 @@ public class MongoConvertersUnitTests { @@ -156,4 +159,17 @@ public class MongoConvertersUnitTests {
.isCloseTo(Instant.ofEpochSecond(1540384327), new TemporalUnitLessThanOffset(100, ChronoUnit.MILLIS));
}
@Test // DATAMONGO-2210
public void convertsUrisToString() {
MongoCustomConversions conversions = new MongoCustomConversions();
assertThat(conversions.getSimpleTypeHolder().isSimpleType(URI.class)).isTrue();
ConfigurableConversionService conversionService = new DefaultConversionService();
conversions.registerConvertersIn(conversionService);
assertThat(conversionService.convert(URI.create("/segment"), String.class)).isEqualTo("/segment");
assertThat(conversionService.convert("/segment", URI.class)).isEqualTo(URI.create("/segment"));
}
}

Loading…
Cancel
Save