All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.lordofthejars.nosqlunit.mongodb.SpringMongoDbRule Maven / Gradle / Ivy

There is a newer version: 1.0.0
Show newest version
package com.lordofthejars.nosqlunit.mongodb;

import static ch.lambdaj.collection.LambdaCollections.with;
import static org.hamcrest.CoreMatchers.anything;

import com.lordofthejars.nosqlunit.util.SpringUtils;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.Statement;
import org.springframework.context.ApplicationContext;

import com.lordofthejars.nosqlunit.core.PropertyGetter;
import com.mongodb.Mongo;

public class SpringMongoDbRule extends MongoDbRule {

	private PropertyGetter propertyGetter = new PropertyGetter();

	private MongoDbConfiguration mongoDbConfiguration;
	
	public SpringMongoDbRule(MongoDbConfiguration mongoDbConfiguration) {
		super(mongoDbConfiguration);
		this.mongoDbConfiguration = mongoDbConfiguration;
	}

	public SpringMongoDbRule(MongoDbConfiguration mongoDbConfiguration, Object object) {
		super(mongoDbConfiguration, object);
		this.mongoDbConfiguration = mongoDbConfiguration;
	}
	
	@Override
	public Statement apply(Statement base, FrameworkMethod method, Object testObject) {
		this.databaseOperation = new MongoOperation(definedMongo(testObject), this.mongoDbConfiguration);
		return super.apply(base, method, testObject);
	}
	
	private Mongo definedMongo(Object testObject)
	{
		ApplicationContext applicationContext = propertyGetter.propertyByType(testObject, ApplicationContext.class);

		Mongo mongo = SpringUtils.getBeanOfType(applicationContext, Mongo.class);

		if (mongo == null) {
			throw new IllegalArgumentException(
					"At least one Mongo instance should be defined into Spring Application Context.");
		}
		return mongo;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy