diff --git a/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/MongoResultsWriter.java b/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/MongoResultsWriter.java index 3b1167670a..618a31e3d7 100644 --- a/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/MongoResultsWriter.java +++ b/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/MongoResultsWriter.java @@ -96,15 +96,14 @@ private Document fixDocumentKeys(Document doc) { for (Object key : doc.keySet()) { Object value = doc.get(key); - if (value instanceof Document) { - value = fixDocumentKeys((Document) value); - } else if (value instanceof BasicDBObject) { - value = fixDocumentKeys(new Document((BasicDBObject) value)); + if (value instanceof Document document) { + value = fixDocumentKeys(document); + } else if (value instanceof BasicDBObject basicDBObject) { + value = fixDocumentKeys(new Document(basicDBObject)); } - if (key instanceof String) { + if (key instanceof String newKey) { - String newKey = (String) key; if (newKey.contains(".")) { newKey = newKey.replace('.', ','); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ChangeStreamOptions.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ChangeStreamOptions.java index e43ee11b80..c051976014 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ChangeStreamOptions.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ChangeStreamOptions.java @@ -150,12 +150,12 @@ private static Object doGetTimestamp(Object timestamp, Class targetType) return timestamp; } - if (timestamp instanceof Instant) { - return new BsonTimestamp((int) ((Instant) timestamp).getEpochSecond(), 0); + if (timestamp instanceof Instant instant) { + return new BsonTimestamp((int) instant.getEpochSecond(), 0); } - if (timestamp instanceof BsonTimestamp) { - return Instant.ofEpochSecond(((BsonTimestamp) timestamp).getTime()); + if (timestamp instanceof BsonTimestamp bsonTimestamp) { + return Instant.ofEpochSecond(bsonTimestamp.getTime()); } throw new IllegalArgumentException( diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/CountQuery.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/CountQuery.java index a338ab2577..4589ba1d45 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/CountQuery.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/CountQuery.java @@ -64,18 +64,15 @@ public Document toQueryDocument() { for (Map.Entry entry : source.entrySet()) { - if (entry.getValue() instanceof Document && requiresRewrite(entry.getValue())) { + if (entry.getValue() instanceof Document document && requiresRewrite(entry.getValue())) { - Document theValue = (Document) entry.getValue(); - target.putAll(createGeoWithin(entry.getKey(), theValue, source.get("$and"))); + target.putAll(createGeoWithin(entry.getKey(), document, source.get("$and"))); continue; } - if (entry.getValue() instanceof Collection && requiresRewrite(entry.getValue())) { + if (entry.getValue() instanceof Collection collection && requiresRewrite(entry.getValue())) { - Collection source = (Collection) entry.getValue(); - - target.put(entry.getKey(), rewriteCollection(source)); + target.put(entry.getKey(), rewriteCollection(collection)); continue; } @@ -96,12 +93,12 @@ public Document toQueryDocument() { */ private boolean requiresRewrite(Object valueToInspect) { - if (valueToInspect instanceof Document) { - return requiresRewrite((Document) valueToInspect); + if (valueToInspect instanceof Document document) { + return requiresRewrite(document); } - if (valueToInspect instanceof Collection) { - return requiresRewrite((Collection) valueToInspect); + if (valueToInspect instanceof Collection collection) { + return requiresRewrite(collection); } return false; @@ -110,7 +107,7 @@ private boolean requiresRewrite(Object valueToInspect) { private boolean requiresRewrite(Collection collection) { for (Object o : collection) { - if (o instanceof Document && requiresRewrite((Document) o)) { + if (o instanceof Document document && requiresRewrite(document)) { return true; } } @@ -139,8 +136,8 @@ private Collection rewriteCollection(Collection source) { Collection rewrittenCollection = new ArrayList<>(source.size()); for (Object item : source) { - if (item instanceof Document && requiresRewrite(item)) { - rewrittenCollection.add(CountQuery.of((Document) item).toQueryDocument()); + if (item instanceof Document document && requiresRewrite(item)) { + rewrittenCollection.add(CountQuery.of(document).toQueryDocument()); } else { rewrittenCollection.add(item); } @@ -242,8 +239,8 @@ private static Object toCenterCoordinates(Object value) { return value; } - if (value instanceof Point) { - return Arrays.asList(((Point) value).getX(), ((Point) value).getY()); + if (value instanceof Point point) { + return Arrays.asList(point.getX(), point.getY()); } if (value instanceof Document document) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultBulkOperations.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultBulkOperations.java index 602fae09ed..c6050f40db 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultBulkOperations.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultBulkOperations.java @@ -267,9 +267,8 @@ private BulkWriteResult bulkWriteTo(MongoCollection collection) { bulkOptions); } catch (RuntimeException ex) { - if (ex instanceof MongoBulkWriteException) { + if (ex instanceof MongoBulkWriteException mongoBulkWriteException) { - MongoBulkWriteException mongoBulkWriteException = (MongoBulkWriteException) ex; if (mongoBulkWriteException.getWriteConcernError() != null) { throw new DataIntegrityViolationException(ex.getMessage(), ex); } @@ -284,13 +283,13 @@ private WriteModel extractAndMapWriteModel(SourceAwareWriteModelHolder maybeEmitBeforeSaveEvent(it); - if (it.getModel() instanceof InsertOneModel) { + if (it.getModel() instanceof InsertOneModel model) { - Document target = ((InsertOneModel) it.getModel()).getDocument(); + Document target = model.getDocument(); maybeInvokeBeforeSaveCallback(it.getSource(), target); - } else if (it.getModel() instanceof ReplaceOneModel) { + } else if (it.getModel() instanceof ReplaceOneModel model) { - Document target = ((ReplaceOneModel) it.getModel()).getReplacement(); + Document target = model.getReplacement(); maybeInvokeBeforeSaveCallback(it.getSource(), target); } @@ -324,33 +323,19 @@ private BulkOperations update(Query query, Update update, boolean upsert, boolea private WriteModel mapWriteModel(WriteModel writeModel) { - if (writeModel instanceof UpdateOneModel) { - - UpdateOneModel model = (UpdateOneModel) writeModel; - - return new UpdateOneModel<>(getMappedQuery(model.getFilter()), getMappedUpdate(model.getUpdate()), - model.getOptions()); + if (writeModel instanceof UpdateOneModel model) { + return new UpdateOneModel<>(getMappedQuery(model.getFilter()), getMappedUpdate(model.getUpdate()), model.getOptions()); } - if (writeModel instanceof UpdateManyModel) { - - UpdateManyModel model = (UpdateManyModel) writeModel; - - return new UpdateManyModel<>(getMappedQuery(model.getFilter()), getMappedUpdate(model.getUpdate()), - model.getOptions()); + if (writeModel instanceof UpdateManyModel model) { + return new UpdateManyModel<>(getMappedQuery(model.getFilter()), getMappedUpdate(model.getUpdate()), model.getOptions()); } - if (writeModel instanceof DeleteOneModel) { - - DeleteOneModel model = (DeleteOneModel) writeModel; - + if (writeModel instanceof DeleteOneModel model) { return new DeleteOneModel<>(getMappedQuery(model.getFilter()), model.getOptions()); } - if (writeModel instanceof DeleteManyModel) { - - DeleteManyModel model = (DeleteManyModel) writeModel; - + if (writeModel instanceof DeleteManyModel model) { return new DeleteManyModel<>(getMappedQuery(model.getFilter()), model.getOptions()); } @@ -367,8 +352,8 @@ private Bson getMappedQuery(Bson query) { private Document getMappedObject(Object source) { - if (source instanceof Document) { - return (Document) source; + if (source instanceof Document document) { + return document; } Document sink = new Document(); @@ -383,39 +368,39 @@ private void addModel(Object source, WriteModel model) { private void maybeEmitBeforeSaveEvent(SourceAwareWriteModelHolder holder) { - if (holder.getModel() instanceof InsertOneModel) { + if (holder.getModel() instanceof InsertOneModel model) { - Document target = ((InsertOneModel) holder.getModel()).getDocument(); + Document target = model.getDocument(); maybeEmitEvent(new BeforeSaveEvent<>(holder.getSource(), target, collectionName)); - } else if (holder.getModel() instanceof ReplaceOneModel) { + } else if (holder.getModel() instanceof ReplaceOneModel model) { - Document target = ((ReplaceOneModel) holder.getModel()).getReplacement(); + Document target = model.getReplacement(); maybeEmitEvent(new BeforeSaveEvent<>(holder.getSource(), target, collectionName)); } } private void maybeEmitAfterSaveEvent(SourceAwareWriteModelHolder holder) { - if (holder.getModel() instanceof InsertOneModel) { + if (holder.getModel() instanceof InsertOneModel model) { - Document target = ((InsertOneModel) holder.getModel()).getDocument(); + Document target = model.getDocument(); maybeEmitEvent(new AfterSaveEvent<>(holder.getSource(), target, collectionName)); - } else if (holder.getModel() instanceof ReplaceOneModel) { + } else if (holder.getModel() instanceof ReplaceOneModel model) { - Document target = ((ReplaceOneModel) holder.getModel()).getReplacement(); + Document target = model.getReplacement(); maybeEmitEvent(new AfterSaveEvent<>(holder.getSource(), target, collectionName)); } } private void maybeInvokeAfterSaveCallback(SourceAwareWriteModelHolder holder) { - if (holder.getModel() instanceof InsertOneModel) { + if (holder.getModel() instanceof InsertOneModel model) { - Document target = ((InsertOneModel) holder.getModel()).getDocument(); + Document target = model.getDocument(); maybeInvokeAfterSaveCallback(holder.getSource(), target); - } else if (holder.getModel() instanceof ReplaceOneModel) { + } else if (holder.getModel() instanceof ReplaceOneModel model) { - Document target = ((ReplaceOneModel) holder.getModel()).getReplacement(); + Document target = model.getReplacement(); maybeInvokeAfterSaveCallback(holder.getSource(), target); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultScriptOperations.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultScriptOperations.java index 4b24faf7c2..86e89b059a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultScriptOperations.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultScriptOperations.java @@ -150,7 +150,7 @@ private Object[] convertScriptArgs(boolean quote, Object... args) { return args; } - List convertedValues = new ArrayList(args.length); + List convertedValues = new ArrayList<>(args.length); for (Object arg : args) { convertedValues.add(arg instanceof String && quote ? String.format("'%s'", arg) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/EntityOperations.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/EntityOperations.java index bb2d2ca5a6..689a3fd77d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/EntityOperations.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/EntityOperations.java @@ -533,8 +533,8 @@ public Query getQueryForVersion() { @Override public MappedDocument toMappedDocument(MongoWriter writer) { - return MappedDocument.of(map instanceof Document // - ? (Document) map // + return MappedDocument.of(map instanceof Document document // + ? document // : new Document(map)); } @@ -576,8 +576,8 @@ protected SimpleMappedEntity(T map) { public MappedDocument toMappedDocument(MongoWriter writer) { T bean = getBean(); - bean = (T) (bean instanceof Document // - ? (Document) bean // + bean = (T) (bean instanceof Document document// + ? document // : new Document(bean)); Document document = new Document(); writer.write(bean, document); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableAggregationOperationSupport.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableAggregationOperationSupport.java index 853bb6038d..372bf7630b 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableAggregationOperationSupport.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ExecutableAggregationOperationSupport.java @@ -98,9 +98,7 @@ private String getCollectionName(Aggregation aggregation) { return collection; } - if (aggregation instanceof TypedAggregation) { - - TypedAggregation typedAggregation = (TypedAggregation) aggregation; + if (aggregation instanceof TypedAggregation typedAggregation) { if (typedAggregation.getInputType() != null) { return template.getCollectionName(typedAggregation.getInputType()); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MappingMongoJsonSchemaCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MappingMongoJsonSchemaCreator.java index 3c15af9817..0265382c4d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MappingMongoJsonSchemaCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MappingMongoJsonSchemaCreator.java @@ -322,7 +322,7 @@ JsonSchemaProperty createSchemaProperty(String fieldName, Object type, boolean r private TypedJsonSchemaObject createSchemaObject(Object type, Collection possibleValues) { - TypedJsonSchemaObject schemaObject = type instanceof Type ? JsonSchemaObject.of(Type.class.cast(type)) + TypedJsonSchemaObject schemaObject = type instanceof Type typeObject ? JsonSchemaObject.of(typeObject) : JsonSchemaObject.of(Class.class.cast(type)); if (!CollectionUtils.isEmpty(possibleValues)) { @@ -331,23 +331,22 @@ private TypedJsonSchemaObject createSchemaObject(Object type, Collection poss return schemaObject; } - private String computePropertyFieldName(PersistentProperty property) { + private String computePropertyFieldName(PersistentProperty property) { - return property instanceof MongoPersistentProperty ? ((MongoPersistentProperty) property).getFieldName() - : property.getName(); + return property instanceof MongoPersistentProperty mongoPersistentProperty ? + mongoPersistentProperty.getFieldName() : property.getName(); } - private boolean isRequiredProperty(PersistentProperty property) { + private boolean isRequiredProperty(PersistentProperty property) { return property.getType().isPrimitive(); } private Class computeTargetType(PersistentProperty property) { - if (!(property instanceof MongoPersistentProperty)) { + if (!(property instanceof MongoPersistentProperty mongoProperty)) { return property.getType(); } - MongoPersistentProperty mongoProperty = (MongoPersistentProperty) property; if (!mongoProperty.isIdProperty()) { return mongoProperty.getFieldType(); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoExceptionTranslator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoExceptionTranslator.java index 08fd0c36dd..7538b87df6 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoExceptionTranslator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoExceptionTranslator.java @@ -97,12 +97,12 @@ public DataAccessException translateExceptionIfPossible(RuntimeException ex) { if (DATA_INTEGRITY_EXCEPTIONS.contains(exception)) { - if (ex instanceof MongoServerException) { - if (((MongoServerException) ex).getCode() == 11000) { + if (ex instanceof MongoServerException mse) { + if (mse.getCode() == 11000) { return new DuplicateKeyException(ex.getMessage(), ex); } - if (ex instanceof MongoBulkWriteException) { - for (BulkWriteError x : ((MongoBulkWriteException) ex).getWriteErrors()) { + if (ex instanceof MongoBulkWriteException bulkException) { + for (BulkWriteError x : bulkException.getWriteErrors()) { if (x.getCode() == 11000) { return new DuplicateKeyException(ex.getMessage(), ex); } @@ -114,9 +114,9 @@ public DataAccessException translateExceptionIfPossible(RuntimeException ex) { } // All other MongoExceptions - if (ex instanceof MongoException) { + if (ex instanceof MongoException mongoException) { - int code = ((MongoException) ex).getCode(); + int code = mongoException.getCode(); if (MongoDbErrorCodes.isDuplicateKeyCode(code)) { return new DuplicateKeyException(ex.getMessage(), ex); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index 5d642201a5..b44c6fcfd9 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -235,12 +235,9 @@ public MongoTemplate(MongoDatabaseFactory mongoDbFactory, @Nullable MongoConvert // We always have a mapping context in the converter, whether it's a simple one or not mappingContext = this.mongoConverter.getMappingContext(); // We create indexes based on mapping events - if (mappingContext instanceof MongoMappingContext) { - - MongoMappingContext mappingContext = (MongoMappingContext) this.mappingContext; + if (mappingContext instanceof MongoMappingContext mappingContext) { if (mappingContext.isAutoIndexCreation()) { - indexCreator = new MongoPersistentEntityIndexCreator(mappingContext, this); eventPublisher = new MongoMappingEventPublisher(indexCreator); mappingContext.setApplicationEventPublisher(eventPublisher); @@ -256,8 +253,8 @@ private MongoTemplate(MongoDatabaseFactory dbFactory, MongoTemplate that) { // we need to (re)create the MappingMongoConverter as we need to have it use a DbRefResolver that operates within // the sames session. Otherwise loading referenced objects would happen outside of it. - if (that.mongoConverter instanceof MappingMongoConverter) { - this.mongoConverter = ((MappingMongoConverter) that.mongoConverter).with(dbFactory); + if (that.mongoConverter instanceof MappingMongoConverter mappingMongoConverter) { + this.mongoConverter = mappingMongoConverter.with(dbFactory); } else { this.mongoConverter = that.mongoConverter; } @@ -336,8 +333,8 @@ public void setApplicationContext(ApplicationContext applicationContext) throws setEntityCallbacks(EntityCallbacks.create(applicationContext)); } - if (mappingContext instanceof ApplicationEventPublisherAware) { - ((ApplicationEventPublisherAware) mappingContext).setApplicationEventPublisher(eventPublisher); + if (mappingContext instanceof ApplicationEventPublisherAware applicationEventPublisherAware) { + applicationEventPublisherAware.setApplicationEventPublisher(eventPublisher); } resourceLoader = applicationContext; @@ -419,8 +416,8 @@ private void prepareIndexCreator(ApplicationContext context) { } } - if (context instanceof ConfigurableApplicationContext && indexCreator != null) { - ((ConfigurableApplicationContext) context).addApplicationListener(indexCreator); + if (context instanceof ConfigurableApplicationContext configurableApplicationContext && indexCreator != null) { + configurableApplicationContext.addApplicationListener(indexCreator); } } @@ -1221,7 +1218,7 @@ private WriteConcern potentiallyForceAcknowledgedWrite(@Nullable WriteConcern wc if (ObjectUtils.nullSafeEquals(WriteResultChecking.EXCEPTION, writeResultChecking)) { if (wc == null || wc.getWObject() == null - || (wc.getWObject() instanceof Number && ((Number) wc.getWObject()).intValue() < 1)) { + || (wc.getWObject() instanceof Number concern && concern.intValue() < 1)) { return WriteConcern.ACKNOWLEDGED; } } @@ -2126,7 +2123,7 @@ protected Stream aggregateStream(Aggregation aggregation, String collecti options.getComment().ifPresent(cursor::comment); options.getHint().ifPresent(cursor::hint); - Class domainType = aggregation instanceof TypedAggregation ? ((TypedAggregation) aggregation).getInputType() + Class domainType = aggregation instanceof TypedAggregation typedAggregation ? typedAggregation.getInputType() : null; Optionals.firstNonEmpty(options::getCollation, // @@ -2982,8 +2979,8 @@ public Document doInCollection(MongoCollection collection) throws Mong opts.arrayFilters(arrayFilters); } - if (update instanceof Document) { - return collection.findOneAndUpdate(query, (Document) update, opts); + if (update instanceof Document document) { + return collection.findOneAndUpdate(query, document, opts); } else if (update instanceof List) { return collection.findOneAndUpdate(query, (List) update, opts); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryOperations.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryOperations.java index 114a217885..58691eaa85 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryOperations.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryOperations.java @@ -388,12 +388,12 @@ private Document evaluateFields(@Nullable MongoPersistentEntity entity) { for (Entry entry : fields.entrySet()) { - if (entry.getValue() instanceof MongoExpression) { + if (entry.getValue() instanceof MongoExpression mongoExpression) { AggregationOperationContext ctx = entity == null ? Aggregation.DEFAULT_CONTEXT : new RelaxedTypeBasedAggregationOperationContext(entity.getType(), mappingContext, queryMapper); - evaluated.put(entry.getKey(), AggregationExpression.from((MongoExpression) entry.getValue()).toDocument(ctx)); + evaluated.put(entry.getKey(), AggregationExpression.from(mongoExpression).toDocument(ctx)); } else { evaluated.put(entry.getKey(), entry.getValue()); } @@ -456,7 +456,7 @@ class DistinctQueryContext extends QueryContext { */ private DistinctQueryContext(@Nullable Object query, String fieldName) { - super(query instanceof Document ? new BasicQuery((Document) query) : (Query) query); + super(query instanceof Document document ? new BasicQuery(document) : (Query) query); this.fieldName = fieldName; } @@ -844,7 +844,7 @@ List getUpdatePipeline(@Nullable Class domainType) { Document getMappedUpdate(@Nullable MongoPersistentEntity entity) { if (update != null) { - return update instanceof MappedUpdate ? update.getUpdateObject() + return update instanceof MappedUpdate mappedUpdate? update.getUpdateObject() : updateMapper.getMappedObject(update.getUpdateObject(), entity); } return mappedDocument.getDocument(); @@ -909,10 +909,10 @@ class AggregationDefinition { this.aggregation = aggregation; - if (aggregation instanceof TypedAggregation) { - this.inputType = ((TypedAggregation) aggregation).getInputType(); - } else if (aggregationOperationContext instanceof TypeBasedAggregationOperationContext) { - this.inputType = ((TypeBasedAggregationOperationContext) aggregationOperationContext).getType(); + if (aggregation instanceof TypedAggregation typedAggregation) { + this.inputType = typedAggregation.getInputType(); + } else if (aggregationOperationContext instanceof TypeBasedAggregationOperationContext typeBasedAggregationOperationContext) { + this.inputType = typeBasedAggregationOperationContext.getType(); } else { this.inputType = null; } @@ -937,8 +937,8 @@ class AggregationDefinition { this.aggregation = aggregation; - if (aggregation instanceof TypedAggregation) { - this.inputType = ((TypedAggregation) aggregation).getInputType(); + if (aggregation instanceof TypedAggregation typedAggregation) { + this.inputType = typedAggregation.getInputType(); } else { this.inputType = inputType; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveAggregationOperationSupport.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveAggregationOperationSupport.java index c7b09ee0c7..0dfdc71ea9 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveAggregationOperationSupport.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveAggregationOperationSupport.java @@ -98,9 +98,7 @@ private String getCollectionName(Aggregation aggregation) { return collection; } - if (aggregation instanceof TypedAggregation) { - - TypedAggregation typedAggregation = (TypedAggregation) aggregation; + if (aggregation instanceof TypedAggregation typedAggregation) { if (typedAggregation.getInputType() != null) { return template.getCollectionName(typedAggregation.getInputType()); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveChangeStreamOperationSupport.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveChangeStreamOperationSupport.java index 0e57a920b0..10c806f558 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveChangeStreamOperationSupport.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveChangeStreamOperationSupport.java @@ -93,10 +93,10 @@ public TerminatingChangeStream resumeAt(Object token) { return withOptions(builder -> { - if (token instanceof Instant) { - builder.resumeAt((Instant) token); - } else if (token instanceof BsonTimestamp) { - builder.resumeAt((BsonTimestamp) token); + if (token instanceof Instant instant) { + builder.resumeAt(instant); + } else if (token instanceof BsonTimestamp bsonTimestamp) { + builder.resumeAt(bsonTimestamp); } }); } @@ -161,8 +161,8 @@ private ChangeStreamOptionsBuilder initOptionsBuilder() { } options.getFilter().ifPresent(it -> { - if (it instanceof Aggregation) { - builder.filter((Aggregation) it); + if (it instanceof Aggregation aggregation) { + builder.filter(aggregation); } else { builder.filter(((List) it).toArray(new Document[0])); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java index 1f7c015fd1..7ba3aa67e4 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java @@ -251,9 +251,7 @@ public ReactiveMongoTemplate(ReactiveMongoDatabaseFactory mongoDatabaseFactory, this.eventDelegate = new EntityLifecycleEventDelegate(); // We create indexes based on mapping events - if (this.mappingContext instanceof MongoMappingContext) { - - MongoMappingContext mongoMappingContext = (MongoMappingContext) this.mappingContext; + if (this.mappingContext instanceof MongoMappingContext mongoMappingContext) { if (mongoMappingContext.isAutoIndexCreation()) { this.indexCreator = new ReactiveMongoPersistentEntityIndexCreator(mongoMappingContext, this::indexOps); @@ -357,8 +355,8 @@ public void setApplicationContext(ApplicationContext applicationContext) throws setEntityCallbacks(ReactiveEntityCallbacks.create(applicationContext)); } - if (mappingContext instanceof ApplicationEventPublisherAware) { - ((ApplicationEventPublisherAware) mappingContext).setApplicationEventPublisher(eventPublisher); + if (mappingContext instanceof ApplicationEventPublisherAware applicationEventPublisherAware) { + applicationEventPublisherAware.setApplicationEventPublisher(eventPublisher); } } @@ -442,8 +440,8 @@ private void prepareIndexCreator(ApplicationContext context) { } } - if (context instanceof ConfigurableApplicationContext) { - ((ConfigurableApplicationContext) context).addApplicationListener(indexCreatorListener); + if (context instanceof ConfigurableApplicationContext configurableApplicationContext) { + configurableApplicationContext.addApplicationListener(indexCreatorListener); } } @@ -1916,10 +1914,9 @@ List prepareFilter(ChangeStreamOptions options) { Object filter = options.getFilter().orElse(Collections.emptyList()); - if (filter instanceof Aggregation) { - Aggregation agg = (Aggregation) filter; - AggregationOperationContext context = agg instanceof TypedAggregation - ? new TypeBasedAggregationOperationContext(((TypedAggregation) agg).getInputType(), + if (filter instanceof Aggregation agg) { + AggregationOperationContext context = agg instanceof TypedAggregation typedAggregation + ? new TypeBasedAggregationOperationContext(typedAggregation.getInputType(), getConverter().getMappingContext(), queryMapper) : new RelaxedTypeBasedAggregationOperationContext(Object.class, mappingContext, queryMapper); @@ -2490,7 +2487,7 @@ private WriteConcern potentiallyForceAcknowledgedWrite(@Nullable WriteConcern wc if (ObjectUtils.nullSafeEquals(WriteResultChecking.EXCEPTION, writeResultChecking)) { if (wc == null || wc.getWObject() == null - || (wc.getWObject() instanceof Number && ((Number) wc.getWObject()).intValue() < 1)) { + || (wc.getWObject() instanceof Number concern && concern.intValue() < 1)) { return WriteConcern.ACKNOWLEDGED; } } @@ -2553,8 +2550,8 @@ private Function translateException() { return throwable -> { - if (throwable instanceof RuntimeException) { - return potentiallyConvertRuntimeException((RuntimeException) throwable, exceptionTranslator); + if (throwable instanceof RuntimeException runtimeException) { + return potentiallyConvertRuntimeException(runtimeException, exceptionTranslator); } return throwable; @@ -2757,8 +2754,8 @@ public Publisher doInCollection(MongoCollection collection) FindOneAndUpdateOptions findOneAndUpdateOptions = convertToFindOneAndUpdateOptions(options, fields, sort, arrayFilters); - if (update instanceof Document) { - return collection.findOneAndUpdate(query, (Document) update, findOneAndUpdateOptions); + if (update instanceof Document document) { + return collection.findOneAndUpdate(query, document, findOneAndUpdateOptions); } else if (update instanceof List) { return collection.findOneAndUpdate(query, (List) update, findOneAndUpdateOptions); } @@ -3180,9 +3177,9 @@ public void onApplicationEvent(MappingContextEvent event) { PersistentEntity entity = event.getPersistentEntity(); // Double check type as Spring infrastructure does not consider nested generics - if (entity instanceof MongoPersistentEntity) { + if (entity instanceof MongoPersistentEntity mongoPersistentProperties) { - onCheckForIndexes((MongoPersistentEntity) entity, subscriptionExceptionHandler); + onCheckForIndexes(mongoPersistentProperties, subscriptionExceptionHandler); } } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AbstractAggregationExpression.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AbstractAggregationExpression.java index dfb3432315..5a7affe56d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AbstractAggregationExpression.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AbstractAggregationExpression.java @@ -69,8 +69,8 @@ protected static List asFields(String... fieldRefs) { @SuppressWarnings("unchecked") private Object unpack(Object value, AggregationOperationContext context) { - if (value instanceof AggregationExpression) { - return ((AggregationExpression) value).toDocument(context); + if (value instanceof AggregationExpression aggregationExpression) { + return aggregationExpression.toDocument(context); } if (value instanceof Field field) { @@ -136,8 +136,8 @@ protected List append(Object value, Expand expandList) { List clone = new ArrayList<>((List) this.value); - if (value instanceof Collection && Expand.EXPAND_VALUES.equals(expandList)) { - clone.addAll((Collection) value); + if (value instanceof Collection collection && Expand.EXPAND_VALUES.equals(expandList)) { + clone.addAll(collection); } else { clone.add(value); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AccumulatorOperators.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AccumulatorOperators.java index c836d88767..9bb0d9e015 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AccumulatorOperators.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AccumulatorOperators.java @@ -360,10 +360,8 @@ public Sum and(Number value) { @SuppressWarnings("unchecked") public Document toDocument(Object value, AggregationOperationContext context) { - if (value instanceof List) { - if (((List) value).size() == 1) { - return super.toDocument(((List) value).iterator().next(), context); - } + if (value instanceof List list && list.size() == 1) { + return super.toDocument(list.iterator().next(), context); } return super.toDocument(value, context); @@ -440,10 +438,8 @@ public Avg and(AggregationExpression expression) { @SuppressWarnings("unchecked") public Document toDocument(Object value, AggregationOperationContext context) { - if (value instanceof List) { - if (((List) value).size() == 1) { - return super.toDocument(((List) value).iterator().next(), context); - } + if (value instanceof List list && list.size() == 1) { + return super.toDocument(list.iterator().next(), context); } return super.toDocument(value, context); @@ -539,10 +535,8 @@ public Document toDocument(AggregationOperationContext context) { @SuppressWarnings("unchecked") public Document toDocument(Object value, AggregationOperationContext context) { - if (value instanceof List) { - if (((List) value).size() == 1) { - return super.toDocument(((List) value).iterator().next(), context); - } + if (value instanceof List list && list.size() == 1) { + return super.toDocument(list.iterator().next(), context); } return super.toDocument(value, context); @@ -639,10 +633,8 @@ public Document toDocument(AggregationOperationContext context) { @SuppressWarnings("unchecked") public Document toDocument(Object value, AggregationOperationContext context) { - if (value instanceof List) { - if (((List) value).size() == 1) { - return super.toDocument(((List) value).iterator().next(), context); - } + if (value instanceof List list && list.size() == 1) { + return super.toDocument(list.iterator().next(), context); } return super.toDocument(value, context); @@ -719,10 +711,8 @@ public StdDevPop and(AggregationExpression expression) { @SuppressWarnings("unchecked") public Document toDocument(Object value, AggregationOperationContext context) { - if (value instanceof List) { - if (((List) value).size() == 1) { - return super.toDocument(((List) value).iterator().next(), context); - } + if (value instanceof List list && list.size() == 1) { + return super.toDocument(list.iterator().next(), context); } return super.toDocument(value, context); @@ -799,10 +789,8 @@ public StdDevSamp and(AggregationExpression expression) { @SuppressWarnings("unchecked") public Document toDocument(Object value, AggregationOperationContext context) { - if (value instanceof List) { - if (((List) value).size() == 1) { - return super.toDocument(((List) value).iterator().next(), context); - } + if (value instanceof List list && list.size() == 1) { + return super.toDocument(list.iterator().next(), context); } return super.toDocument(value, context); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AddFieldsOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AddFieldsOperation.java index 2d44d24b73..854611b104 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AddFieldsOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AddFieldsOperation.java @@ -148,7 +148,7 @@ public AddFieldsOperationBuilder withValue(Object value) { @Override public AddFieldsOperationBuilder withValueOf(Object value) { - valueMap.put(field, value instanceof String ? Fields.fields((String) value) : value); + valueMap.put(field, value instanceof String stringValue? Fields.fields(stringValue) : value); return AddFieldsOperationBuilder.this; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationExpression.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationExpression.java index 63bb95fe92..6f16a47791 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationExpression.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationExpression.java @@ -39,11 +39,11 @@ public interface AggregationExpression extends MongoExpression { */ static AggregationExpression from(MongoExpression expression) { - if (expression instanceof AggregationExpression) { - return AggregationExpression.class.cast(expression); + if (expression instanceof AggregationExpression aggregationExpression) { + return aggregationExpression; } - return (context) -> context.getMappedObject(expression.toDocument()); + return context -> context.getMappedObject(expression.toDocument()); } /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOperationRenderer.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOperationRenderer.java index cc3be58520..e0a3196f85 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOperationRenderer.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOperationRenderer.java @@ -55,9 +55,8 @@ static List toDocument(List operations, Aggregat operationDocuments.addAll(operation.toPipelineStages(contextToUse)); - if (operation instanceof FieldsExposingAggregationOperation) { + if (operation instanceof FieldsExposingAggregationOperation exposedFieldsOperation) { - FieldsExposingAggregationOperation exposedFieldsOperation = (FieldsExposingAggregationOperation) operation; ExposedFields fields = exposedFieldsOperation.getFields(); if (operation instanceof InheritsFieldsAggregationOperation || exposedFieldsOperation.inheritsFields()) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationResults.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationResults.java index 015c4fde27..f85b604d9d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationResults.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationResults.java @@ -105,6 +105,6 @@ public Document getRawResults() { private String parseServerUsed() { Object object = rawResults.get("serverUsed"); - return object instanceof String ? (String) object : null; + return object instanceof String stringValue ? stringValue : null; } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationUpdate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationUpdate.java index 6d4105d62d..27affeead9 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationUpdate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationUpdate.java @@ -97,10 +97,8 @@ protected AggregationUpdate(List pipeline) { super(pipeline); for (AggregationOperation operation : pipeline) { - if (operation instanceof FieldsExposingAggregationOperation) { - ((FieldsExposingAggregationOperation) operation).getFields().forEach(it -> { - keysTouched.add(it.getName()); - }); + if (operation instanceof FieldsExposingAggregationOperation exposingAggregationOperation) { + exposingAggregationOperation.getFields().forEach(it -> keysTouched.add(it.getName())); } } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArrayOperators.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArrayOperators.java index ac8a775583..ca74bf10f5 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArrayOperators.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArrayOperators.java @@ -681,18 +681,18 @@ private Document toFilter(ExposedFields exposedFields, AggregationOperationConte } private Object getMappedInput(AggregationOperationContext context) { - return input instanceof Field ? context.getReference((Field) input).toString() : input; + return input instanceof Field field? context.getReference(field).toString() : input; } private Object getMappedCondition(AggregationOperationContext context) { - if (!(condition instanceof AggregationExpression)) { + if (!(condition instanceof AggregationExpression aggregationExpression)) { return condition; } NestedDelegatingExpressionAggregationOperationContext nea = new NestedDelegatingExpressionAggregationOperationContext( context, Collections.singleton(as)); - return ((AggregationExpression) condition).toDocument(nea); + return aggregationExpression.toDocument(nea); } /** @@ -785,7 +785,7 @@ public static InputBuilder newBuilder() { public AsBuilder filter(List array) { Assert.notNull(array, "Array must not be null"); - filter.input = new ArrayList(array); + filter.input = new ArrayList<>(array); return this; } @@ -1292,10 +1292,10 @@ private Object getMappedValue(Object value, AggregationOperationContext context) if (value instanceof Document) { return value; } - if (value instanceof AggregationExpression) { - return ((AggregationExpression) value).toDocument(context); - } else if (value instanceof Field) { - return context.getReference(((Field) value)).toString(); + if (value instanceof AggregationExpression aggregationExpression) { + return aggregationExpression.toDocument(context); + } else if (value instanceof Field field) { + return context.getReference(field).toString(); } else { return context.getMappedObject(new Document("###val###", value)).get("###val###"); } @@ -1655,7 +1655,7 @@ public static class ZipBuilder { private ZipBuilder(Object sourceArray) { - this.sourceArrays = new ArrayList(); + this.sourceArrays = new ArrayList<>(); this.sourceArrays.add(sourceArray); } @@ -1672,14 +1672,14 @@ public Zip zip(Object... arrays) { Assert.notNull(arrays, "Arrays must not be null"); for (Object value : arrays) { - if (value instanceof String) { - sourceArrays.add(Fields.field((String) value)); + if (value instanceof String stringValue) { + sourceArrays.add(Fields.field(stringValue)); } else { sourceArrays.add(value); } } - return new Zip(Collections.singletonMap("inputs", sourceArrays)); + return new Zip(Collections.singletonMap("inputs", sourceArrays)); } } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketOperation.java index 9135c2d5a7..8b5d63883a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketOperation.java @@ -80,7 +80,7 @@ private BucketOperation(BucketOperation bucketOperation, List boundaries super(bucketOperation); - this.boundaries = new ArrayList(boundaries); + this.boundaries = new ArrayList<>(boundaries); this.defaultBucket = defaultBucket; } @@ -129,7 +129,7 @@ public BucketOperation withBoundaries(Object... boundaries) { Assert.notNull(boundaries, "Boundaries must not be null"); Assert.noNullElements(boundaries, "Boundaries must not contain null values"); - List newBoundaries = new ArrayList(this.boundaries.size() + boundaries.length); + List newBoundaries = new ArrayList<>(this.boundaries.size() + boundaries.length); newBoundaries.addAll(this.boundaries); newBoundaries.addAll(Arrays.asList(boundaries)); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketOperationSupport.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketOperationSupport.java index a31f9b7442..6f3af7c176 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketOperationSupport.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketOperationSupport.java @@ -324,7 +324,7 @@ public B apply(String operation, Object... values) { Assert.hasText(operation, "Operation must not be empty or null"); Assert.notNull(value, "Values must not be null"); - List objects = new ArrayList(values.length + 1); + List objects = new ArrayList<>(values.length + 1); objects.add(value); objects.addAll(Arrays.asList(values)); return apply(new OperationOutput(operation, objects)); @@ -350,8 +350,8 @@ private B apply(Accumulators operation) { */ public T as(String alias) { - if (value instanceof OperationOutput) { - return this.operation.andOutput(((OperationOutput) this.value).withAlias(alias)); + if (value instanceof OperationOutput operationOutput) { + return this.operation.andOutput(operationOutput.withAlias(alias)); } if (value instanceof Field) { @@ -520,7 +520,7 @@ public OperationOutput(String operation, Collection values) { Assert.notNull(values, "Values must not be null"); this.operation = operation; - this.values = new ArrayList(values); + this.values = new ArrayList<>(values); } private OperationOutput(Field field, OperationOutput operationOutput) { @@ -540,18 +540,18 @@ public Document toDocument(AggregationOperationContext context) { protected List getOperationArguments(AggregationOperationContext context) { - List result = new ArrayList(values != null ? values.size() : 1); + List result = new ArrayList<>(values != null ? values.size() : 1); for (Object element : values) { - if (element instanceof Field) { - result.add(context.getReference((Field) element).toString()); - } else if (element instanceof Fields) { - for (Field field : (Fields) element) { + if (element instanceof Field field) { + result.add(context.getReference(field).toString()); + } else if (element instanceof Fields fields) { + for (Field field : fields) { result.add(context.getReference(field).toString()); } - } else if (element instanceof AggregationExpression) { - result.add(((AggregationExpression) element).toDocument(context)); + } else if (element instanceof AggregationExpression aggregationExpression) { + result.add(aggregationExpression.toDocument(context)); } else { result.add(element); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ConditionalOperators.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ConditionalOperators.java index 1aa6b95519..465fc5d80f 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ConditionalOperators.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ConditionalOperators.java @@ -278,10 +278,10 @@ public static ThenBuilder ifNull(AggregationExpression expression) { @Override public Document toDocument(AggregationOperationContext context) { - List list = new ArrayList(); + List list = new ArrayList<>(); - if (condition instanceof Collection) { - for (Object val : ((Collection) this.condition)) { + if (condition instanceof Collection collection) { + for (Object val : collection) { list.add(mapCondition(val, context)); } } else { @@ -294,10 +294,10 @@ public Document toDocument(AggregationOperationContext context) { private Object mapCondition(Object condition, AggregationOperationContext context) { - if (condition instanceof Field) { - return context.getReference((Field) condition).toString(); - } else if (condition instanceof AggregationExpression) { - return ((AggregationExpression) condition).toDocument(context); + if (condition instanceof Field field) { + return context.getReference(field).toString(); + } else if (condition instanceof AggregationExpression aggregationExpression) { + return aggregationExpression.toDocument(context); } else { return condition; } @@ -305,10 +305,10 @@ private Object mapCondition(Object condition, AggregationOperationContext contex private Object resolve(Object value, AggregationOperationContext context) { - if (value instanceof Field) { - return context.getReference((Field) value).toString(); - } else if (value instanceof AggregationExpression) { - return ((AggregationExpression) value).toDocument(context); + if (value instanceof Field field) { + return context.getReference(field).toString(); + } else if (value instanceof AggregationExpression aggregationExpression) { + return aggregationExpression.toDocument(context); } else if (value instanceof Document) { return value; } @@ -482,7 +482,7 @@ public static Switch switchCases(CaseOperator... conditions) { public static Switch switchCases(List conditions) { Assert.notNull(conditions, "Conditions must not be null"); - return new Switch(Collections. singletonMap("branches", new ArrayList(conditions))); + return new Switch(Collections.singletonMap("branches", new ArrayList<>(conditions))); } /** @@ -529,10 +529,10 @@ public Document toDocument(AggregationOperationContext context) { Document dbo = new Document("case", when.toDocument(context)); - if (then instanceof AggregationExpression) { - dbo.put("then", ((AggregationExpression) then).toDocument(context)); - } else if (then instanceof Field) { - dbo.put("then", context.getReference((Field) then).toString()); + if (then instanceof AggregationExpression aggregationExpression) { + dbo.put("then", aggregationExpression.toDocument(context)); + } else if (then instanceof Field field) { + dbo.put("then", context.getReference(field).toString()); } else { dbo.put("then", then); } @@ -629,8 +629,8 @@ private Object resolveValue(AggregationOperationContext context, Object value) { return resolve(context, value); } - if (value instanceof AggregationExpression) { - return ((AggregationExpression) value).toDocument(context); + if (value instanceof AggregationExpression aggregationExpression) { + return aggregationExpression.toDocument(context); } return context.getMappedObject(new Document("$set", value)).get("$set"); @@ -642,13 +642,13 @@ private Object resolveCriteria(AggregationOperationContext context, Object value return resolve(context, value); } - if (value instanceof AggregationExpression) { - return ((AggregationExpression) value).toDocument(context); + if (value instanceof AggregationExpression aggregationExpression) { + return aggregationExpression.toDocument(context); } - if (value instanceof CriteriaDefinition) { + if (value instanceof CriteriaDefinition criteriaDefinition) { - Document mappedObject = context.getMappedObject(((CriteriaDefinition) value).getCriteriaObject()); + Document mappedObject = context.getMappedObject(criteriaDefinition.getCriteriaObject()); List clauses = getClauses(context, mappedObject); return clauses.size() == 1 ? clauses.get(0) : clauses; } @@ -659,7 +659,7 @@ private Object resolveCriteria(AggregationOperationContext context, Object value private List getClauses(AggregationOperationContext context, Document mappedObject) { - List clauses = new ArrayList(); + List clauses = new ArrayList<>(); for (String key : mappedObject.keySet()) { @@ -672,23 +672,20 @@ private List getClauses(AggregationOperationContext context, Document ma private List getClauses(AggregationOperationContext context, String key, Object predicate) { - List clauses = new ArrayList(); + List clauses = new ArrayList<>(); - if (predicate instanceof List) { + if (predicate instanceof List predicates) { - List predicates = (List) predicate; - List args = new ArrayList(predicates.size()); + List args = new ArrayList<>(predicates.size()); - for (Object clause : (List) predicate) { - if (clause instanceof Document) { - args.addAll(getClauses(context, (Document) clause)); + for (Object clause : predicates) { + if (clause instanceof Document document) { + args.addAll(getClauses(context, document)); } } clauses.add(new Document(key, args)); - } else if (predicate instanceof Document) { - - Document nested = (Document) predicate; + } else if (predicate instanceof Document nested) { for (String s : nested.keySet()) { @@ -696,14 +693,14 @@ private List getClauses(AggregationOperationContext context, String key, continue; } - List args = new ArrayList(2); + List args = new ArrayList<>(2); args.add("$" + key); args.add(nested.get(s)); clauses.add(new Document(s, args)); } } else if (!isKeyword(key)) { - List args = new ArrayList(2); + List args = new ArrayList<>(2); args.add("$" + key); args.add(predicate); clauses.add(new Document("$eq", args)); @@ -724,8 +721,8 @@ private boolean isKeyword(String candidate) { private Object resolve(AggregationOperationContext context, Object value) { - if (value instanceof Document) { - return context.getMappedObject((Document) value); + if (value instanceof Document document) { + return context.getMappedObject(document); } return context.getReference((Field) value).toString(); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/DateOperators.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/DateOperators.java index ef0c75da76..7520c83d08 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/DateOperators.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/DateOperators.java @@ -985,8 +985,8 @@ protected static java.util.Map appendTimezone(Object source, Tim java.util.Map args; - if (source instanceof Map) { - args = new LinkedHashMap<>((Map) source); + if (source instanceof Map map) { + args = new LinkedHashMap<>(map); } else { args = new LinkedHashMap<>(2); args.put("date", source); @@ -1877,12 +1877,12 @@ protected java.util.Map append(String key, Object value) { java.util.Map clone = new LinkedHashMap<>(argumentMap()); - if (value instanceof Timezone) { + if (value instanceof Timezone timezone) { if (ObjectUtils.nullSafeEquals(value, Timezone.none())) { clone.remove("timezone"); } else { - clone.put("timezone", ((Timezone) value).value); + clone.put("timezone", timezone.value); } } else { clone.put(key, value); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/DocumentEnhancingOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/DocumentEnhancingOperation.java index f06c3bbbe9..b549008c22 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/DocumentEnhancingOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/DocumentEnhancingOperation.java @@ -84,21 +84,21 @@ public ExposedFields getFields() { return exposedFields; } - private ExposedFields add(Object field) { + private ExposedFields add(Object fieldValue) { - if (field instanceof Field) { - return exposedFields.and(new ExposedField((Field) field, true)); + if (fieldValue instanceof Field field) { + return exposedFields.and(new ExposedField(field, true)); } - if (field instanceof String) { - return exposedFields.and(new ExposedField(Fields.field((String) field), true)); + if (fieldValue instanceof String stringValue) { + return exposedFields.and(new ExposedField(Fields.field(stringValue), true)); } - throw new IllegalArgumentException(String.format("Expected %s to be a field/property", field)); + throw new IllegalArgumentException(String.format("Expected %s to be a field/property", fieldValue)); } private static Document toSetEntry(Entry entry, AggregationOperationContext context) { - String field = entry.getKey() instanceof String ? context.getReference((String) entry.getKey()).getRaw() + String field = entry.getKey() instanceof String key ? context.getReference(key).getRaw() : context.getReference((Field) entry.getKey()).getRaw(); Object value = computeValue(entry.getValue(), context); @@ -108,20 +108,20 @@ private static Document toSetEntry(Entry entry, AggregationOpera private static Object computeValue(Object value, AggregationOperationContext context) { - if (value instanceof Field) { - return context.getReference((Field) value).toString(); + if (value instanceof Field field) { + return context.getReference(field).toString(); } - if (value instanceof ExpressionProjection) { - return ((ExpressionProjection) value).toExpression(context); + if (value instanceof ExpressionProjection expressionProjection) { + return expressionProjection.toExpression(context); } - if (value instanceof AggregationExpression) { - return ((AggregationExpression) value).toDocument(context); + if (value instanceof AggregationExpression aggregationExpression) { + return aggregationExpression.toDocument(context); } - if (value instanceof Collection) { - return ((Collection) value).stream().map(it -> computeValue(it, context)).collect(Collectors.toList()); + if (value instanceof Collection collection) { + return collection.stream().map(it -> computeValue(it, context)).collect(Collectors.toList()); } return value; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ExposedFields.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ExposedFields.java index 508c1c8d5e..1692108830 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ExposedFields.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ExposedFields.java @@ -300,13 +300,11 @@ public boolean equals(@Nullable Object obj) { return true; } - if (!(obj instanceof ExposedField)) { + if (!(obj instanceof ExposedField field)) { return false; } - ExposedField that = (ExposedField) obj; - - return this.field.equals(that.field) && this.synthetic == that.synthetic; + return this.field.equals(field.field) && this.synthetic == field.synthetic; } @Override @@ -393,13 +391,11 @@ public boolean equals(@Nullable Object obj) { return true; } - if (!(obj instanceof DirectFieldReference)) { + if (!(obj instanceof DirectFieldReference fieldReference)) { return false; } - DirectFieldReference that = (DirectFieldReference) obj; - - return this.field.equals(that.field); + return this.field.equals(fieldReference.field); } @Override @@ -460,12 +456,11 @@ public boolean equals(@Nullable Object obj) { return true; } - if (!(obj instanceof ExpressionFieldReference)) { + if (!(obj instanceof ExpressionFieldReference fieldReference)) { return false; } - ExpressionFieldReference that = (ExpressionFieldReference) obj; - return ObjectUtils.nullSafeEquals(this.delegate, that.delegate); + return ObjectUtils.nullSafeEquals(this.delegate, fieldReference.delegate); } @Override diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Fields.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Fields.java index 2177009f81..543bc31159 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Fields.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Fields.java @@ -308,13 +308,11 @@ public boolean equals(@Nullable Object obj) { return true; } - if (!(obj instanceof AggregationField)) { + if (!(obj instanceof AggregationField field)) { return false; } - AggregationField that = (AggregationField) obj; - - return this.name.equals(that.name) && ObjectUtils.nullSafeEquals(this.target, that.target); + return this.name.equals(field.name) && ObjectUtils.nullSafeEquals(this.target, field.target); } @Override diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GraphLookupOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GraphLookupOperation.java index bc29740616..a2fe238627 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GraphLookupOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GraphLookupOperation.java @@ -84,14 +84,14 @@ public Document toDocument(AggregationOperationContext context) { graphLookup.put("from", from); - List mappedStartWith = new ArrayList(startWith.size()); + List mappedStartWith = new ArrayList<>(startWith.size()); for (Object startWithElement : startWith) { - if (startWithElement instanceof AggregationExpression) { - mappedStartWith.add(((AggregationExpression) startWithElement).toDocument(context)); - } else if (startWithElement instanceof Field) { - mappedStartWith.add(context.getReference((Field) startWithElement).toString()); + if (startWithElement instanceof AggregationExpression aggregationExpression) { + mappedStartWith.add(aggregationExpression.toDocument(context)); + } else if (startWithElement instanceof Field field) { + mappedStartWith.add(context.getReference(field).toString()); } else { mappedStartWith.add(startWithElement); } @@ -237,7 +237,7 @@ public ConnectFromBuilder startWith(String... fieldReferences) { Assert.notNull(fieldReferences, "FieldReferences must not be null"); Assert.noNullElements(fieldReferences, "FieldReferences must not contain null elements"); - List fields = new ArrayList(fieldReferences.length); + List fields = new ArrayList<>(fieldReferences.length); for (String fieldReference : fieldReferences) { fields.add(Fields.field(fieldReference)); @@ -269,14 +269,14 @@ public ConnectFromBuilder startWith(Object... expressions) { private List verifyAndPotentiallyTransformStartsWithTypes(Object... expressions) { - List expressionsToUse = new ArrayList(expressions.length); + List expressionsToUse = new ArrayList<>(expressions.length); for (Object expression : expressions) { assertStartWithType(expression); - if (expression instanceof String) { - expressionsToUse.add(Fields.field((String) expression)); + if (expression instanceof String stringValue) { + expressionsToUse.add(Fields.field(stringValue)); } else { expressionsToUse.add(expression); } @@ -333,7 +333,7 @@ protected GraphLookupOperationBuilder(String from, List startW String connectTo) { this.from = from; - this.startWith = new ArrayList(startWith); + this.startWith = new ArrayList<>(startWith); this.connectFrom = Fields.field(connectFrom); this.connectTo = Fields.field(connectTo); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GroupOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GroupOperation.java index 32e476b142..30bfd95627 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GroupOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GroupOperation.java @@ -514,8 +514,8 @@ public Object getValue(AggregationOperationContext context) { if (reference == null) { - if (value instanceof AggregationExpression) { - return ((AggregationExpression) value).toDocument(context); + if (value instanceof AggregationExpression aggregationExpression) { + return aggregationExpression.toDocument(context); } return value; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/MergeOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/MergeOperation.java index ef29d94fea..a1bac59ca0 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/MergeOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/MergeOperation.java @@ -339,8 +339,8 @@ public static WhenDocumentsMatch updateWith(List aggregati Document toDocument(AggregationOperationContext context) { - if (value instanceof Aggregation) { - return new Document("whenMatched", ((Aggregation) value).toPipeline(context)); + if (value instanceof Aggregation aggregation) { + return new Document("whenMatched", aggregation.toPipeline(context)); } return new Document("whenMatched", value); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ObjectOperators.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ObjectOperators.java index f606e652c9..0f81a4af58 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ObjectOperators.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ObjectOperators.java @@ -245,12 +245,8 @@ public Document toDocument(Object value, AggregationOperationContext context) { @SuppressWarnings("unchecked") private Object potentiallyExtractSingleValue(Object value) { - if (value instanceof Collection) { - - Collection collection = ((Collection) value); - if (collection.size() == 1) { - return collection.iterator().next(); - } + if (value instanceof Collection collection && collection.size() == 1) { + return collection.iterator().next(); } return value; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/PrefixingDelegatingAggregationOperationContext.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/PrefixingDelegatingAggregationOperationContext.java index f67de964a6..4d0ee5ff6c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/PrefixingDelegatingAggregationOperationContext.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/PrefixingDelegatingAggregationOperationContext.java @@ -115,8 +115,8 @@ private Object prefixCollection(Collection sourceCollection) { List prefixed = new ArrayList<>(sourceCollection.size()); for (Object o : sourceCollection) { - if (o instanceof Document) { - prefixed.add(doPrefix((Document) o)); + if (o instanceof Document document) { + prefixed.add(doPrefix(document)); } else { prefixed.add(o); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ProjectionOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ProjectionOperation.java index f3609bc083..d541d78dd3 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ProjectionOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ProjectionOperation.java @@ -207,10 +207,10 @@ public ArrayProjectionOperationBuilder andArrayOf(Object... values) { for (Object value : values) { - if (value instanceof Field) { - builder.and((Field) value); - } else if (value instanceof AggregationExpression) { - builder.and((AggregationExpression) value); + if (value instanceof Field field) { + builder.and(field); + } else if (value instanceof AggregationExpression aggregationExpression) { + builder.and(aggregationExpression); } else { builder.and(value); } @@ -330,7 +330,7 @@ public static class ExpressionProjectionOperationBuilder extends ProjectionOpera * * @param expression must not be {@literal null}. * @param operation must not be {@literal null}. - * @param parameters + * @param parameters parameters must not be {@literal null}. */ public ExpressionProjectionOperationBuilder(String expression, ProjectionOperation operation, Object[] parameters) { @@ -347,7 +347,7 @@ public ProjectionOperationBuilder project(String operation, final Object... valu @Override protected List getOperationArguments(AggregationOperationContext context) { - List result = new ArrayList(values.length + 1); + List result = new ArrayList<>(values.length + 1); result.add(ExpressionProjection.toMongoExpression(context, ExpressionProjectionOperationBuilder.this.expression, ExpressionProjectionOperationBuilder.this.params)); result.addAll(Arrays.asList(values)); @@ -1455,19 +1455,19 @@ public Document toDocument(AggregationOperationContext context) { protected List getOperationArguments(AggregationOperationContext context) { - List result = new ArrayList(values.size()); + List result = new ArrayList<>(values.size()); result.add(context.getReference(getField()).toString()); for (Object element : values) { - if (element instanceof Field) { - result.add(context.getReference((Field) element).toString()); - } else if (element instanceof Fields) { - for (Field field : (Fields) element) { + if (element instanceof Field field) { + result.add(context.getReference(field).toString()); + } else if (element instanceof Fields fields) { + for (Field field : fields) { result.add(context.getReference(field).toString()); } - } else if (element instanceof AggregationExpression) { - result.add(((AggregationExpression) element).toDocument(context)); + } else if (element instanceof AggregationExpression aggregationExpression) { + result.add(aggregationExpression.toDocument(context)); } else { result.add(element); } @@ -1734,6 +1734,29 @@ public Document toDocument(AggregationOperationContext context) { } } + /** + * A {@link Projection} including all top level fields of the given target type mapped to include potentially + * deviating field names. + * + * @since 2.2 + * @author Christoph Strobl + */ + static class FilterProjection extends Projection { + + public static String FILTER_ELEMENT = "filterElement"; + private final Object value; + + FilterProjection(String fieldReference, Object value) { + super(Fields.field(FILTER_ELEMENT + "." + fieldReference)); + this.value = value; + } + + @Override + public Document toDocument(AggregationOperationContext context) { + return new Document(getExposedField().getName(), value); + } + } + /** * Builder for {@code array} projections. * @@ -1829,20 +1852,16 @@ public Document toDocument(AggregationOperationContext context) { private Object toArrayEntry(Object projection, AggregationOperationContext ctx) { - if (projection instanceof Field) { - return ctx.getReference((Field) projection).toString(); - } - - if (projection instanceof AggregationExpression) { - return ((AggregationExpression) projection).toDocument(ctx); + if (projection instanceof Field field) { + return ctx.getReference(field).toString(); } - if (projection instanceof FieldProjection) { - return ctx.getReference(((FieldProjection) projection).getExposedField().getTarget()).toString(); + if (projection instanceof AggregationExpression aggregationExpression) { + return aggregationExpression.toDocument(ctx); } - if (projection instanceof Projection) { - ((Projection) projection).toDocument(ctx); + if (projection instanceof FieldProjection fieldProjection) { + return ctx.getReference(fieldProjection.getExposedField().getTarget()).toString(); } return projection; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/RedactOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/RedactOperation.java index 50c8a5e4b9..742661f095 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/RedactOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/RedactOperation.java @@ -226,14 +226,14 @@ public RedactOperation build() { private ThenBuilder when() { - if (when instanceof CriteriaDefinition) { - return ConditionalOperators.Cond.when((CriteriaDefinition) when); + if (when instanceof CriteriaDefinition criteriaDefinition) { + return ConditionalOperators.Cond.when(criteriaDefinition); } - if (when instanceof AggregationExpression) { - return ConditionalOperators.Cond.when((AggregationExpression) when); + if (when instanceof AggregationExpression aggregationExpression) { + return ConditionalOperators.Cond.when(aggregationExpression); } - if (when instanceof Document) { - return ConditionalOperators.Cond.when((Document) when); + if (when instanceof Document document) { + return ConditionalOperators.Cond.when(document); } throw new IllegalArgumentException(String.format( diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ReplaceRootOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ReplaceRootOperation.java index ad9dcbdeca..c02be64f01 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ReplaceRootOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ReplaceRootOperation.java @@ -249,9 +249,9 @@ protected ReplaceRootDocumentOperationBuilder(ReplaceRootDocumentOperation curre public ReplaceRootDocumentOperation as(String fieldName) { - if (value instanceof AggregationExpression) { + if (value instanceof AggregationExpression aggregationExpression) { return new ReplaceRootDocumentOperation(currentOperation, - ReplacementDocument.forExpression(fieldName, (AggregationExpression) value)); + ReplacementDocument.forExpression(fieldName, aggregationExpression)); } return new ReplaceRootDocumentOperation(currentOperation, ReplacementDocument.forSingleValue(fieldName, value)); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ReplaceWithOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ReplaceWithOperation.java index 0ddd98591e..8b27348c47 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ReplaceWithOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ReplaceWithOperation.java @@ -62,23 +62,23 @@ public static ReplaceWithOperation replaceWithValue(Object value) { public static ReplaceWithOperation replaceWithValueOf(Object value) { Assert.notNull(value, "Value must not be null"); - return new ReplaceWithOperation((ctx) -> { + return new ReplaceWithOperation(ctx -> { - Object target = value instanceof String ? Fields.field((String) value) : value; + Object target = value instanceof String stringValue ? Fields.field(stringValue) : value; return computeValue(target, ctx); }); } private static Object computeValue(Object value, AggregationOperationContext context) { - if (value instanceof Field) { - return context.getReference((Field) value).toString(); + if (value instanceof Field field) { + return context.getReference(field).toString(); } - if (value instanceof AggregationExpression) { - return ((AggregationExpression) value).toDocument(context); + if (value instanceof AggregationExpression aggregationExpression) { + return aggregationExpression.toDocument(context); } - if (value instanceof Collection) { - return ((Collection) value).stream().map(it -> computeValue(it, context)).collect(Collectors.toList()); + if (value instanceof Collection collection) { + return collection.stream().map(it -> computeValue(it, context)).collect(Collectors.toList()); } return value; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetOperation.java index ba488aaa52..b338b691ce 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetOperation.java @@ -140,7 +140,7 @@ public SetOperation toValue(Object value) { @Override public SetOperation toValueOf(Object value) { - valueMap.put(field, value instanceof String ? Fields.fields((String) value) : value); + valueMap.put(field, value instanceof String stringValue ? Fields.fields(stringValue) : value); return FieldAppender.this.build(); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetWindowFieldsOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetWindowFieldsOperation.java index c032b36768..700c9ab86a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetWindowFieldsOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetWindowFieldsOperation.java @@ -78,10 +78,10 @@ public Document toDocument(AggregationOperationContext context) { Document $setWindowFields = new Document(); if (partitionBy != null) { - if (partitionBy instanceof AggregationExpression) { - $setWindowFields.append("partitionBy", ((AggregationExpression) partitionBy).toDocument(context)); - } else if (partitionBy instanceof Field) { - $setWindowFields.append("partitionBy", context.getReference((Field) partitionBy).toString()); + if (partitionBy instanceof AggregationExpression aggregationExpression) { + $setWindowFields.append("partitionBy", aggregationExpression.toDocument(context)); + } else if (partitionBy instanceof Field field) { + $setWindowFields.append("partitionBy", context.getReference(field).toString()); } else { $setWindowFields.append("partitionBy", partitionBy); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SpelExpressionTransformer.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SpelExpressionTransformer.java index 5399b2406b..d979036e33 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SpelExpressionTransformer.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SpelExpressionTransformer.java @@ -259,7 +259,7 @@ protected Object convert(AggregationExpressionTransformationContext context, OperatorNode currentNode) { - Document nextDocument = new Document(currentNode.getMongoOperator(), new ArrayList()); + Document nextDocument = new Document(currentNode.getMongoOperator(), new ArrayList<>()); if (!context.hasPreviousOperation()) { return nextDocument; @@ -282,7 +282,7 @@ private Object convertUnaryMinusOp(ExpressionTransformationContextSupport asList(Integer.valueOf(-1), leftResult)); + : new Document("$multiply", Arrays.asList(Integer.valueOf(-1), leftResult)); if (leftResult != null && context.hasPreviousOperation()) { context.addToPreviousOperation(result); @@ -453,7 +453,7 @@ protected Object convert(AggregationExpressionTransformationContext argList = new ArrayList(); + List argList = new ArrayList<>(); for (ExpressionNode childNode : node) { argList.add(transform(childNode, context)); @@ -516,7 +516,7 @@ static class NotOperatorNodeConversion extends ExpressionNodeConversion context) { NotOperatorNode node = context.getCurrentNode(); - List args = new ArrayList(); + List args = new ArrayList<>(); for (ExpressionNode childNode : node) { args.add(transform(childNode, context)); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnionWithOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnionWithOperation.java index 0bbf6f1343..c99a604447 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnionWithOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnionWithOperation.java @@ -138,12 +138,12 @@ public Document toDocument(AggregationOperationContext context) { private AggregationOperationContext computeContext(AggregationOperationContext source) { - if (source instanceof TypeBasedAggregationOperationContext) { - return ((TypeBasedAggregationOperationContext) source).continueOnMissingFieldReference(domainType != null ? domainType : Object.class); + if (source instanceof TypeBasedAggregationOperationContext aggregationOperationContext) { + return aggregationOperationContext.continueOnMissingFieldReference(domainType != null ? domainType : Object.class); } - if (source instanceof ExposedFieldsAggregationOperationContext) { - return computeContext(((ExposedFieldsAggregationOperationContext) source).getRootContext()); + if (source instanceof ExposedFieldsAggregationOperationContext aggregationOperationContext) { + return computeContext(aggregationOperationContext.getRootContext()); } return source; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnsetOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnsetOperation.java index 45b167b36a..0e6ee81e01 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnsetOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnsetOperation.java @@ -96,8 +96,8 @@ Collection removedFieldNames() { List fieldNames = new ArrayList<>(fields.size()); for (Object it : fields) { - if (it instanceof Field) { - fieldNames.add(((Field) it).getName()); + if (it instanceof Field field) { + fieldNames.add(field.getName()); } else { fieldNames.add(it.toString()); } @@ -123,16 +123,16 @@ public String getOperator() { private Object computeFieldName(Object field, AggregationOperationContext context) { - if (field instanceof Field) { - return context.getReference((Field) field).getRaw(); + if (field instanceof Field fieldObject) { + return context.getReference(fieldObject).getRaw(); } - if (field instanceof AggregationExpression) { - return ((AggregationExpression) field).toDocument(context); + if (field instanceof AggregationExpression aggregationExpression) { + return aggregationExpression.toDocument(context); } - if (field instanceof String) { - return context.getReference((String) field).getRaw(); + if (field instanceof String stringValue) { + return context.getReference(stringValue).getRaw(); } return field; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/VariableOperators.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/VariableOperators.java index 53cbd4c5e3..d8ba207246 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/VariableOperators.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/VariableOperators.java @@ -175,8 +175,8 @@ private Document toMap(ExposedFields exposedFields, AggregationOperationContext exposedFields, context); Document input; - if (sourceArray instanceof Field) { - input = new Document("input", context.getReference((Field) sourceArray).toString()); + if (sourceArray instanceof Field field) { + input = new Document("input", context.getReference(field).toString()); } else { input = new Document("input", ((AggregationExpression) sourceArray).toDocument(context)); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultMongoTypeMapper.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultMongoTypeMapper.java index 36acdfc43f..87e1433a18 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultMongoTypeMapper.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultMongoTypeMapper.java @@ -177,10 +177,10 @@ public Alias readAliasFrom(Bson source) { return Alias.NONE; } - if (source instanceof Document) { - return Alias.ofNullable(((Document) source).get(typeKey)); - } else if (source instanceof DBObject) { - return Alias.ofNullable(((DBObject) source).get(typeKey)); + if (source instanceof Document document) { + return Alias.ofNullable(document.get(typeKey)); + } else if (source instanceof DBObject dbObject) { + return Alias.ofNullable(dbObject.get(typeKey)); } throw new IllegalArgumentException("Cannot read alias from " + source.getClass()); @@ -190,10 +190,10 @@ public void writeTypeTo(Bson sink, Object alias) { if (typeKey != null) { - if (sink instanceof Document) { - ((Document) sink).put(typeKey, alias); - } else if (sink instanceof DBObject) { - ((DBObject) sink).put(typeKey, alias); + if (sink instanceof Document document) { + document.put(typeKey, alias); + } else if (sink instanceof DBObject dbObject) { + dbObject.put(typeKey, alias); } } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultReferenceResolver.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultReferenceResolver.java index e9df603dfd..7eb72c605d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultReferenceResolver.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultReferenceResolver.java @@ -108,8 +108,8 @@ LazyLoadingProxyFactory getProxyFactory() { private Object createLazyLoadingProxy(MongoPersistentProperty property, Object source, ReferenceLookupDelegate referenceLookupDelegate, LookupFunction lookupFunction, MongoEntityReader entityReader) { - return proxyFactory.createLazyLoadingProxy(property, it -> { - return referenceLookupDelegate.readReference(it, source, lookupFunction, entityReader); - }, source instanceof DocumentReferenceSource ? ((DocumentReferenceSource)source).getTargetSource() : source); + return proxyFactory.createLazyLoadingProxy(property, + it -> referenceLookupDelegate.readReference(it, source, lookupFunction, entityReader), + source instanceof DocumentReferenceSource documentSource ? documentSource.getTargetSource() : source); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DocumentAccessor.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DocumentAccessor.java index dec689ea6f..271551dad7 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DocumentAccessor.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DocumentAccessor.java @@ -169,8 +169,8 @@ private static Document getOrCreateNestedDocument(String key, Bson source) { Object existing = BsonUtils.asMap(source).get(key); - if (existing instanceof Document) { - return (Document) existing; + if (existing instanceof Document document) { + return document; } Document nested = new Document(); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DocumentPointerFactory.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DocumentPointerFactory.java index 58d589d32f..3c2e2dc3fe 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DocumentPointerFactory.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DocumentPointerFactory.java @@ -73,8 +73,8 @@ DocumentPointer computePointer( MappingContext, MongoPersistentProperty> mappingContext, MongoPersistentProperty property, Object value, Class typeHint) { - if (value instanceof LazyLoadingProxy) { - return () -> ((LazyLoadingProxy) value).getSource(); + if (value instanceof LazyLoadingProxy proxy) { + return proxy::getSource; } if (conversionService.canConvert(typeHint, DocumentPointer.class)) { @@ -94,8 +94,8 @@ DocumentPointer computePointer( return () -> conversionService.convert(idValue, idProperty.getFieldType()); } - if (idValue instanceof String && ObjectId.isValid((String) idValue)) { - return () -> new ObjectId((String) idValue); + if (idValue instanceof String stringValue && ObjectId.isValid((String) idValue)) { + return () -> new ObjectId(stringValue); } return () -> idValue; @@ -210,13 +210,13 @@ Object updatePlaceholders(org.bson.Document source, org.bson.Document target, lookup, entry.getKey())); } - if (entry.getValue() instanceof Document) { + if (entry.getValue() instanceof Document document) { MongoPersistentProperty persistentProperty = persistentEntity.getPersistentProperty(entry.getKey()); if (persistentProperty != null && persistentProperty.isEntity()) { MongoPersistentEntity nestedEntity = mappingContext.getPersistentEntity(persistentProperty.getType()); - target.put(entry.getKey(), updatePlaceholders((Document) entry.getValue(), new Document(), mappingContext, + target.put(entry.getKey(), updatePlaceholders(document, new Document(), mappingContext, nestedEntity, nestedEntity.getPropertyAccessor(propertyAccessor.getProperty(persistentProperty)))); } else { target.put(entry.getKey(), updatePlaceholders((Document) entry.getValue(), new Document(), mappingContext, diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DocumentReferenceSource.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DocumentReferenceSource.java index 3d415e57d1..9fe85396d3 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DocumentReferenceSource.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DocumentReferenceSource.java @@ -69,7 +69,7 @@ public Object getTargetSource() { */ @Nullable static Object getTargetSource(Object source) { - return source instanceof DocumentReferenceSource ? ((DocumentReferenceSource) source).getTargetSource() : source; + return source instanceof DocumentReferenceSource referenceSource ? referenceSource.getTargetSource() : source; } /** @@ -79,6 +79,6 @@ static Object getTargetSource(Object source) { * @return */ static Object getSelf(Object self) { - return self instanceof DocumentReferenceSource ? ((DocumentReferenceSource) self).getSelf() : self; + return self instanceof DocumentReferenceSource referenceSource ? referenceSource.getSelf() : self; } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/GeoConverters.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/GeoConverters.java index 65ce5c6d17..5f1f79d337 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/GeoConverters.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/GeoConverters.java @@ -422,32 +422,32 @@ public Document convert(GeoCommand source) { Shape shape = source.getShape(); - if (shape instanceof GeoJson) { - return GeoJsonToDocumentConverter.INSTANCE.convert((GeoJson) shape); + if (shape instanceof GeoJson geoJson) { + return GeoJsonToDocumentConverter.INSTANCE.convert(geoJson); } - if (shape instanceof Box) { + if (shape instanceof Box box) { - argument.add(toList(((Box) shape).getFirst())); - argument.add(toList(((Box) shape).getSecond())); + argument.add(toList(box.getFirst())); + argument.add(toList(box.getSecond())); - } else if (shape instanceof Circle) { + } else if (shape instanceof Circle circle) { - argument.add(toList(((Circle) shape).getCenter())); - argument.add(((Circle) shape).getRadius().getNormalizedValue()); + argument.add(toList(circle.getCenter())); + argument.add(circle.getRadius().getNormalizedValue()); - } else if (shape instanceof Polygon) { + } else if (shape instanceof Polygon polygon) { - List points = ((Polygon) shape).getPoints(); - argument = new ArrayList(points.size()); + List points = polygon.getPoints(); + argument = new ArrayList<>(points.size()); for (Point point : points) { argument.add(toList(point)); } - } else if (shape instanceof Sphere) { + } else if (shape instanceof Sphere sphere) { - argument.add(toList(((Sphere) shape).getCenter())); - argument.add(((Sphere) shape).getRadius().getNormalizedValue()); + argument.add(toList(sphere.getCenter())); + argument.add(sphere.getRadius().getNormalizedValue()); } return new Document(source.getCommand(), argument); @@ -471,11 +471,11 @@ public Document convert(GeoJson source) { Document dbo = new Document("type", source.getType()); - if (source instanceof GeoJsonGeometryCollection) { + if (source instanceof GeoJsonGeometryCollection collection) { List dbl = new ArrayList<>(); - for (GeoJson geometry : ((GeoJsonGeometryCollection) source).getCoordinates()) { + for (GeoJson geometry : collection.getCoordinates()) { dbl.add(convert(geometry)); } @@ -490,23 +490,23 @@ public Document convert(GeoJson source) { private Object convertIfNecessary(Object candidate) { - if (candidate instanceof GeoJson) { - return convertIfNecessary(((GeoJson) candidate).getCoordinates()); + if (candidate instanceof GeoJson geoJson) { + return convertIfNecessary(geoJson.getCoordinates()); } - if (candidate instanceof Iterable) { + if (candidate instanceof Iterable iterable) { List dbl = new ArrayList<>(); - for (Object element : (Iterable) candidate) { + for (Object element : iterable) { dbl.add(convertIfNecessary(element)); } return dbl; } - if (candidate instanceof Point) { - return toList((Point) candidate); + if (candidate instanceof Point point) { + return toList(point); } return candidate; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/LazyLoadingProxyFactory.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/LazyLoadingProxyFactory.java index 67d9af5f79..976cf0122f 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/LazyLoadingProxyFactory.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/LazyLoadingProxyFactory.java @@ -264,15 +264,15 @@ private String proxyToString(@Nullable Object source) { StringBuilder description = new StringBuilder(); if (source != null) { - if (source instanceof DBRef) { - description.append(((DBRef) source).getCollectionName()); + if (source instanceof DBRef dbRef) { + description.append(dbRef.getCollectionName()); description.append(":"); - description.append(((DBRef) source).getId()); + description.append(dbRef.getId()); } else { description.append(source); } } else { - description.append(System.identityHashCode(source)); + description.append(0); } description.append("$").append(LazyLoadingProxy.class.getSimpleName()); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java index 43d7d39a82..944c1802bd 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java @@ -274,8 +274,8 @@ public void setApplicationContext(ApplicationContext applicationContext) throws } ClassLoader classLoader = applicationContext.getClassLoader(); - if (this.defaultTypeMapper instanceof BeanClassLoaderAware && classLoader != null) { - ((BeanClassLoaderAware) this.defaultTypeMapper).setBeanClassLoader(classLoader); + if (this.defaultTypeMapper instanceof BeanClassLoaderAware beanClassLoaderAware && classLoader != null) { + beanClassLoaderAware.setBeanClassLoader(classLoader); } } @@ -426,7 +426,7 @@ protected S read(TypeInformation type, Bson bson) { protected S readDocument(ConversionContext context, Bson bson, TypeInformation typeHint) { - Document document = bson instanceof BasicDBObject ? new Document((BasicDBObject) bson) : (Document) bson; + Document document = bson instanceof BasicDBObject dbObject ? new Document(dbObject) : (Document) bson; TypeInformation typeToRead = getTypeMapper().readType(document, typeHint); Class rawType = typeToRead.getType(); @@ -444,8 +444,8 @@ protected S readDocument(ConversionContext context, Bson bson return (S) bson; } - if (bson instanceof Document) { - return (S) new BasicDBObject((Document) bson); + if (bson instanceof Document doc) { + return (S) new BasicDBObject(doc); } return (S) bson; @@ -668,7 +668,7 @@ private void readAssociation(Association association, P return; } - DBRef dbref = value instanceof DBRef ? (DBRef) value : null; + DBRef dbref = value instanceof DBRef dbRef ? dbRef : null; accessor.setProperty(property, dbRefResolver.resolveDbRef(property, dbref, callback, handler)); } @@ -699,8 +699,8 @@ public DBRef toDBRef(Object object, @Nullable MongoPersistentProperty referringP } // DATAMONGO-913 - if (object instanceof LazyLoadingProxy) { - return ((LazyLoadingProxy) object).toDBRef(); + if (object instanceof LazyLoadingProxy proxy) { + return proxy.toDBRef(); } return createDBRef(object, referringProperty); @@ -709,8 +709,8 @@ public DBRef toDBRef(Object object, @Nullable MongoPersistentProperty referringP @Override public DocumentPointer toDocumentPointer(Object source, @Nullable MongoPersistentProperty referringProperty) { - if (source instanceof LazyLoadingProxy) { - return () -> ((LazyLoadingProxy) source).getSource(); + if (source instanceof LazyLoadingProxy proxy) { + return proxy::getSource; } Assert.notNull(referringProperty, "Cannot create DocumentReference; The referringProperty must not be null"); @@ -732,8 +732,8 @@ DocumentPointer createDocumentPointer(Object source, @Nullable MongoPersisten return () -> source; } - if (source instanceof DocumentPointer) { - return (DocumentPointer) source; + if (source instanceof DocumentPointer pointer) { + return pointer; } if (ClassUtils.isAssignableValue(referringProperty.getType(), source) @@ -764,7 +764,7 @@ public void write(Object obj, Bson bson) { Class entityType = ClassUtils.getUserClass(obj.getClass()); TypeInformation type = TypeInformation.of(entityType); - Object target = obj instanceof LazyLoadingProxy ? ((LazyLoadingProxy) obj).getTarget() : obj; + Object target = obj instanceof LazyLoadingProxy proxy ? proxy.getTarget() : obj; writeInternal(target, bson, type); BsonUtils.removeNullId(bson); @@ -937,8 +937,8 @@ protected void writePropertyInternal(@Nullable Object obj, DocumentAccessor acce * If we already have a LazyLoadingProxy, we use it's cached DBRef value instead of * unnecessarily initializing it only to convert it to a DBRef a few instructions later. */ - if (obj instanceof LazyLoadingProxy) { - dbRefObj = ((LazyLoadingProxy) obj).toDBRef(); + if (obj instanceof LazyLoadingProxy proxy) { + dbRefObj = proxy.toDBRef(); } dbRefObj = dbRefObj != null ? dbRefObj : createDBRef(obj, prop); @@ -957,8 +957,8 @@ protected void writePropertyInternal(@Nullable Object obj, DocumentAccessor acce /* * If we have a LazyLoadingProxy we make sure it is initialized first. */ - if (obj instanceof LazyLoadingProxy) { - obj = ((LazyLoadingProxy) obj).getTarget(); + if (obj instanceof LazyLoadingProxy proxy) { + obj = proxy.getTarget(); } // Lookup potential custom target type @@ -975,7 +975,7 @@ protected void writePropertyInternal(@Nullable Object obj, DocumentAccessor acce : mappingContext.getRequiredPersistentEntity(type); Object existingValue = accessor.get(prop); - Document document = existingValue instanceof Document ? (Document) existingValue : new Document(); + Document document = existingValue instanceof Document existingDocument ? existingDocument : new Document(); writeInternal(obj, document, entity); addCustomTypeKeyIfNecessary(TypeInformation.of(prop.getRawType()), obj, document); @@ -1185,8 +1185,8 @@ protected String potentiallyEscapeMapKey(String source) { */ private String potentiallyConvertMapKey(Object key) { - if (key instanceof String) { - return (String) key; + if (key instanceof String stringValue) { + return stringValue; } return conversions.hasCustomWriteTarget(key.getClass(), String.class) @@ -1322,8 +1322,8 @@ protected DBRef createDBRef(Object target, @Nullable MongoPersistentProperty pro Assert.notNull(target, "Target object must not be null"); - if (target instanceof DBRef) { - return (DBRef) target; + if (target instanceof DBRef dbRef) { + return dbRef; } MongoPersistentEntity targetEntity = mappingContext.getPersistentEntity(target.getClass()); @@ -1484,26 +1484,26 @@ public Object convertToMongoType(@Nullable Object obj, @Nullable TypeInformation return getPotentiallyConvertedSimpleWrite(obj, conversionTargetType); } - if (obj instanceof List) { - return maybeConvertList((List) obj, typeInformation); + if (obj instanceof List list) { + return maybeConvertList(list, typeInformation); } - if (obj instanceof Document) { + if (obj instanceof Document document) { Document newValueDocument = new Document(); - for (String vk : ((Document) obj).keySet()) { - Object o = ((Document) obj).get(vk); + for (String vk : document.keySet()) { + Object o = document.get(vk); newValueDocument.put(vk, convertToMongoType(o, typeInformation)); } return newValueDocument; } - if (obj instanceof DBObject) { + if (obj instanceof DBObject dbObject) { Document newValueDbo = new Document(); - for (String vk : ((DBObject) obj).keySet()) { + for (String vk : dbObject.keySet()) { - Object o = ((DBObject) obj).get(vk); + Object o = dbObject.get(vk); newValueDbo.put(vk, convertToMongoType(o, typeInformation)); } @@ -1525,8 +1525,8 @@ public Object convertToMongoType(@Nullable Object obj, @Nullable TypeInformation return maybeConvertList(Arrays.asList((Object[]) obj), typeInformation); } - if (obj instanceof Collection) { - return maybeConvertList((Collection) obj, typeInformation); + if (obj instanceof Collection collection) { + return maybeConvertList(collection, typeInformation); } Document newDocument = new Document(); @@ -1572,21 +1572,20 @@ public List maybeConvertList(Iterable source, @Nullable TypeInformati @SuppressWarnings("unchecked") private Object removeTypeInfo(Object object, boolean recursively) { - if (!(object instanceof Document)) { + if (!(object instanceof Document document)) { return object; } - Document document = (Document) object; String keyToRemove = null; - for (String key : document.keySet()) { + for (Map.Entry entry : document.entrySet()) { if (recursively) { - Object value = document.get(key); + Object value = entry.getValue(); - if (value instanceof BasicDBList) { - for (Object element : (BasicDBList) value) { + if (value instanceof BasicDBList dbList) { + for (Object element : dbList) { removeTypeInfo(element, recursively); } } else if (value instanceof List) { @@ -1598,9 +1597,9 @@ private Object removeTypeInfo(Object object, boolean recursively) { } } - if (getTypeMapper().isTypeKey(key)) { + if (getTypeMapper().isTypeKey(entry.getKey())) { - keyToRemove = key; + keyToRemove = entry.getKey(); if (!recursively) { break; @@ -1629,8 +1628,8 @@ T readValue(ConversionContext context, @Nullable Object value, TypeInformati if (conversions.hasCustomReadTarget(value.getClass(), rawType)) { return (T) doConvert(value, rawType); - } else if (value instanceof DBRef) { - return (T) readDBRef(context, (DBRef) value, type); + } else if (value instanceof DBRef dbRef) { + return (T) readDBRef(context, dbRef, type); } return (T) context.convert(value, type); @@ -1810,11 +1809,11 @@ private static boolean isCollectionOfDbRefWhereBulkFetchIsPossible(Iterable s for (Object dbObjItem : source) { - if (!(dbObjItem instanceof DBRef)) { + if (!(dbObjItem instanceof DBRef dbRef)) { return false; } - collectionsFound.add(((DBRef) dbObjItem).getCollectionName()); + collectionsFound.add(dbRef.getCollectionName()); if (collectionsFound.size() > 1) { return false; @@ -1944,7 +1943,7 @@ public T getPropertyValue(MongoPersistentProperty property) { evaluator, (prop, bson, evaluator, path) -> MappingMongoConverter.this.getValueInternal(context, prop, bson, evaluator)); - DBRef dbref = rawRefValue instanceof DBRef ? (DBRef) rawRefValue : null; + DBRef dbref = rawRefValue instanceof DBRef dbRef ? dbRef : null; return (T) dbRefResolver.resolveDbRef(property, dbref, callback, dbRefProxyHandler); } @@ -2283,7 +2282,7 @@ public S convert(Object source, TypeInformation return (S) elementConverter.convert(source, typeHint); } - if (source instanceof Collection) { + if (source instanceof Collection collection) { Class rawType = typeHint.getType(); if (!Object.class.equals(rawType)) { @@ -2294,7 +2293,7 @@ public S convert(Object source, TypeInformation } if (typeHint.isCollectionLike() || typeHint.getType().isAssignableFrom(Collection.class)) { - return (S) collectionConverter.convert(context, (Collection) source, typeHint); + return (S) collectionConverter.convert(context, collection, typeHint); } } @@ -2312,8 +2311,8 @@ public S convert(Object source, TypeInformation String.format("Expected map like structure but found %s", source.getClass())); } - if (source instanceof DBRef) { - return (S) dbRefConverter.convert(context, (DBRef) source, typeHint); + if (source instanceof DBRef dbRef) { + return (S) dbRefConverter.convert(context, dbRef, typeHint); } if (source instanceof Collection) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoConversionContext.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoConversionContext.java index f4a1ea7bd1..62e7fceb33 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoConversionContext.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoConversionContext.java @@ -50,7 +50,7 @@ public T write(@Nullable Object value, TypeInformation target) { @Override public T read(@Nullable Object value, TypeInformation target) { - return value instanceof Bson ? mongoConverter.read(target.getType(), (Bson) value) + return value instanceof Bson bson ? mongoConverter.read(target.getType(), bson) : ValueConversionContext.super.read(value, target); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoConverter.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoConverter.java index ef9aa91445..6ef8ecf30c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoConverter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoConverter.java @@ -112,39 +112,35 @@ default T mapValueToTargetType(S source, Class targetType, DbRefResolv return (T) source; } - if (source instanceof BsonValue) { + if (source instanceof BsonValue bson) { - Object value = BsonUtils.toJavaType((BsonValue) source); + Object value = BsonUtils.toJavaType(bson); - if (value instanceof Document) { + if (value instanceof Document document) { - Document sourceDocument = (Document) value; + if (document.containsKey("$ref") && document.containsKey("$id")) { - if (sourceDocument.containsKey("$ref") && sourceDocument.containsKey("$id")) { - - Object id = sourceDocument.get("$id"); - String collection = sourceDocument.getString("$ref"); + Object id = document.get("$id"); + String collection = document.getString("$ref"); MongoPersistentEntity entity = getMappingContext().getPersistentEntity(targetType); if (entity != null && entity.hasIdProperty()) { id = convertId(id, entity.getIdProperty().getFieldType()); } - DBRef ref = sourceDocument.containsKey("$db") ? new DBRef(sourceDocument.getString("$db"), collection, id) + DBRef ref = document.containsKey("$db") ? new DBRef(document.getString("$db"), collection, id) : new DBRef(collection, id); - sourceDocument = dbRefResolver.fetch(ref); - if (sourceDocument == null) { + document = dbRefResolver.fetch(ref); + if (document == null) { return null; } } - return read(targetType, sourceDocument); + return read(targetType, document); } else { - if (!ClassUtils.isAssignable(targetType, value.getClass())) { - if (getConversionService().canConvert(value.getClass(), targetType)) { - return getConversionService().convert(value, targetType); - } + if (!ClassUtils.isAssignable(targetType, value.getClass()) && getConversionService().canConvert(value.getClass(), targetType)) { + return getConversionService().convert(value, targetType); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoConverters.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoConverters.java index 10f89903e7..681eba1452 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoConverters.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoConverters.java @@ -401,12 +401,12 @@ public NumberToNumberConverter(Class targetType) { @Override public T convert(Number source) { - if (source instanceof AtomicInteger) { - return NumberUtils.convertNumberToTargetClass(((AtomicInteger) source).get(), this.targetType); + if (source instanceof AtomicInteger atomicInteger) { + return NumberUtils.convertNumberToTargetClass(atomicInteger.get(), this.targetType); } - if (source instanceof AtomicLong) { - return NumberUtils.convertNumberToTargetClass(((AtomicLong) source).get(), this.targetType); + if (source instanceof AtomicLong atomicLong) { + return NumberUtils.convertNumberToTargetClass(atomicLong.get(), this.targetType); } return NumberUtils.convertNumberToTargetClass(source, this.targetType); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoExampleMapper.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoExampleMapper.java index 10862e5107..5d59787212 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoExampleMapper.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoExampleMapper.java @@ -15,16 +15,8 @@ */ package org.springframework.data.mongodb.core.convert; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; -import java.util.Optional; -import java.util.Set; -import java.util.Stack; import java.util.regex.Pattern; import org.bson.Document; @@ -177,8 +169,8 @@ private void applyPropertySpecs(String path, Document source, Class probeType if (entry.getValue() instanceof String) { applyStringMatcher(entry, stringMatcher, ignoreCase); - } else if (entry.getValue() instanceof Document) { - applyPropertySpecs(propertyPath, (Document) entry.getValue(), probeType, exampleSpecAccessor); + } else if (entry.getValue() instanceof Document document) { + applyPropertySpecs(propertyPath, document, probeType, exampleSpecAccessor); } } } @@ -189,7 +181,7 @@ private String getMappedPropertyPath(String path, Class probeType) { Iterator parts = Arrays.asList(path.split("\\.")).iterator(); - final Stack stack = new Stack<>(); + final Deque stack = new LinkedList<>(); List resultParts = new ArrayList<>(); @@ -225,7 +217,7 @@ private String getMappedPropertyPath(String path, Class probeType) { return StringUtils.collectionToDelimitedString(resultParts, "."); } - private Document updateTypeRestrictions(Document query, Example example) { + private Document updateTypeRestrictions(Document query, Example example) { Document result = new Document(); @@ -245,7 +237,7 @@ private Document updateTypeRestrictions(Document query, Example example) { return result; } - private boolean isTypeRestricting(Example example) { + private boolean isTypeRestricting(Example example) { if (example.getMatcher() instanceof UntypedExampleMatcher) { return false; @@ -324,20 +316,13 @@ private static Document orConcatenate(Document source) { */ private static MatchMode toMatchMode(StringMatcher matcher) { - switch (matcher) { - case CONTAINING: - return MatchMode.CONTAINING; - case STARTING: - return MatchMode.STARTING_WITH; - case ENDING: - return MatchMode.ENDING_WITH; - case EXACT: - return MatchMode.EXACT; - case REGEX: - return MatchMode.REGEX; - case DEFAULT: - default: - return MatchMode.DEFAULT; - } + return switch (matcher) { + case CONTAINING -> MatchMode.CONTAINING; + case STARTING -> MatchMode.STARTING_WITH; + case ENDING -> MatchMode.ENDING_WITH; + case EXACT -> MatchMode.EXACT; + case REGEX -> MatchMode.REGEX; + default -> MatchMode.DEFAULT; + }; } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java index 9302d37cae..cc68eedc03 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java @@ -326,8 +326,8 @@ protected Entry getMappedObjectForField(Field field, Object rawV String key = field.getMappedKey(); Object value; - if (rawValue instanceof MongoExpression) { - return createMapEntry(key, getMappedObject(((MongoExpression) rawValue).toDocument(), field.getEntity())); + if (rawValue instanceof MongoExpression mongoExpression) { + return createMapEntry(key, getMappedObject(mongoExpression.toDocument(), field.getEntity())); } if (isNestedKeyword(rawValue) && !field.isIdField()) { @@ -373,8 +373,8 @@ protected Document getMappedKeyword(Keyword keyword, @Nullable MongoPersistentEn if (keyword.isOrOrNor() || (keyword.hasIterableValue() && !keyword.isGeometry())) { Iterable conditions = keyword.getValue(); - List newConditions = conditions instanceof Collection - ? new ArrayList<>(((Collection) conditions).size()) + List newConditions = conditions instanceof Collection collection + ? new ArrayList<>(collection.size()) : new ArrayList<>(); for (Object condition : conditions) { @@ -412,8 +412,8 @@ protected Document getMappedKeyword(Field property, Keyword keyword) { Object convertedValue = needsAssociationConversion ? convertAssociation(value, property) : getMappedValue(property.with(keyword.getKey()), value); - if (keyword.isSample() && convertedValue instanceof Document) { - return (Document) convertedValue; + if (keyword.isSample() && convertedValue instanceof Document document) { + return document; } return new Document(keyword.key, convertedValue); @@ -556,8 +556,8 @@ protected boolean isAssociationConversionNecessary(Field documentField, @Nullabl @SuppressWarnings("unchecked") protected Object convertSimpleOrDocument(Object source, @Nullable MongoPersistentEntity entity) { - if (source instanceof Example) { - return exampleMapper.getMappedExample((Example) source, entity); + if (source instanceof Example example) { + return exampleMapper.getMappedExample(example, entity); } if (source instanceof List) { @@ -588,8 +588,8 @@ protected Object convertSimpleOrDocument(Object source, @Nullable MongoPersisten String key = ObjectUtils.nullSafeToString(converter.convertToMongoType(it.getKey())); - if (it.getValue() instanceof Document) { - map.put(key, getMappedObject((Document) it.getValue(), entity)); + if (it.getValue() instanceof Document document) { + map.put(key, getMappedObject(document, entity)); } else { map.put(key, delegateConvertToMongoType(it.getValue(), entity)); } @@ -641,9 +641,8 @@ protected Object convertAssociation(@Nullable Object source, @Nullable MongoPers return source; } - if (source instanceof DBRef) { + if (source instanceof DBRef ref) { - DBRef ref = (DBRef) source; Object id = convertId(ref.getId(), property != null && property.isIdProperty() ? property.getFieldType() : ObjectId.class); @@ -654,9 +653,9 @@ protected Object convertAssociation(@Nullable Object source, @Nullable MongoPers } } - if (source instanceof Iterable) { + if (source instanceof Iterable iterable) { BasicDBList result = new BasicDBList(); - for (Object element : (Iterable) source) { + for (Object element : iterable) { result.add(createReferenceFor(element, property)); } return result; @@ -720,8 +719,8 @@ private Entry createMapEntry(String key, @Nullable Object value) private Object createReferenceFor(Object source, MongoPersistentProperty property) { - if (source instanceof DBRef) { - return (DBRef) source; + if (source instanceof DBRef dbRef) { + return dbRef; } if (property != null && (property.isDocumentReference() @@ -823,9 +822,8 @@ private Object applyFieldTargetTypeHintToValue(Field documentField, @Nullable Ob return value; } - if (value instanceof Collection) { + if (value instanceof Collection source) { - Collection source = (Collection) value; Collection converted = new ArrayList<>(source.size()); for (Object o : source) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/ReferenceLookupDelegate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/ReferenceLookupDelegate.java index 0612523b2c..045f14f7aa 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/ReferenceLookupDelegate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/ReferenceLookupDelegate.java @@ -101,7 +101,7 @@ public ReferenceLookupDelegate( public Object readReference(MongoPersistentProperty property, Object source, LookupFunction lookupFunction, MongoEntityReader entityReader) { - Object value = source instanceof DocumentReferenceSource ? ((DocumentReferenceSource) source).getTargetSource() + Object value = source instanceof DocumentReferenceSource documentReferenceSource ? documentReferenceSource.getTargetSource() : source; DocumentReferenceQuery filter = computeFilter(property, source, spELContext); @@ -125,22 +125,20 @@ private ReferenceCollection computeReferenceContext(MongoPersistentProperty prop SpELContext spELContext) { // Use the first value as a reference for others in case of collection like - if (value instanceof Iterable) { + if (value instanceof Iterable iterable) { - Iterator iterator = ((Iterable) value).iterator(); + Iterator iterator = iterable.iterator(); value = iterator.hasNext() ? iterator.next() : new Document(); } // handle DBRef value - if (value instanceof DBRef) { - return ReferenceCollection.fromDBRef((DBRef) value); + if (value instanceof DBRef dbRef) { + return ReferenceCollection.fromDBRef(dbRef); } String collection = mappingContext.getRequiredPersistentEntity(property.getAssociationTargetType()).getCollection(); - if (value instanceof Document) { - - Document documentPointer = (Document) value; + if (value instanceof Document documentPointer) { if (property.isDocumentReference()) { @@ -216,9 +214,9 @@ ParameterBindingContext bindingContext(MongoPersistentProperty property, Object ValueProvider valueProviderFor(Object source) { - return (index) -> { - if (source instanceof Document) { - return Streamable.of(((Document) source).values()).toList().get(index); + return index -> { + if (source instanceof Document document) { + return Streamable.of(document.values()).toList().get(index); } return source; }; @@ -226,7 +224,7 @@ ValueProvider valueProviderFor(Object source) { EvaluationContext evaluationContextFor(MongoPersistentProperty property, Object source, SpELContext spELContext) { - Object target = source instanceof DocumentReferenceSource ? ((DocumentReferenceSource) source).getTargetSource() + Object target = source instanceof DocumentReferenceSource documentReferenceSource ? documentReferenceSource.getTargetSource() : source; if (target == null) { @@ -405,7 +403,7 @@ public Bson getSort() { public Iterable restoreOrder(Iterable documents) { Map targetMap = new LinkedHashMap<>(); - List collected = documents instanceof List ? (List) documents + List collected = documents instanceof List list ? list : Streamable.of(documents).toList(); for (Entry filterMapping : filterOrderMap.entrySet()) { @@ -438,7 +436,7 @@ public ListDocumentReferenceQuery(Document query, Document sort) { @Override public Iterable restoreOrder(Iterable documents) { - List target = documents instanceof List ? (List) documents + List target = documents instanceof List list ? list : Streamable.of(documents).toList(); if (!sort.isEmpty() || !query.containsKey("$or")) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/UpdateMapper.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/UpdateMapper.java index 7f9f00a5d1..c64a9d1fac 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/UpdateMapper.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/UpdateMapper.java @@ -161,17 +161,17 @@ protected Entry getMappedObjectForField(Field field, Object rawV } private Entry getMappedUpdateModifier(Field field, Object rawValue) { - Object value = null; + Object value; - if (rawValue instanceof Modifier) { + if (rawValue instanceof Modifier modifier) { - value = getMappedValue(field, (Modifier) rawValue); + value = getMappedValue(field, modifier); - } else if (rawValue instanceof Modifiers) { + } else if (rawValue instanceof Modifiers modifiers) { Document modificationOperations = new Document(); - for (Modifier modifier : ((Modifiers) rawValue).getModifiers()) { + for (Modifier modifier : modifiers.getModifiers()) { modificationOperations.putAll(getMappedValue(field, modifier)); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonGeometryCollection.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonGeometryCollection.java index a29b44829d..c6976ce3dc 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonGeometryCollection.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonGeometryCollection.java @@ -70,12 +70,10 @@ public boolean equals(@Nullable Object obj) { return true; } - if (!(obj instanceof GeoJsonGeometryCollection)) { + if (!(obj instanceof GeoJsonGeometryCollection other)) { return false; } - GeoJsonGeometryCollection other = (GeoJsonGeometryCollection) obj; - return ObjectUtils.nullSafeEquals(this.geometries, other.geometries); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonMultiLineString.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonMultiLineString.java index b38e8a72fb..73c02e2740 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonMultiLineString.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonMultiLineString.java @@ -85,10 +85,10 @@ public boolean equals(@Nullable Object obj) { return true; } - if (!(obj instanceof GeoJsonMultiLineString)) { + if (!(obj instanceof GeoJsonMultiLineString other)) { return false; } - return ObjectUtils.nullSafeEquals(this.coordinates, ((GeoJsonMultiLineString) obj).coordinates); + return ObjectUtils.nullSafeEquals(this.coordinates, other.coordinates); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonMultiPoint.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonMultiPoint.java index e0fd9b9049..ed8dba35e7 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonMultiPoint.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonMultiPoint.java @@ -107,10 +107,10 @@ public boolean equals(@Nullable Object obj) { return true; } - if (!(obj instanceof GeoJsonMultiPoint)) { + if (!(obj instanceof GeoJsonMultiPoint other)) { return false; } - return ObjectUtils.nullSafeEquals(this.points, ((GeoJsonMultiPoint) obj).points); + return ObjectUtils.nullSafeEquals(this.points, other.points); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonMultiPolygon.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonMultiPolygon.java index 87ec55db89..50212cbe29 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonMultiPolygon.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonMultiPolygon.java @@ -69,10 +69,10 @@ public boolean equals(@Nullable Object obj) { return true; } - if (!(obj instanceof GeoJsonMultiPolygon)) { + if (!(obj instanceof GeoJsonMultiPolygon other)) { return false; } - return ObjectUtils.nullSafeEquals(this.coordinates, ((GeoJsonMultiPolygon) obj).coordinates); + return ObjectUtils.nullSafeEquals(this.coordinates, other.coordinates); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/Sphere.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/Sphere.java index 45a3d5c885..4734a963d8 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/Sphere.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/Sphere.java @@ -105,13 +105,11 @@ public boolean equals(@Nullable Object obj) { return true; } - if (obj == null || !(obj instanceof Sphere)) { + if (!(obj instanceof Sphere other)) { return false; } - Sphere that = (Sphere) obj; - - return this.center.equals(that.center) && this.radius.equals(that.radius); + return this.center.equals(other.center) && this.radius.equals(other.radius); } @Override diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexField.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexField.java index 4f24f0a1de..f12a14a205 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexField.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexField.java @@ -181,14 +181,12 @@ public boolean equals(@Nullable Object obj) { return true; } - if (!(obj instanceof IndexField)) { + if (!(obj instanceof IndexField other)) { return false; } - IndexField that = (IndexField) obj; - - return this.key.equals(that.key) && ObjectUtils.nullSafeEquals(this.direction, that.direction) - && this.type == that.type; + return this.key.equals(other.key) && ObjectUtils.nullSafeEquals(this.direction, other.direction) + && this.type == other.type; } @Override diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoMappingEventPublisher.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoMappingEventPublisher.java index 3fc5fba16d..96fe5cbaae 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoMappingEventPublisher.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoMappingEventPublisher.java @@ -68,8 +68,8 @@ public MongoMappingEventPublisher(MongoPersistentEntityIndexCreator indexCreator @SuppressWarnings("unchecked") public void publishEvent(ApplicationEvent event) { - if (event instanceof MappingContextEvent) { - indexCreator.onApplicationEvent((MappingContextEvent, MongoPersistentProperty>) event); + if (event instanceof MappingContextEvent mappingContextEvent) { + indexCreator.onApplicationEvent(mappingContextEvent); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexCreator.java index 23a71f8c45..4443af2f28 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexCreator.java @@ -106,9 +106,9 @@ public void onApplicationEvent(MappingContextEvent event) { PersistentEntity entity = event.getPersistentEntity(); // Double check type as Spring infrastructure does not consider nested generics - if (entity instanceof MongoPersistentEntity) { + if (entity instanceof MongoPersistentEntity mongoPersistentEntity) { - checkForIndexes((MongoPersistentEntity) entity); + checkForIndexes(mongoPersistentEntity); } } @@ -136,8 +136,8 @@ private void checkForAndCreateIndexes(MongoPersistentEntity entity) { for (IndexDefinition indexDefinition : indexResolver.resolveIndexFor(entity.getTypeInformation())) { - IndexDefinitionHolder indexToCreate = indexDefinition instanceof IndexDefinitionHolder - ? (IndexDefinitionHolder) indexDefinition + IndexDefinitionHolder indexToCreate = indexDefinition instanceof IndexDefinitionHolder definitionHolder + ? definitionHolder : new IndexDefinitionHolder("", indexDefinition, collection); createIndex(indexToCreate); @@ -154,8 +154,8 @@ void createIndex(IndexDefinitionHolder indexDefinition) { } catch (UncategorizedMongoDbException ex) { - if (ex.getCause() instanceof MongoException - && MongoDbErrorCodes.isDataIntegrityViolationCode(((MongoException) ex.getCause()).getCode())) { + if (ex.getCause() instanceof MongoException mongoException + && MongoDbErrorCodes.isDataIntegrityViolationCode(mongoException.getCode())) { IndexInfo existingIndex = fetchIndexInformation(indexDefinition); String message = "Cannot create index for '%s' in collection '%s' with keys '%s' and options '%s'"; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolver.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolver.java index 10d107108b..da14cb197f 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolver.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolver.java @@ -493,7 +493,7 @@ private org.bson.Document resolveCompoundIndexKeyFromStringDefinition(String dot Object keyDefToUse = ExpressionUtils.evaluate(keyDefinitionString, () -> getEvaluationContextForProperty(entity)); - org.bson.Document dbo = (keyDefToUse instanceof org.bson.Document) ? (org.bson.Document) keyDefToUse + org.bson.Document dbo = (keyDefToUse instanceof org.bson.Document document) ? document : org.bson.Document.parse(ObjectUtils.nullSafeToString(keyDefToUse)); if (!StringUtils.hasText(dotPath)) { @@ -578,8 +578,8 @@ private PartialIndexFilter evaluatePartialFilter(String filterExpression, Persis Object result = ExpressionUtils.evaluate(filterExpression, () -> getEvaluationContextForProperty(entity)); - if (result instanceof org.bson.Document) { - return PartialIndexFilter.of((org.bson.Document) result); + if (result instanceof org.bson.Document document) { + return PartialIndexFilter.of(document); } return PartialIndexFilter.of(BsonUtils.parse(filterExpression, null)); @@ -589,8 +589,8 @@ private org.bson.Document evaluateWildcardProjection(String projectionExpression Object result = ExpressionUtils.evaluate(projectionExpression, () -> getEvaluationContextForProperty(entity)); - if (result instanceof org.bson.Document) { - return (org.bson.Document) result; + if (result instanceof org.bson.Document document) { + return document; } return BsonUtils.parse(projectionExpression, null); @@ -599,14 +599,14 @@ private org.bson.Document evaluateWildcardProjection(String projectionExpression private Collation evaluateCollation(String collationExpression, PersistentEntity entity) { Object result = ExpressionUtils.evaluate(collationExpression, () -> getEvaluationContextForProperty(entity)); - if (result instanceof org.bson.Document) { - return Collation.from((org.bson.Document) result); + if (result instanceof org.bson.Document document) { + return Collation.from(document); } - if (result instanceof Collation) { - return (Collation) result; + if (result instanceof Collation collation) { + return collation; } - if (result instanceof String) { - return Collation.parse(result.toString()); + if (result instanceof String stringValue) { + return Collation.parse(stringValue); } if (result instanceof Map) { return Collation.from(new org.bson.Document((Map) result)); @@ -788,8 +788,8 @@ private static Duration computeIndexTimeout(String timeoutValue, Supplier checkForAndCreateIndexes(MongoPersistentEntity entity) { String collection = entity.getCollection(); for (IndexDefinition indexDefinition : indexResolver.resolveIndexFor(entity.getTypeInformation())) { - IndexDefinitionHolder indexToCreate = indexDefinition instanceof IndexDefinitionHolder - ? (IndexDefinitionHolder) indexDefinition + IndexDefinitionHolder indexToCreate = indexDefinition instanceof IndexDefinitionHolder definitionHolder + ? definitionHolder : new IndexDefinitionHolder("", indexDefinition, collection); publishers.add(createIndex(indexToCreate)); @@ -187,8 +187,8 @@ private static boolean isDataIntegrityViolation(Throwable t) { if (t instanceof UncategorizedMongoDbException) { - return t.getCause() instanceof MongoException - && MongoDbErrorCodes.isDataIntegrityViolationCode(((MongoException) t.getCause()).getCode()); + return t.getCause() instanceof MongoException mongoException + && MongoDbErrorCodes.isDataIntegrityViolationCode(mongoException.getCode()); } return false; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java index 0bb5031b88..9b87e05456 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java @@ -159,12 +159,12 @@ public org.springframework.data.mongodb.core.query.Collation getCollation() { return null; } - if (collationValue instanceof org.bson.Document) { - return org.springframework.data.mongodb.core.query.Collation.from((org.bson.Document) collationValue); + if (collationValue instanceof org.bson.Document document) { + return org.springframework.data.mongodb.core.query.Collation.from(document); } - if (collationValue instanceof org.springframework.data.mongodb.core.query.Collation) { - return org.springframework.data.mongodb.core.query.Collation.class.cast(collationValue); + if (collationValue instanceof org.springframework.data.mongodb.core.query.Collation collation) { + return collation; } return StringUtils.hasText(collationValue.toString()) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java index 07a3549475..90f72855de 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java @@ -272,8 +272,8 @@ public boolean isTextScoreProperty() { */ public EvaluationContext getEvaluationContext(@Nullable Object rootObject) { - if (getOwner() instanceof BasicMongoPersistentEntity) { - return ((BasicMongoPersistentEntity) getOwner()).getEvaluationContext(rootObject); + if (getOwner() instanceof BasicMongoPersistentEntity mongoPersistentEntity) { + return mongoPersistentEntity.getEvaluationContext(rootObject); } return rootObject != null ? new StandardEvaluationContext(rootObject) : new StandardEvaluationContext(); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrappedMongoPersistentEntity.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrappedMongoPersistentEntity.java index c5b1b1faaf..d705d15355 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrappedMongoPersistentEntity.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrappedMongoPersistentEntity.java @@ -212,8 +212,8 @@ public void doWithProperties(PropertyHandler handler) { public void doWithProperties(SimplePropertyHandler handler) { delegate.doWithProperties((SimplePropertyHandler) property -> { - if (property instanceof MongoPersistentProperty) { - handler.doWithPersistentProperty(wrap((MongoPersistentProperty) property)); + if (property instanceof MongoPersistentProperty mongoPersistentProperty) { + handler.doWithPersistentProperty(wrap(mongoPersistentProperty)); } else { handler.doWithPersistentProperty(property); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/event/AbstractMongoEventListener.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/event/AbstractMongoEventListener.java index ae21a7ec2b..4dc3b17e95 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/event/AbstractMongoEventListener.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/event/AbstractMongoEventListener.java @@ -47,8 +47,7 @@ public AbstractMongoEventListener() { @Override public void onApplicationEvent(MongoMappingEvent event) { - if (event instanceof AfterLoadEvent) { - AfterLoadEvent afterLoadEvent = (AfterLoadEvent) event; + if (event instanceof AfterLoadEvent afterLoadEvent) { if (domainClass.isAssignableFrom(afterLoadEvent.getType())) { onAfterLoad((AfterLoadEvent) event); @@ -57,16 +56,16 @@ public void onApplicationEvent(MongoMappingEvent event) { return; } - if (event instanceof AbstractDeleteEvent) { + if (event instanceof AbstractDeleteEvent deleteEvent) { - Class eventDomainType = ((AbstractDeleteEvent) event).getType(); + Class eventDomainType = deleteEvent.getType(); if (eventDomainType != null && domainClass.isAssignableFrom(eventDomainType)) { - if (event instanceof BeforeDeleteEvent) { - onBeforeDelete((BeforeDeleteEvent) event); + if (event instanceof BeforeDeleteEvent beforeDeleteEvent) { + onBeforeDelete(beforeDeleteEvent); } - if (event instanceof AfterDeleteEvent) { - onAfterDelete((AfterDeleteEvent) event); + if (event instanceof AfterDeleteEvent afterDeleteEvent) { + onAfterDelete(afterDeleteEvent); } } @@ -81,14 +80,14 @@ public void onApplicationEvent(MongoMappingEvent event) { return; } - if (event instanceof BeforeConvertEvent) { - onBeforeConvert((BeforeConvertEvent) event); - } else if (event instanceof BeforeSaveEvent) { - onBeforeSave((BeforeSaveEvent) event); - } else if (event instanceof AfterSaveEvent) { - onAfterSave((AfterSaveEvent) event); - } else if (event instanceof AfterConvertEvent) { - onAfterConvert((AfterConvertEvent) event); + if (event instanceof BeforeConvertEvent beforeConvertEvent) { + onBeforeConvert(beforeConvertEvent); + } else if (event instanceof BeforeSaveEvent beforeSaveEvent) { + onBeforeSave(beforeSaveEvent); + } else if (event instanceof AfterSaveEvent afterSaveEvent) { + onAfterSave(afterSaveEvent); + } else if (event instanceof AfterConvertEvent afterConvertEvent) { + onAfterConvert(afterConvertEvent); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapreduce/MapReduceResults.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapreduce/MapReduceResults.java index ea62b2b10d..6bb5b889aa 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapreduce/MapReduceResults.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapreduce/MapReduceResults.java @@ -147,7 +147,7 @@ private static String parseOutputCollection(Document rawResults) { return null; } - return resultField instanceof Document ? ((Document) resultField).get("collection").toString() + return resultField instanceof Document document ? document.get("collection").toString() : resultField.toString(); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapreduce/MapReduceTiming.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapreduce/MapReduceTiming.java index 06e095e40d..b331b678a8 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapreduce/MapReduceTiming.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapreduce/MapReduceTiming.java @@ -69,14 +69,12 @@ public boolean equals(@Nullable Object obj) { return true; } - if (!(obj instanceof MapReduceTiming)) { + if (!(obj instanceof MapReduceTiming other)) { return false; } - MapReduceTiming that = (MapReduceTiming) obj; - - return this.emitLoopTime == that.emitLoopTime && // - this.mapTime == that.mapTime && // - this.totalTime == that.totalTime; + return this.emitLoopTime == other.emitLoopTime && // + this.mapTime == other.mapTime && // + this.totalTime == other.totalTime; } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamRequest.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamRequest.java index b0e83f59e7..2626ee1bb3 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamRequest.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamRequest.java @@ -113,8 +113,8 @@ public ChangeStreamRequest(MessageListener, ? sup Assert.notNull(messageListener, "MessageListener must not be null"); Assert.notNull(options, "Options must not be null"); - this.options = options instanceof ChangeStreamRequestOptions ? (ChangeStreamRequestOptions) options - : ChangeStreamRequestOptions.of(options); + this.options = options instanceof ChangeStreamRequestOptions changeStreamRequestOptions ? + changeStreamRequestOptions : ChangeStreamRequestOptions.of(options); this.messageListener = messageListener; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTask.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTask.java index 637a4db549..a19b65521d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTask.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamTask.java @@ -92,16 +92,16 @@ protected MongoCursor> initCursor(MongoTemplate t BsonTimestamp startAt = null; boolean resumeAfter = true; - if (options instanceof ChangeStreamRequest.ChangeStreamRequestOptions) { + if (options instanceof ChangeStreamRequest.ChangeStreamRequestOptions changeStreamRequestOptions) { - ChangeStreamOptions changeStreamOptions = ((ChangeStreamRequestOptions) options).getChangeStreamOptions(); + ChangeStreamOptions changeStreamOptions = changeStreamRequestOptions.getChangeStreamOptions(); filter = prepareFilter(template, changeStreamOptions); if (changeStreamOptions.getFilter().isPresent()) { Object val = changeStreamOptions.getFilter().get(); - if (val instanceof Aggregation) { - collation = ((Aggregation) val).getOptions().getCollation() + if (val instanceof Aggregation aggregation) { + collation = aggregation.getOptions().getCollation() .map(org.springframework.data.mongodb.core.query.Collation::toMongoCollation).orElse(null); } } @@ -172,14 +172,13 @@ List prepareFilter(MongoTemplate template, ChangeStreamOptions options Object filter = options.getFilter().orElse(null); - if (filter instanceof Aggregation) { - Aggregation agg = (Aggregation) filter; - AggregationOperationContext context = agg instanceof TypedAggregation - ? new TypeBasedAggregationOperationContext(((TypedAggregation) agg).getInputType(), + if (filter instanceof Aggregation aggregation) { + AggregationOperationContext context = aggregation instanceof TypedAggregation typedAggregation + ? new TypeBasedAggregationOperationContext(typedAggregation.getInputType(), template.getConverter().getMappingContext(), queryMapper) : Aggregation.DEFAULT_CONTEXT; - return agg.toPipeline(new PrefixingDelegatingAggregationOperationContext(context, "fullDocument", denylist)); + return aggregation.toPipeline(new PrefixingDelegatingAggregationOperationContext(context, "fullDocument", denylist)); } if (filter instanceof List) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainer.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainer.java index 5abdc9eca9..7eb088c491 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainer.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainer.java @@ -117,7 +117,7 @@ public void start() { subscriptions.values().stream() // .filter(it -> !it.isActive()) // - .filter(it -> it instanceof TaskSubscription) // + .filter(TaskSubscription.class::isInstance) // .map(TaskSubscription.class::cast) // .map(TaskSubscription::getTask) // .forEach(taskExecutor::execute); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorRequest.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorRequest.java index 44232a548e..94fa3e9fed 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorRequest.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorRequest.java @@ -72,8 +72,8 @@ public TailableCursorRequest(MessageListener messageListene Assert.notNull(options, "Options must not be null"); this.messageListener = messageListener; - this.options = options instanceof TailableCursorRequestOptions ? (TailableCursorRequestOptions) options - : TailableCursorRequestOptions.of(options); + this.options = options instanceof TailableCursorRequestOptions tailableCursorRequestOptions ? + tailableCursorRequestOptions : TailableCursorRequestOptions.of(options); } @Override diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorTask.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorTask.java index 2cc292dfe0..1dafe02004 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorTask.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorTask.java @@ -51,9 +51,8 @@ protected MongoCursor initCursor(MongoTemplate template, RequestOption Document filter = new Document(); Collation collation = null; - if (options instanceof TailableCursorRequest.TailableCursorRequestOptions) { + if (options instanceof TailableCursorRequest.TailableCursorRequestOptions requestOptions) { - TailableCursorRequestOptions requestOptions = (TailableCursorRequestOptions) options; if (requestOptions.getQuery().isPresent()) { Query query = requestOptions.getQuery().get(); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TaskFactory.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TaskFactory.java index 6abdd717d6..ce9382b1ab 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TaskFactory.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TaskFactory.java @@ -55,10 +55,10 @@ Task forRequest(SubscriptionRequest values) { * @see MongoDB Query operator: $mod */ public Criteria mod(Number value, Number remainder) { - List l = new ArrayList(2); + List l = new ArrayList<>(2); l.add(value); l.add(remainder); criteria.put("$mod", l); @@ -953,9 +953,9 @@ private boolean createNearCriteriaForCommand(String command, String operation, d Object existingNearOperationValue = criteria.get(command); - if (existingNearOperationValue instanceof Document) { + if (existingNearOperationValue instanceof Document document) { - ((Document) existingNearOperationValue).put(operation, maxDistance); + document.put(operation, maxDistance); return true; @@ -1022,27 +1022,22 @@ private boolean isEqual(@Nullable Object left, @Nullable Object right) { return right == null; } - if (left instanceof Pattern) { + if (left instanceof Pattern leftPattern) { - if (!(right instanceof Pattern)) { + if (!(right instanceof Pattern rightPattern)) { return false; } - Pattern leftPattern = (Pattern) left; - Pattern rightPattern = (Pattern) right; - return leftPattern.pattern().equals(rightPattern.pattern()) // && leftPattern.flags() == rightPattern.flags(); } - if (left instanceof Document) { + if (left instanceof Document leftDocument) { - if (!(right instanceof Document)) { + if (!(right instanceof Document rightDocument)) { return false; } - Document leftDocument = (Document) left; - Document rightDocument = (Document) right; Iterator> leftIterator = leftDocument.entrySet().iterator(); Iterator> rightIterator = rightDocument.entrySet().iterator(); @@ -1098,7 +1093,7 @@ public int hashCode() { private static boolean requiresGeoJsonFormat(Object value) { return value instanceof GeoJson - || (value instanceof GeoCommand && ((GeoCommand) value).getShape() instanceof GeoJson); + || (value instanceof GeoCommand geoCommand && geoCommand.getShape() instanceof GeoJson); } /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/GeoCommand.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/GeoCommand.java index f247ef5bc3..f995a9b6d8 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/GeoCommand.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/GeoCommand.java @@ -106,12 +106,10 @@ public boolean equals(@Nullable Object obj) { return true; } - if (!(obj instanceof GeoCommand)) { + if (!(obj instanceof GeoCommand other)) { return false; } - GeoCommand that = (GeoCommand) obj; - - return nullSafeEquals(this.command, that.command) && nullSafeEquals(this.shape, that.shape); + return nullSafeEquals(this.command, other.command) && nullSafeEquals(this.shape, other.shape); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java index 7733690fe3..c2d4a6a8b7 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java @@ -217,7 +217,7 @@ void setValue(String key, @Nullable Object value) { values = new LinkedHashMap<>(2); } - if (value == null || (value instanceof String && !StringUtils.hasText((String) value))) { + if (value == null || (value instanceof String stringValue && !StringUtils.hasText(stringValue))) { this.values.remove(key); } this.values.put(key, value); @@ -250,11 +250,10 @@ public boolean equals(@Nullable Object obj) { return true; } - if (!(obj instanceof Meta)) { + if (!(obj instanceof Meta other)) { return false; } - Meta other = (Meta) obj; if (!ObjectUtils.nullSafeEquals(this.values, other.values)) { return false; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/MetricConversion.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/MetricConversion.java index 01447148cf..71c2b7d9b8 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/MetricConversion.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/MetricConversion.java @@ -111,16 +111,16 @@ private static class ConversionMultiplier { ConversionMultiplier(Number source, Number target) { - if (source instanceof BigDecimal) { - this.source = (BigDecimal) source; + if (source instanceof BigDecimal bigDecimal) { + this.source = bigDecimal; } else { - this.source = new BigDecimal(source.doubleValue()); + this.source = BigDecimal.valueOf(source.doubleValue()); } - if (target instanceof BigDecimal) { - this.target = (BigDecimal) target; + if (target instanceof BigDecimal bigDecimal) { + this.target = bigDecimal; } else { - this.target = new BigDecimal(target.doubleValue()); + this.target = BigDecimal.valueOf(target.doubleValue()); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/MongoRegexCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/MongoRegexCreator.java index 9a97f1df31..23511d760a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/MongoRegexCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/MongoRegexCreator.java @@ -109,7 +109,7 @@ public String toRegularExpression(@Nullable String source, @Nullable MatchMode m * @since 2.2.14 */ public Object toCaseInsensitiveMatch(Object source) { - return source instanceof String ? new BsonRegularExpression(Pattern.quote((String) source), "i") : source; + return source instanceof String stringValue ? new BsonRegularExpression(Pattern.quote(stringValue), "i") : source; } private String prepareAndEscapeStringBeforeApplyingLikeRegex(String source, MatchMode matcherType) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/SerializationUtils.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/SerializationUtils.java index 7084227064..3dd9f2aae0 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/SerializationUtils.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/SerializationUtils.java @@ -77,9 +77,8 @@ public static Map flattenMap(@Nullable Document source) { private static void toFlatMap(String currentPath, Object source, Map map) { - if (source instanceof Document) { + if (source instanceof Document document) { - Document document = (Document) source; Iterator> it = document.entrySet().iterator(); String pathPrefix = currentPath.isEmpty() ? "" : currentPath + '.'; @@ -119,18 +118,18 @@ public static String serializeToJsonSafely(@Nullable Object value) { } try { - String json = value instanceof Document ? ((Document) value).toJson() : serializeValue(value); + String json = value instanceof Document document ? document.toJson() : serializeValue(value); return json.replaceAll("\":", "\" :").replaceAll("\\{\"", "{ \""); } catch (Exception e) { - if (value instanceof Collection) { - return toString((Collection) value); - } else if (value instanceof Map) { - return toString((Map) value); + if (value instanceof Collection collection) { + return toString(collection); + } else if (value instanceof Map map) { + return toString(map); } else if (ObjectUtils.isArray(value)) { return toString(Arrays.asList(ObjectUtils.toObjectArray(value))); } else { - return String.format("{ \"$java\" : %s }", value.toString()); + return String.format("{ \"$java\" : %s }", value); } } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Term.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Term.java index cc371e7734..b1a99edef2 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Term.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Term.java @@ -98,14 +98,12 @@ public boolean equals(@Nullable Object o) { return true; } - if (!(o instanceof Term)) { + if (!(o instanceof Term other)) { return false; } - Term term = (Term) o; - - return ObjectUtils.nullSafeEquals(negated, term.negated) && ObjectUtils.nullSafeEquals(type, term.type) - && ObjectUtils.nullSafeEquals(raw, term.raw); + return ObjectUtils.nullSafeEquals(negated, other.negated) && ObjectUtils.nullSafeEquals(type, other.type) + && ObjectUtils.nullSafeEquals(raw, other.raw); } @Override diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/TextCriteria.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/TextCriteria.java index 4c288916e1..3f2d1ae161 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/TextCriteria.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/TextCriteria.java @@ -230,15 +230,13 @@ public boolean equals(@Nullable Object o) { if (this == o) { return true; } - if (!(o instanceof TextCriteria)) { + if (!(o instanceof TextCriteria other)) { return false; } - TextCriteria that = (TextCriteria) o; - - return ObjectUtils.nullSafeEquals(terms, that.terms) && ObjectUtils.nullSafeEquals(language, that.language) - && ObjectUtils.nullSafeEquals(caseSensitive, that.caseSensitive) - && ObjectUtils.nullSafeEquals(diacriticSensitive, that.diacriticSensitive); + return ObjectUtils.nullSafeEquals(terms, other.terms) && ObjectUtils.nullSafeEquals(language, other.language) + && ObjectUtils.nullSafeEquals(caseSensitive, other.caseSensitive) + && ObjectUtils.nullSafeEquals(diacriticSensitive, other.diacriticSensitive); } @Override diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java index 4ff6aa1d59..49d62f773d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java @@ -95,8 +95,8 @@ public static Update fromDocument(Document object, String... exclude) { Object value = object.get(key); update.modifierOps.put(key, value); - if (isKeyword(key) && value instanceof Document) { - update.keysToUpdate.addAll(((Document) value).keySet()); + if (isKeyword(key) && value instanceof Document document) { + update.keysToUpdate.addAll(document.keySet()); } else { update.keysToUpdate.add(key); } @@ -448,8 +448,8 @@ protected void addMultiFieldOperation(String operator, String key, @Nullable Obj keyValueMap = new Document(); this.modifierOps.put(operator, keyValueMap); } else { - if (existingValue instanceof Document) { - keyValueMap = (Document) existingValue; + if (existingValue instanceof Document document) { + keyValueMap = document; } else { throw new InvalidDataAccessApiUsageException( "Modifier Operations should be a LinkedHashMap but was " + existingValue.getClass()); @@ -656,8 +656,8 @@ private Object[] extractValues(Object[] values) { return values; } - if (values.length == 1 && values[0] instanceof Collection) { - return ((Collection) values[0]).toArray(); + if (values.length == 1 && values[0] instanceof Collection collection) { + return collection.toArray(); } return Arrays.copyOf(values, values.length); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/TypedJsonSchemaObject.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/TypedJsonSchemaObject.java index 4b77d93974..924fecd3ef 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/TypedJsonSchemaObject.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/TypedJsonSchemaObject.java @@ -435,7 +435,7 @@ public Document toDocument() { if (additionalProperties != null) { doc.append("additionalProperties", - additionalProperties instanceof JsonSchemaObject ? ((JsonSchemaObject) additionalProperties).toDocument() + additionalProperties instanceof JsonSchemaObject schemaObject ? schemaObject.toDocument() : additionalProperties); } return doc; @@ -488,8 +488,8 @@ protected String generateDescription() { StringUtils.collectionToDelimitedString(requiredProperties, ", ")); } } - if (additionalProperties instanceof Boolean) { - description += (((Boolean) additionalProperties) ? " " : " not ") + "allowing additional properties"; + if (additionalProperties instanceof Boolean booleanValue) { + description += (booleanValue ? " " : " not ") + "allowing additional properties"; } if (!CollectionUtils.isEmpty(properties)) { @@ -714,20 +714,20 @@ private NumericJsonSchemaObject newInstance(@Nullable String description, boolea private static Bound createBound(Number number, boolean inclusive) { - if (number instanceof Long) { - return inclusive ? Bound.inclusive((Long) number) : Bound.exclusive((Long) number); + if (number instanceof Long longValue) { + return inclusive ? Bound.inclusive(longValue) : Bound.exclusive(longValue); } - if (number instanceof Double) { - return inclusive ? Bound.inclusive((Double) number) : Bound.exclusive((Double) number); + if (number instanceof Double doubleValue) { + return inclusive ? Bound.inclusive(doubleValue) : Bound.exclusive(doubleValue); } - if (number instanceof Float) { - return inclusive ? Bound.inclusive((Float) number) : Bound.exclusive((Float) number); + if (number instanceof Float floatValue) { + return inclusive ? Bound.inclusive(floatValue) : Bound.exclusive(floatValue); } - if (number instanceof Integer) { - return inclusive ? Bound.inclusive((Integer) number) : Bound.exclusive((Integer) number); + if (number instanceof Integer integerValue) { + return inclusive ? Bound.inclusive(integerValue) : Bound.exclusive(integerValue); } - if (number instanceof BigDecimal) { - return inclusive ? Bound.inclusive((BigDecimal) number) : Bound.exclusive((BigDecimal) number); + if (number instanceof BigDecimal bigDecimalValue) { + return inclusive ? Bound.inclusive(bigDecimalValue) : Bound.exclusive(bigDecimalValue); } throw new IllegalArgumentException("Unsupported numeric value"); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/ExpressionNode.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/ExpressionNode.java index 96653dce93..a3eca1ce2e 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/ExpressionNode.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/ExpressionNode.java @@ -67,20 +67,20 @@ protected ExpressionNode(SpelNode node, ExpressionState state) { */ public static ExpressionNode from(SpelNode node, ExpressionState state) { - if (node instanceof Operator) { - return new OperatorNode((Operator) node, state); + if (node instanceof Operator operator) { + return new OperatorNode(operator, state); } - if (node instanceof MethodReference) { - return new MethodReferenceNode((MethodReference) node, state); + if (node instanceof MethodReference methodReference) { + return new MethodReferenceNode(methodReference, state); } - if (node instanceof Literal) { - return new LiteralNode((Literal) node, state); + if (node instanceof Literal literal) { + return new LiteralNode(literal, state); } - if (node instanceof OperatorNot) { - return new NotOperatorNode((OperatorNot) node, state); + if (node instanceof OperatorNot operatorNot) { + return new NotOperatorNode(operatorNot, state); } return new ExpressionNode(node, state); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/LiteralNode.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/LiteralNode.java index 9f75224478..4b9fb5c232 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/LiteralNode.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/LiteralNode.java @@ -75,12 +75,11 @@ public class LiteralNode extends ExpressionNode { */ public boolean isUnaryMinus(@Nullable ExpressionNode parent) { - if (!(parent instanceof OperatorNode)) { + if (!(parent instanceof OperatorNode operatorNode)) { return false; } - OperatorNode operator = (OperatorNode) parent; - return operator.isUnaryMinus(); + return operatorNode.isUnaryMinus(); } @Override diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsOperationsSupport.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsOperationsSupport.java index e775472884..0a515fe865 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsOperationsSupport.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsOperationsSupport.java @@ -91,8 +91,8 @@ protected GridFSUploadOptions computeUploadOptionsFor(@Nullable String contentTy */ protected Document toDocument(@Nullable Object value) { - if (value instanceof Document) { - return (Document) value; + if (value instanceof Document document) { + return document; } Document document = new Document(); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsResource.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsResource.java index 7578dba37a..bd121e51d7 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsResource.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/ReactiveGridFsResource.java @@ -116,7 +116,7 @@ public static ReactiveGridFsResource absent(String filename) { @Override public Object getFileId() { - return id instanceof BsonValue ? BsonUtils.toJavaType((BsonValue) id) : id; + return id instanceof BsonValue bsonValue ? BsonUtils.toJavaType(bsonValue) : id; } /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/cdi/MongoRepositoryExtension.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/cdi/MongoRepositoryExtension.java index 3dba316ccb..b34aa3c37b 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/cdi/MongoRepositoryExtension.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/cdi/MongoRepositoryExtension.java @@ -67,7 +67,7 @@ void processBean(@Observes ProcessBean processBean) { } // Store the EntityManager bean using its qualifiers. - mongoOperations.put(new HashSet(bean.getQualifiers()), (Bean) bean); + mongoOperations.put(new HashSet<>(bean.getQualifiers()), (Bean) bean); } } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/CollationUtils.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/CollationUtils.java index 9e1b3c3ad7..c8aeb7b442 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/CollationUtils.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/CollationUtils.java @@ -92,11 +92,11 @@ static Collation computeCollation(@Nullable String collationExpression, Converti if (placeholderValue instanceof String) { return Collation.parse(placeholderValue.toString()); } - if (placeholderValue instanceof Locale) { - return Collation.of((Locale) placeholderValue); + if (placeholderValue instanceof Locale locale) { + return Collation.of(locale); } - if (placeholderValue instanceof Document) { - return Collation.from((Document) placeholderValue); + if (placeholderValue instanceof Document document) { + return Collation.from(document); } throw new IllegalArgumentException(String.format("Collation must be a String, Locale or Document but was %s", ObjectUtils.nullSafeClassName(placeholderValue))); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ConvertingParameterAccessor.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ConvertingParameterAccessor.java index 21513efbfb..665d8deb6b 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ConvertingParameterAccessor.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ConvertingParameterAccessor.java @@ -166,7 +166,7 @@ public Object nextConverted(MongoPersistentProperty property) { Collection values = asCollection(next); - List dbRefs = new ArrayList(values.size()); + List dbRefs = new ArrayList<>(values.size()); for (Object element : values) { dbRefs.add(writer.toDBRef(element, property)); } @@ -195,14 +195,14 @@ public void remove() { */ private static Collection asCollection(@Nullable Object source) { - if (source instanceof Iterable) { + if (source instanceof Iterable iterable) { - if(source instanceof Collection) { - return new ArrayList<>((Collection) source); + if(source instanceof Collection collection) { + return new ArrayList<>(collection); } List result = new ArrayList<>(); - for (Object element : (Iterable) source) { + for (Object element : iterable) { result.add(element); } return result; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParametersParameterAccessor.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParametersParameterAccessor.java index 8bcd953c0f..7b922872db 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParametersParameterAccessor.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParametersParameterAccessor.java @@ -84,8 +84,7 @@ public Point getGeoNearLocation() { return null; } - if (value instanceof double[]) { - double[] typedValue = (double[]) value; + if (value instanceof double[] typedValue) { if (typedValue.length != 2) { throw new IllegalArgumentException("The given double[] must have exactly 2 elements"); } else { @@ -107,16 +106,16 @@ protected TextCriteria potentiallyConvertFullText(Object fullText) { Assert.notNull(fullText, "Fulltext parameter must not be 'null'."); - if (fullText instanceof String) { - return TextCriteria.forDefaultLanguage().matching((String) fullText); + if (fullText instanceof String stringValue) { + return TextCriteria.forDefaultLanguage().matching(stringValue); } - if (fullText instanceof Term) { - return TextCriteria.forDefaultLanguage().matching((Term) fullText); + if (fullText instanceof Term term) { + return TextCriteria.forDefaultLanguage().matching(term); } - if (fullText instanceof TextCriteria) { - return ((TextCriteria) fullText); + if (fullText instanceof TextCriteria textCriteria) { + return textCriteria; } throw new IllegalArgumentException( diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java index 8a187bd1b8..f9cc596e68 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java @@ -197,7 +197,7 @@ private Criteria from(Part part, MongoPersistentProperty property, Criteria crit case REGEX: Object param = parameters.next(); - return param instanceof Pattern ? criteria.regex((Pattern) param) : criteria.regex(param.toString()); + return param instanceof Pattern pattern ? criteria.regex(pattern) : criteria.regex(param.toString()); case EXISTS: return criteria.exists((Boolean) parameters.next()); case TRUE: @@ -398,8 +398,8 @@ private java.util.List nextAsList(Iterator iterator, Part part) { private Streamable asStreamable(Object value) { - if (value instanceof Collection) { - return Streamable.of((Collection) value); + if (value instanceof Collection collection) { + return Streamable.of(collection); } else if (ObjectUtils.isArray(value)) { return Streamable.of((Object[]) value); } @@ -436,11 +436,10 @@ private boolean isSpherical(MongoPersistentProperty property) { private static Criteria computeBetweenPart(Criteria criteria, Iterator parameters) { Object value = parameters.next(); - if (!(value instanceof Range)) { + if (!(value instanceof Range range)) { return criteria.gt(value).lt(parameters.next()); } - Range range = (Range) value; Optional min = range.getLowerBound().getValue(); Optional max = range.getUpperBound().getValue(); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryExecution.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryExecution.java index 764d14fc41..68aa95d311 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryExecution.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryExecution.java @@ -232,12 +232,12 @@ public Object convert(Object source) { if (ReflectionUtils.isVoid(returnedType.getReturnedType())) { - if (source instanceof Mono) { - return ((Mono) source).then(); + if (source instanceof Mono mono) { + return mono.then(); } - if (source instanceof Publisher) { - return Flux.from((Publisher) source).then(); + if (source instanceof Publisher publisher) { + return Flux.from(publisher).then(); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/IndexEnsuringQueryCreationListener.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/IndexEnsuringQueryCreationListener.java index 4d42a11189..6eb35a0176 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/IndexEnsuringQueryCreationListener.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/IndexEnsuringQueryCreationListener.java @@ -116,7 +116,7 @@ public void onCreation(PartTreeMongoQuery query) { indexOperationsProvider.indexOps(metadata.getCollectionName(), metadata.getJavaType()).ensureIndex(index); } catch (UncategorizedMongoDbException e) { - if (e.getCause() instanceof MongoException) { + if (e.getCause() instanceof MongoException mongoException) { /* * As of MongoDB 4.2 index creation raises an error when creating an index for the very same keys with @@ -127,7 +127,7 @@ public void onCreation(PartTreeMongoQuery query) { * * For details please see: https://docs.mongodb.com/master/release-notes/4.2-compatibility/#indexes */ - if (((MongoException) e.getCause()).getCode() != 85) { + if (mongoException.getCode() != 85) { throw e; } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QuerydslPredicateExecutorSupport.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QuerydslPredicateExecutorSupport.java index a77aface35..0e207bd3bb 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QuerydslPredicateExecutorSupport.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QuerydslPredicateExecutorSupport.java @@ -82,8 +82,8 @@ protected OrderSpecifier toOrder(Order order) { */ protected List> toOrderSpecifiers(Sort sort) { - if (sort instanceof QSort) { - return ((QSort) sort).getOrderSpecifiers(); + if (sort instanceof QSort qSort) { + return qSort.getOrderSpecifiers(); } return sort.stream().map(this::toOrder).collect(Collectors.toList()); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleMongoRepository.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleMongoRepository.java index 23a459123a..9d028bbbad 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleMongoRepository.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleMongoRepository.java @@ -339,7 +339,7 @@ private Query getIdQuery(Iterable ids) { } private static Collection toCollection(Iterable ids) { - return ids instanceof Collection ? (Collection) ids + return ids instanceof Collection collection ? collection : StreamUtils.createStreamFromIterator(ids.iterator()).collect(Collectors.toList()); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepository.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepository.java index 4e1ccad65a..69c8b028d2 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepository.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepository.java @@ -387,7 +387,7 @@ private Query getIdQuery(Iterable ids) { } private static Collection toCollection(Iterable ids) { - return ids instanceof Collection ? (Collection) ids + return ids instanceof Collection collection ? collection : StreamUtils.createStreamFromIterator(ids.iterator()).collect(Collectors.toList()); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializer.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializer.java index d121fec748..7d14ef0b4e 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializer.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializer.java @@ -107,7 +107,7 @@ protected String getKeyForPath(Path expr, PathMetadata metadata) { @Override protected Document asDocument(@Nullable String key, @Nullable Object value) { - value = value instanceof Optional ? ((Optional) value).orElse(null) : value; + value = value instanceof Optional optional ? optional.orElse(null) : value; return super.asDocument(key, value instanceof Pattern ? value : converter.convertToMongoType(value)); } @@ -134,12 +134,10 @@ protected String asDBKey(@Nullable Operation expr, int index) { Expression arg = expr.getArg(index); String key = super.asDBKey(expr, index); - if (!(arg instanceof Path)) { + if (!(arg instanceof Path path)) { return key; } - Path path = (Path) arg; - if (!isReference(path)) { return key; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/BsonUtils.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/BsonUtils.java index 1e1ebe4af8..78a600c200 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/BsonUtils.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/BsonUtils.java @@ -140,8 +140,8 @@ public static Document asDocument(Bson bson, CodecRegistry codecRegistry) { Map map = asMap(bson, codecRegistry); - if (map instanceof Document) { - return (Document) map; + if (map instanceof Document document) { + return document; } return new Document(map); @@ -160,14 +160,14 @@ public static Document asMutableDocument(Bson bson) { bson = new Document(asDocument(bson)); } - if (bson instanceof Document) { - return (Document) bson; + if (bson instanceof Document document) { + return document; } Map map = asMap(bson); - if (map instanceof Document) { - return (Document) map; + if (map instanceof Document document) { + return document; } return new Document(map); @@ -175,14 +175,14 @@ public static Document asMutableDocument(Bson bson) { public static void addToMap(Bson bson, String key, @Nullable Object value) { - if (bson instanceof Document) { + if (bson instanceof Document document) { - ((Document) bson).put(key, value); + document.put(key, value); return; } - if (bson instanceof BSONObject) { + if (bson instanceof BSONObject bsonObject) { - ((BSONObject) bson).put(key, value); + bsonObject.put(key, value); return; } @@ -199,15 +199,15 @@ public static void addToMap(Bson bson, String key, @Nullable Object value) { */ public static void addAllToMap(Bson target, Map source) { - if (target instanceof Document) { + if (target instanceof Document document) { - ((Document) target).putAll(source); + document.putAll(source); return; } - if (target instanceof BSONObject) { + if (target instanceof BSONObject bsonObject) { - ((BSONObject) target).putAll(source); + bsonObject.putAll(source); return; } @@ -226,14 +226,10 @@ public static void addAllToMap(Bson target, Map source) { */ public static boolean contains(Bson bson, String key, @Nullable Object value) { - if (bson instanceof Document) { - - Document doc = (Document) bson; - return doc.containsKey(key) && ObjectUtils.nullSafeEquals(doc.get(key), value); + if (bson instanceof Document document) { + return document.containsKey(key) && ObjectUtils.nullSafeEquals(document.get(key), value); } - if (bson instanceof BSONObject) { - - BSONObject bsonObject = (BSONObject) bson; + if (bson instanceof BSONObject bsonObject) { return bsonObject.containsField(key) && ObjectUtils.nullSafeEquals(bsonObject.get(key), value); } @@ -266,15 +262,15 @@ public static boolean removeNullId(Bson bson) { */ static void removeFrom(Bson bson, String key) { - if (bson instanceof Document) { + if (bson instanceof Document document) { - ((Document) bson).remove(key); + document.remove(key); return; } - if (bson instanceof BSONObject) { + if (bson instanceof BSONObject bsonObject) { - ((BSONObject) bson).removeField(key); + bsonObject.removeField(key); return; } @@ -334,40 +330,40 @@ public static Object toJavaType(BsonValue value) { */ public static BsonValue simpleToBsonValue(Object source) { - if (source instanceof BsonValue) { - return (BsonValue) source; + if (source instanceof BsonValue bsonValue) { + return bsonValue; } - if (source instanceof ObjectId) { - return new BsonObjectId((ObjectId) source); + if (source instanceof ObjectId objectId) { + return new BsonObjectId(objectId); } - if (source instanceof String) { - return new BsonString((String) source); + if (source instanceof String stringValue) { + return new BsonString(stringValue); } - if (source instanceof Double) { - return new BsonDouble((Double) source); + if (source instanceof Double doubleValue) { + return new BsonDouble(doubleValue); } - if (source instanceof Integer) { - return new BsonInt32((Integer) source); + if (source instanceof Integer integerValue) { + return new BsonInt32(integerValue); } - if (source instanceof Long) { - return new BsonInt64((Long) source); + if (source instanceof Long longValue) { + return new BsonInt64(longValue); } - if (source instanceof byte[]) { - return new BsonBinary((byte[]) source); + if (source instanceof byte[] byteArray) { + return new BsonBinary(byteArray); } - if (source instanceof Boolean) { - return new BsonBoolean((Boolean) source); + if (source instanceof Boolean booleanValue) { + return new BsonBoolean(booleanValue); } - if (source instanceof Float) { - return new BsonDouble((Float) source); + if (source instanceof Float floatValue) { + return new BsonDouble(floatValue); } throw new IllegalArgumentException(String.format("Unable to convert %s (%s) to BsonValue.", source, @@ -509,11 +505,11 @@ public static Object resolveValue(Bson bson, String key) { Object result = source.get(parts[i - 1]); - if (!(result instanceof Bson)) { + if (!(result instanceof Bson resultBson)) { return null; } - source = asMap((Bson) result); + source = asMap(resultBson); } return source.get(parts[parts.length - 1]); @@ -567,16 +563,16 @@ public static boolean hasValue(Bson bson, String key) { @SuppressWarnings("unchecked") private static Map getAsMap(Object source) { - if (source instanceof Document) { - return (Document) source; + if (source instanceof Document document) { + return document; } - if (source instanceof BasicDBObject) { - return (BasicDBObject) source; + if (source instanceof BasicDBObject basicDBObject) { + return basicDBObject; } - if (source instanceof DBObject) { - return ((DBObject) source).toMap(); + if (source instanceof DBObject dbObject) { + return dbObject.toMap(); } if (source instanceof Map) { @@ -599,16 +595,16 @@ private static Map getAsMap(Object source) { @SuppressWarnings("unchecked") public static Bson asBson(Object source) { - if (source instanceof Document) { - return (Document) source; + if (source instanceof Document document) { + return document; } - if (source instanceof BasicDBObject) { - return (BasicDBObject) source; + if (source instanceof BasicDBObject basicDBObject) { + return basicDBObject; } - if (source instanceof DBObject) { - return new Document(((DBObject) source).toMap()); + if (source instanceof DBObject dbObject) { + return new Document(dbObject.toMap()); } if (source instanceof Map) { @@ -640,8 +636,8 @@ public static boolean supportsBson(Object source) { */ public static Collection asCollection(Object source) { - if (source instanceof Collection) { - return (Collection) source; + if (source instanceof Collection collection) { + return collection; } return source.getClass().isArray() ? CollectionUtils.arrayToList(source) : Collections.singleton(source); @@ -655,21 +651,21 @@ private static String toJson(@Nullable Object value) { } try { - return value instanceof Document - ? ((Document) value).toJson(MongoClientSettings.getDefaultCodecRegistry().get(Document.class)) + return value instanceof Document document + ? document.toJson(MongoClientSettings.getDefaultCodecRegistry().get(Document.class)) : serializeValue(value); } catch (Exception e) { - if (value instanceof Collection) { - return toString((Collection) value); - } else if (value instanceof Map) { - return toString((Map) value); + if (value instanceof Collection collection) { + return toString(collection); + } else if (value instanceof Map map) { + return toString(map); } else if (ObjectUtils.isArray(value)) { return toString(Arrays.asList(ObjectUtils.toObjectArray(value))); } - throw e instanceof JsonParseException ? (JsonParseException) e : new JsonParseException(e); + throw e instanceof JsonParseException jsonParseException ? jsonParseException : new JsonParseException(e); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/JsonToken.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/JsonToken.java index d7091c79eb..d5fa9fafec 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/JsonToken.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/JsonToken.java @@ -49,28 +49,28 @@ T getValue(final Class clazz) { try { if (Long.class == clazz) { - if (value instanceof Integer) { - return clazz.cast(((Integer) value).longValue()); - } else if (value instanceof String) { - return clazz.cast(Long.valueOf((String) value)); + if (value instanceof Integer integerValue) { + return clazz.cast(integerValue.longValue()); + } else if (value instanceof String stringValue) { + return clazz.cast(Long.valueOf(stringValue)); } } else if (Integer.class == clazz) { - if (value instanceof String) { - return clazz.cast(Integer.valueOf((String) value)); + if (value instanceof String stringValue) { + return clazz.cast(Integer.valueOf(stringValue)); } } else if (Double.class == clazz) { - if (value instanceof String) { - return clazz.cast(Double.valueOf((String) value)); + if (value instanceof String stringValue) { + return clazz.cast(Double.valueOf(stringValue)); } } else if (Decimal128.class == clazz) { - if (value instanceof Integer) { - return clazz.cast(new Decimal128((Integer) value)); - } else if (value instanceof Long) { - return clazz.cast(new Decimal128((Long) value)); - } else if (value instanceof Double) { - return clazz.cast(new BsonDouble((Double) value).decimal128Value()); - } else if (value instanceof String) { - return clazz.cast(Decimal128.parse((String) value)); + if (value instanceof Integer integerValue) { + return clazz.cast(new Decimal128(integerValue)); + } else if (value instanceof Long longValue) { + return clazz.cast(new Decimal128(longValue)); + } else if (value instanceof Double doubleValue) { + return clazz.cast(new BsonDouble(doubleValue).decimal128Value()); + } else if (value instanceof String stringValue) { + return clazz.cast(Decimal128.parse(stringValue)); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingContext.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingContext.java index c4ae9f9563..6af3abe3fe 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingContext.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingContext.java @@ -111,9 +111,8 @@ public Object evaluateExpression(String expressionString) { @Nullable public Object evaluateExpression(String expressionString, Map variables) { - if (expressionEvaluator instanceof EvaluationContextExpressionEvaluator) { - return ((EvaluationContextExpressionEvaluator) expressionEvaluator).evaluateExpression(expressionString, - variables); + if (expressionEvaluator instanceof EvaluationContextExpressionEvaluator expressionEvaluator) { + return expressionEvaluator.evaluateExpression(expressionString, variables); } return expressionEvaluator.evaluate(expressionString); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingDocumentCodec.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingDocumentCodec.java index 99837ec0b7..9fac4c7d05 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingDocumentCodec.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingDocumentCodec.java @@ -138,8 +138,8 @@ public BsonValue getDocumentId(final Document document) { } Object id = document.get(ID_FIELD_NAME); - if (id instanceof BsonValue) { - return (BsonValue) id; + if (id instanceof BsonValue bsonValue) { + return bsonValue; } BsonDocument idHoldingDocument = new BsonDocument(); @@ -210,16 +210,15 @@ public ExpressionDependencies captureExpressionDependencies(@Nullable String jso @Override public Document decode(final BsonReader reader, final DecoderContext decoderContext) { - if (reader instanceof ParameterBindingJsonReader) { - ParameterBindingJsonReader bindingReader = (ParameterBindingJsonReader) reader; + if (reader instanceof ParameterBindingJsonReader bindingReader) { // check if the reader has actually found something to replace on top level and did so. // binds just placeholder queries like: `@Query(?0)` - if (bindingReader.currentValue instanceof org.bson.Document) { - return (Document) bindingReader.currentValue; - } else if (bindingReader.currentValue instanceof String) { + if (bindingReader.currentValue instanceof org.bson.Document document) { + return document; + } else if (bindingReader.currentValue instanceof String stringValue) { try { - return decode((String) bindingReader.currentValue, new Object[0]); + return decode(stringValue, new Object[0]); } catch (JsonParseException jsonParseException) { throw new IllegalArgumentException("Expression result is not a valid json document", jsonParseException); } @@ -246,8 +245,8 @@ public Document decode(final BsonReader reader, final DecoderContext decoderCont try { Object value = readValue(reader, decoderContext); - if (value instanceof Map) { - if (!((Map) value).isEmpty()) { + if (value instanceof Map map) { + if (!map.isEmpty()) { return new Document((Map) value); } } @@ -320,9 +319,7 @@ private void writeIterable(final BsonWriter writer, final Iterable list, private Object readValue(final BsonReader reader, final DecoderContext decoderContext) { // Spring Data Customization START - if (reader instanceof ParameterBindingJsonReader) { - - ParameterBindingJsonReader bindingReader = (ParameterBindingJsonReader) reader; + if (reader instanceof ParameterBindingJsonReader bindingReader) { // check if the reader has actually found something to replace and did so. // resets the reader state to move on after the actual value @@ -334,10 +331,10 @@ private Object readValue(final BsonReader reader, final DecoderContext decoderCo if (ObjectUtils.nullSafeEquals(BsonType.DATE_TIME, bindingReader.getCurrentBsonType()) && !(value instanceof Date)) { - if (value instanceof Number) { - value = new Date(NumberUtils.convertNumberToTargetClass((Number) value, Long.class)); - } else if (value instanceof String) { - value = new Date(DateTimeFormatter.parse((String) value)); + if (value instanceof Number numberValue) { + value = new Date(NumberUtils.convertNumberToTargetClass(numberValue, Long.class)); + } else if (value instanceof String stringValue) { + value = new Date(DateTimeFormatter.parse(stringValue)); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingJsonReader.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingJsonReader.java index da6bf8cb7a..de0127c5de 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingJsonReader.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingJsonReader.java @@ -467,8 +467,8 @@ private BindableValue bindableValueFor(JsonToken token) { private static String nullSafeToString(@Nullable Object value) { - if (value instanceof Date) { - return DateTimeFormatter.format(((Date) value).getTime()); + if (value instanceof Date date) { + return DateTimeFormatter.format(date.getTime()); } return ObjectUtils.nullSafeToString(value); @@ -1316,10 +1316,10 @@ private long visitDateTimeExtendedJson() { // Spring Data Customization START Object dt = bindableValueFor(valueToken).getValue(); - if (dt instanceof Date) { - value = ((Date) dt).getTime(); - } else if (dt instanceof Number) { - value = NumberUtils.convertNumberToTargetClass((Number) dt, Long.class); + if (dt instanceof Date date) { + value = date.getTime(); + } else if (dt instanceof Number numberValue) { + value = NumberUtils.convertNumberToTargetClass(numberValue, Long.class); } else { try { value = DateTimeFormatter.parse(dt.toString()); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java index ad6b5135ce..589107ec13 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java @@ -1586,11 +1586,11 @@ void shouldUseTargetObjectOfLazyLoadingProxyWhenWriting() { @Test // DATAMONGO-1034 void rejectsBasicDbListToBeConvertedIntoComplexType() { - List inner = new ArrayList(); + List inner = new ArrayList<>(); inner.add("key"); inner.add("value"); - List outer = new ArrayList(); + List outer = new ArrayList<>(); outer.add(inner); outer.add(inner);