Skip to content

Commit

Permalink
Merge pull request #45 from kaiso/B#44
Browse files Browse the repository at this point in the history
[B#44] E11000 duplicate key error collection
  • Loading branch information
kaiso authored Nov 24, 2019
2 parents d1cdd9e + 18c294a commit 042f8e4
Show file tree
Hide file tree
Showing 19 changed files with 481 additions and 313 deletions.
31 changes: 10 additions & 21 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<groupId>io.github.kaiso.relmongo</groupId>
<artifactId>relmongo</artifactId>
<version>3.0.1</version>
<version>3.1.0</version>
<packaging>jar</packaging>

<name>relmongo</name>
Expand All @@ -18,9 +18,9 @@
<maven.compiler.target>1.8</maven.compiler.target>
<maven.plugin.source.version>3.0.1</maven.plugin.source.version>
<maven.plugin.javadoc.version>3.0.1</maven.plugin.javadoc.version>
<spring.data.version>2.1.8.RELEASE</spring.data.version>
<spring.version>5.1.7.RELEASE</spring.version>
<mongo.driver.version>3.9.1</mongo.driver.version>
<spring.data.version>2.2.1.RELEASE</spring.data.version>
<spring.version>5.2.1.RELEASE</spring.version>
<mongo.driver.version>3.11.2</mongo.driver.version>
<junit.jupiter.version>5.4.1</junit.jupiter.version>
<junit.platform.version>1.4.2</junit.platform.version>
</properties>
Expand Down Expand Up @@ -61,42 +61,31 @@
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<exclusions>
<exclusion>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
</exclusion>
</exclusions>
<version>${spring.data.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>${mongo.driver.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>${mongo.driver.version}</version>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-async</artifactId>
<version>${mongo.driver.version}</version>
</dependency>


<!-- test dependencies -->
<dependency>
<groupId>org.junit.jupiter</groupId>
Expand All @@ -115,7 +104,7 @@
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<version>2.1.1</version>
<version>2.2.0</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

package io.github.kaiso.relmongo.annotation;

import org.springframework.data.annotation.Reference;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
Expand All @@ -30,6 +32,7 @@
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Reference
public @interface ManyToOne {
/**
* (Optional) Whether the association should be lazily loaded or must be eagerly
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

package io.github.kaiso.relmongo.annotation;

import org.springframework.data.annotation.Reference;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
Expand All @@ -30,6 +32,7 @@
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Reference
public @interface OneToMany {

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

package io.github.kaiso.relmongo.annotation;

import org.springframework.data.annotation.Reference;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
Expand All @@ -30,6 +32,7 @@
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Reference
public @interface OneToOne {
/**
* (Optional) Whether the association should be lazily loaded or must be eagerly
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,19 @@

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.MongoOperations;

/**
*
* @author Kais OMRI
* @author Kais OMRI (kaiso)
*
*/
@Configuration
public class PersistenceConfiguration {

@Bean
public RelMongoProcessor mongoEventListener() {
return new RelMongoProcessor();
public RelMongoProcessor mongoEventListener(MongoOperations mongoOperations) {
return new RelMongoProcessor(mongoOperations);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import io.github.kaiso.relmongo.model.LoadableObjectsMetadata;
import io.github.kaiso.relmongo.mongo.PersistentRelationResolver;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.event.AbstractMongoEventListener;
Expand All @@ -46,8 +45,12 @@
*/
public class RelMongoProcessor extends AbstractMongoEventListener<Object> {

@Autowired
private MongoOperations mongoOperations;

public RelMongoProcessor(MongoOperations mongoOperations) {
super();
this.mongoOperations = mongoOperations;
}

@Override
public void onAfterLoad(AfterLoadEvent<Object> event) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,9 @@ public static <T> Collection<T> findByIds(MongoOperations mongoOperations, Class
}

public static <T> T findByPropertyValue(MongoOperations mongoOperations, Class<T> clazz, String propertyName, Object value) {
Query query = new Query();
query.addCriteria(Criteria.where(propertyName).is(value));
return mongoOperations.findOne(query, clazz);
BasicDBObject query = new BasicDBObject(propertyName, new BasicDBObject("$eq", value));
FindIterable<Document> result = mongoOperations.getCollection(mongoOperations.getCollectionName(clazz)).find(query).limit(1);
return result.iterator().hasNext() ? mongoOperations.getConverter().read(clazz,result.iterator().next()) : null;
}

public static void saveObjects(MongoOperations mongoOperations, Object obj) {
Expand Down
Loading

0 comments on commit 042f8e4

Please sign in to comment.