Java tutorial
/* * Copyright 2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package io.github.carlomicieli.springbooks.test; import org.junit.ClassRule; import org.junit.Rule; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.convert.ConversionService; import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mapping.model.BeanWrapper; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity; import org.springframework.data.mongodb.core.mapping.MongoPersistentProperty; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.lordofthejars.nosqlunit.mongodb.InMemoryMongoDb; import com.lordofthejars.nosqlunit.mongodb.MongoDbRule; import static com.lordofthejars.nosqlunit.mongodb.InMemoryMongoDb.InMemoryMongoRuleBuilder.newInMemoryMongoDbRule; import static com.lordofthejars.nosqlunit.mongodb.MongoDbRule.MongoDbRuleBuilder.newMongoDbRule; /** * @author Carlo Micieli */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = TestConfig.class) public abstract class AbstractMongoDbTests { @ClassRule public static InMemoryMongoDb inMemoryMongoDb = newInMemoryMongoDbRule().build(); @Rule public MongoDbRule mongoDbRule = newMongoDbRule().defaultSpringMongoDb(TestConfig.TEST_DATABASE); @Autowired protected MongoTemplate mongoTemplate; protected void ensureDocumentId(Object savedObject, Object id) { ConversionService conversionService = mongoTemplate.getConverter().getConversionService(); MappingContext<? extends MongoPersistentEntity<?>, MongoPersistentProperty> mappingContext = mongoTemplate .getConverter().getMappingContext(); MongoPersistentEntity<?> persistentEntity = mappingContext.getPersistentEntity(savedObject.getClass()); MongoPersistentProperty idProp = persistentEntity == null ? null : persistentEntity.getIdProperty(); if (idProp == null) { return; } BeanWrapper<PersistentEntity<Object, ?>, Object> wrapper = BeanWrapper.create(savedObject, conversionService); Object idValue = wrapper.getProperty(idProp, idProp.getType(), true); if (idValue != null) { return; } wrapper.setProperty(idProp, id); } }