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.
This commit is contained in:
@@ -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 {
|
||||
converters.add(BinaryToByteArrayConverter.INSTANCE);
|
||||
converters.add(BsonTimestampToInstantConverter.INSTANCE);
|
||||
|
||||
converters.add(reading(String.class, URI.class, URI::create).andWriting(URI::toString));
|
||||
|
||||
return converters;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
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 {
|
||||
.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"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user