Merge pull request #5 from mzasada/DATACOUCH-27

DATACOUCH-27: Mapping @Id field with MappingCouchbaseConverter
This commit is contained in:
Michael Nitschinger
2013-10-10 03:08:29 -07:00
4 changed files with 20 additions and 9 deletions

4
.gitignore vendored
View File

@@ -3,7 +3,7 @@ target/
.classpath
.project
.settings/*
.settings
*.iml
.idea/*
.idea

View File

@@ -82,7 +82,7 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter
protected <R> R read(TypeInformation<R> type, CouchbaseDocument doc) {
return read(type, doc, null);
}
protected <R> R read(TypeInformation<R> type, final CouchbaseDocument source, Object parent) {
if (source == null) {
@@ -118,13 +118,17 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter
entity.doWithProperties(new PropertyHandler<CouchbasePersistentProperty>() {
public void doWithPersistentProperty(final CouchbasePersistentProperty prop) {
if (!source.containsKey(prop.getFieldName()) || entity.isConstructorArgument(prop)) {
if (!doesPropertyExistInSource(prop) || entity.isConstructorArgument(prop)) {
return;
}
Object obj = prop.isIdProperty() ? source.getId() : getValueInternal(prop, source, evaluator, result);
wrapper.setProperty(prop, obj, useFieldAccessOnly);
}
private boolean doesPropertyExistInSource(CouchbasePersistentProperty property) {
return property.isIdProperty() || source.containsKey(property.getFieldName());
}
});
entity.doWithAssociations(new AssociationHandler<CouchbasePersistentProperty>() {
@@ -201,7 +205,6 @@ public class MappingCouchbaseConverter extends AbstractCouchbaseConverter
return target.isAssignableFrom(value.getClass()) ? value : conversionService.convert(value, target);
}
@Override
public void write(final Object source, final CouchbaseDocument target) {
if (source == null) {

View File

@@ -90,5 +90,8 @@ public class BasicCouchbasePersistentPropertyTests {
String description;
public String getId() {
return id;
}
}
}

View File

@@ -69,7 +69,6 @@ public class MappingCouchbaseConverterTests {
new CouchbaseDocument());
}
@Test
public void writesString() {
CouchbaseDocument converted = new CouchbaseDocument();
@@ -94,7 +93,6 @@ public class MappingCouchbaseConverterTests {
assertEquals("foobar", converted.attr0);
}
@Test
public void writesNumber() {
CouchbaseDocument converted = new CouchbaseDocument();
@@ -119,7 +117,6 @@ public class MappingCouchbaseConverterTests {
assertEquals(42, converted.attr0);
}
@Test
public void writesBoolean() {
CouchbaseDocument converted = new CouchbaseDocument();
@@ -176,6 +173,15 @@ public class MappingCouchbaseConverterTests {
assertTrue(converted.attr3);
}
@Test
public void readsID() {
CouchbaseDocument document = new CouchbaseDocument("001");
BasicCouchbasePersistentPropertyTests.Beer beer = converter.read(BasicCouchbasePersistentPropertyTests.Beer.class,
document);
assertEquals("001", beer.getId());
}
@Test
public void writesUninitializedValues() {
@@ -336,7 +342,6 @@ public class MappingCouchbaseConverterTests {
assertEquals(attr2, readConverted.attr2);
}
@Test
public void writesAndReadsValueClass() {
CouchbaseDocument converted = new CouchbaseDocument();