Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spring data mongodb 2 2 6 support #7

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 20 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -5,14 +5,14 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
<version>2.2.6.RELEASE</version>
<relativePath />
<!-- lookup parent from repository -->
</parent>

<groupId>com.arhs-group</groupId>
<artifactId>spring-cache-mongodb</artifactId>
<version>1.0.2-SNAPSHOT</version>
<version>1.0.3-SNAPSHOT</version>

<name>MongoDB for Spring Cache</name>
<description>Spring Cache implementation based on MongoDB</description>
@@ -86,7 +86,7 @@
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.9.1.RELEASE</version>
<version>2.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
@@ -98,11 +98,21 @@
<artifactId>embedmongo-spring</artifactId>
<version>1.3.0</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.process</artifactId>
</exclusion>
<exclusion>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<version>1.46.1</version>
<version>2.2.0</version>
<scope>test</scope>
</dependency>
</dependencies>
@@ -120,6 +130,10 @@
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
@@ -143,7 +157,7 @@
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.7.201606060606</version>
<version>0.8.5</version>
<executions>
<execution>
<id>prepare-agent</id>
@@ -161,7 +175,7 @@
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<version>1.6.8</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
19 changes: 10 additions & 9 deletions src/main/java/com/arhs/spring/cache/mongo/MongoCache.java
Original file line number Diff line number Diff line change
@@ -24,29 +24,29 @@
package com.arhs.spring.cache.mongo;

import com.arhs.spring.cache.mongo.domain.CacheDocument;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import org.mockito.internal.matchers.Null;
import com.mongodb.client.ListIndexesIterable;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cache.Cache;
import org.springframework.cache.support.SimpleValueWrapper;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.IndexOperations;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.index.Index;
import org.springframework.data.mongodb.core.index.IndexOperations;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.CriteriaDefinition;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.util.Assert;

import java.io.*;
import java.util.Base64;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
import java.util.stream.StreamSupport;

/**
* Spring {@link org.springframework.cache.Cache} adapter implementation
@@ -330,15 +330,16 @@ private Index createExpireIndex() {

private void updateExpireIndex(Index newExpireIndex) {
final IndexOperations indexOperations = mongoTemplate.indexOps(collectionName);
final DBCollection collection = mongoTemplate.getCollection(collectionName);
final List<DBObject> indexes = collection.getIndexInfo();
final MongoCollection collection = mongoTemplate.getCollection(collectionName);
final ListIndexesIterable<Document> indexes = collection.listIndexes();

final Optional<DBObject> expireOptional = indexes.stream()
final Optional<Document> expireOptional =
StreamSupport.stream(indexes.spliterator(), false)
.filter(index -> INDEX_NAME.equals(index.get("name")))
.findFirst();

if (expireOptional.isPresent()) {
final DBObject expire = expireOptional.get();
final Document expire = expireOptional.get();
final long ttl = (long) expire.get("expireAfterSeconds");

if (ttl != this.ttl) {
22 changes: 17 additions & 5 deletions src/test/java/com/arhs/spring/cache/mongo/TestConfiguration.java
Original file line number Diff line number Diff line change
@@ -23,15 +23,19 @@
*/
package com.arhs.spring.cache.mongo;

import com.mongodb.MongoClient;
import com.mongodb.MongoClientSettings;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import cz.jirutka.spring.embedmongo.EmbeddedMongoBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
import org.springframework.data.mongodb.core.SimpleMongoClientDbFactory;

import java.io.IOException;
import java.net.ServerSocket;
import java.util.Arrays;

/**
* Spring Configuration for basic integration tests.
@@ -43,7 +47,6 @@ public class TestConfiguration {

private static final String DATABASE_NAME = "test";
private static final String IP_ADDRESS = "127.0.0.1";
private static final String VERSION = "2.4.5";

/**
* Gets a {@link MongoTemplate} instance.
@@ -54,8 +57,9 @@ public class TestConfiguration {
@Bean
public MongoTemplate mongoTemplate() throws IOException {
final int port = allocateRandomPort();
final MongoClient mongoClient = new EmbeddedMongoBuilder().version(VERSION).bindIp(IP_ADDRESS).port(port).build();
final SimpleMongoDbFactory simpleMongoDbFactory = new SimpleMongoDbFactory(mongoClient, DATABASE_NAME);
new EmbeddedMongoBuilder().bindIp(IP_ADDRESS).port(port).build();
final MongoClient mongoClient = createMongoClientForPort(port);
final SimpleMongoClientDbFactory simpleMongoDbFactory = new SimpleMongoClientDbFactory(mongoClient, DATABASE_NAME);

return new MongoTemplate(simpleMongoDbFactory);
}
@@ -72,4 +76,12 @@ private static int allocateRandomPort() {
}
}

private static MongoClient createMongoClientForPort(int port) {
return MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(
new ServerAddress(IP_ADDRESS, port))))
.build());
}
}
4 changes: 2 additions & 2 deletions src/test/java/com/arhs/spring/cache/mongo/UnitTestBase.java
Original file line number Diff line number Diff line change
@@ -25,7 +25,7 @@

import org.junit.After;
import org.junit.Assert;
import org.springframework.boot.test.util.EnvironmentTestUtils;
import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
@@ -54,7 +54,7 @@ protected AnnotationConfigApplicationContext load(Class<?>[] configs, String...
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();

// Adds environment.
EnvironmentTestUtils.addEnvironment(applicationContext, environment);
TestPropertyValues.of(environment).applyTo(applicationContext);

// Registers the configuration class and auto-configuration classes.
applicationContext.register(TestConfiguration.class);