Merge pull request #5 from mzasada/DATACOUCH-27
DATACOUCH-27: Mapping @Id field with MappingCouchbaseConverter
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -3,7 +3,7 @@ target/
|
||||
|
||||
.classpath
|
||||
.project
|
||||
.settings/*
|
||||
.settings
|
||||
|
||||
*.iml
|
||||
.idea/*
|
||||
.idea
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -90,5 +90,8 @@ public class BasicCouchbasePersistentPropertyTests {
|
||||
|
||||
String description;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user