Skip to content

Commit 0f14e35

Browse files
committed
DATAMONGO-1288 - Polishing.
Some JavaDoc here and there. Moved converter factory registration into MongoConverters.getConvertersToRegister() for consistency with others. Original pull request: #331.
1 parent ad0c420 commit 0f14e35

File tree

3 files changed

+43
-13
lines changed

3 files changed

+43
-13
lines changed

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

+10-3
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,6 @@ public CustomConversions(List<?> converters) {
103103
toRegister.addAll(converters);
104104
toRegister.add(CustomToStringConverter.INSTANCE);
105105
toRegister.addAll(MongoConverters.getConvertersToRegister());
106-
toRegister.add(NumberToNumberConverterFactory.INSTANCE);
107-
108106
toRegister.addAll(JodaTimeConverters.getConvertersToRegister());
109107
toRegister.addAll(GeoConverters.getConvertersToRegister());
110108
toRegister.addAll(Jsr310Converters.getConvertersToRegister());
@@ -168,7 +166,8 @@ public void registerConvertersIn(GenericConversionService conversionService) {
168166
}
169167

170168
if (!added) {
171-
throw new IllegalArgumentException("Given set contains element that is neither Converter nor ConverterFactory!");
169+
throw new IllegalArgumentException(
170+
"Given set contains element that is neither Converter nor ConverterFactory!");
172171
}
173172
}
174173
}
@@ -398,6 +397,10 @@ private enum CustomToStringConverter implements GenericConverter {
398397

399398
INSTANCE;
400399

400+
/*
401+
* (non-Javadoc)
402+
* @see org.springframework.core.convert.converter.GenericConverter#getConvertibleTypes()
403+
*/
401404
public Set<ConvertiblePair> getConvertibleTypes() {
402405

403406
ConvertiblePair localeToString = new ConvertiblePair(Locale.class, String.class);
@@ -406,6 +409,10 @@ public Set<ConvertiblePair> getConvertibleTypes() {
406409
return new HashSet<ConvertiblePair>(Arrays.asList(localeToString, booleanToString));
407410
}
408411

412+
/*
413+
* (non-Javadoc)
414+
* @see org.springframework.core.convert.converter.GenericConverter#convert(java.lang.Object, org.springframework.core.convert.TypeDescriptor, org.springframework.core.convert.TypeDescriptor)
415+
*/
409416
public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
410417
return source.toString();
411418
}

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

+32-9
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@
2121
import java.net.URL;
2222
import java.util.ArrayList;
2323
import java.util.Collection;
24-
import java.util.concurrent.atomic.AtomicInteger;
25-
import java.util.concurrent.atomic.AtomicLong;
2624
import java.util.Currency;
2725
import java.util.List;
26+
import java.util.concurrent.atomic.AtomicInteger;
27+
import java.util.concurrent.atomic.AtomicLong;
2828

2929
import org.bson.types.Code;
3030
import org.bson.types.ObjectId;
@@ -37,6 +37,7 @@
3737
import org.springframework.data.convert.WritingConverter;
3838
import org.springframework.data.mongodb.core.query.Term;
3939
import org.springframework.data.mongodb.core.script.NamedMongoScript;
40+
import org.springframework.util.Assert;
4041
import org.springframework.util.NumberUtils;
4142
import org.springframework.util.StringUtils;
4243

@@ -64,9 +65,9 @@ private MongoConverters() {}
6465
* @return
6566
* @since 1.9
6667
*/
67-
public static Collection<Converter<?, ?>> getConvertersToRegister() {
68+
public static Collection<Object> getConvertersToRegister() {
6869

69-
List<Converter<?, ?>> converters = new ArrayList<Converter<?, ?>>();
70+
List<Object> converters = new ArrayList<Object>();
7071

7172
converters.add(BigDecimalToStringConverter.INSTANCE);
7273
converters.add(StringToBigDecimalConverter.INSTANCE);
@@ -80,6 +81,7 @@ private MongoConverters() {}
8081
converters.add(DBObjectToNamedMongoScriptCoverter.INSTANCE);
8182
converters.add(CurrencyToStringConverter.INSTANCE);
8283
converters.add(StringToCurrencyConverter.INSTANCE);
84+
converters.add(NumberToNumberConverterFactory.INSTANCE);
8385

8486
return converters;
8587
}
@@ -264,7 +266,7 @@ public DBObject convert(NamedMongoScript source) {
264266
}
265267
}
266268

267-
/**
269+
/**
268270
* {@link Converter} implementation converting {@link Currency} into its ISO 4217 {@link String} representation.
269271
*
270272
* @author Christoph Strobl
@@ -315,34 +317,55 @@ public Currency convert(String source) {
315317
* @since 1.9
316318
*/
317319
@WritingConverter
318-
public static enum NumberToNumberConverterFactory implements ConverterFactory<Number, Number>, ConditionalConverter {
320+
public static enum NumberToNumberConverterFactory implements ConverterFactory<Number, Number>,ConditionalConverter {
319321

320322
INSTANCE;
321323

324+
/*
325+
* (non-Javadoc)
326+
* @see org.springframework.core.convert.converter.ConverterFactory#getConverter(java.lang.Class)
327+
*/
322328
@Override
323329
public <T extends Number> Converter<Number, T> getConverter(Class<T> targetType) {
324-
return new NumberToNumber<T>(targetType);
330+
return new NumberToNumberConverter<T>(targetType);
325331
}
326332

333+
/*
334+
* (non-Javadoc)
335+
* @see org.springframework.core.convert.converter.ConditionalConverter#matches(org.springframework.core.convert.TypeDescriptor, org.springframework.core.convert.TypeDescriptor)
336+
*/
327337
@Override
328338
public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
329339
return !sourceType.equals(targetType);
330340
}
331341

332-
private final static class NumberToNumber<T extends Number> implements Converter<Number, T> {
342+
private final static class NumberToNumberConverter<T extends Number> implements Converter<Number, T> {
333343

334344
private final Class<T> targetType;
335345

336-
public NumberToNumber(Class<T> targetType) {
346+
/**
347+
* Creates a new {@link NumberToNumberConverter} for the given target type.
348+
*
349+
* @param targetType must not be {@literal null}.
350+
*/
351+
public NumberToNumberConverter(Class<T> targetType) {
352+
353+
Assert.notNull(targetType, "Target type must not be null!");
354+
337355
this.targetType = targetType;
338356
}
339357

358+
/*
359+
* (non-Javadoc)
360+
* @see org.springframework.core.convert.converter.Converter#convert(java.lang.Object)
361+
*/
340362
@Override
341363
public T convert(Number source) {
342364

343365
if (source instanceof AtomicInteger) {
344366
return NumberUtils.convertNumberToTargetClass(((AtomicInteger) source).get(), this.targetType);
345367
}
368+
346369
if (source instanceof AtomicLong) {
347370
return NumberUtils.convertNumberToTargetClass(((AtomicLong) source).get(), this.targetType);
348371
}

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2015 the original author or authors.
2+
* Copyright 2015-2016 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.

0 commit comments

Comments
 (0)