Skip to content

Commit c951809

Browse files
author
Burak Serdar
committed
Fix #599: allow default versions in references
1 parent 282643b commit c951809

File tree

4 files changed

+28
-3
lines changed

4 files changed

+28
-3
lines changed

crud/src/test/java/com/redhat/lightblue/mediator/CompositeFinderTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,21 @@ public void retrieveAandBonly() throws Exception {
244244
Assert.assertEquals("A", qplan.getSources()[0].getMetadata().getName());
245245
}
246246

247+
@Test
248+
public void retrieveAandBonly_defaultVersion() throws Exception {
249+
FindRequest fr = new FindRequest();
250+
fr.setQuery(query("{'field':'_id','op':'=','rvalue':'A01'}"));
251+
fr.setProjection(projection("[{'field':'*','recursive':1},{'field':'b'}]"));
252+
fr.setEntityVersion(new EntityVersion("A_def", "1.0.0"));
253+
Response response = mediator.find(fr);
254+
Assert.assertEquals(1, response.getEntityData().size());
255+
Assert.assertEquals("A01", response.getEntityData().get(0).get("_id").asText());
256+
QueryPlan qplan = (QueryPlan) getLastContext(mediator).getProperty(Mediator.CTX_QPLAN);
257+
// This one must have A -> B
258+
Assert.assertEquals(1, qplan.getSources().length);
259+
Assert.assertEquals("A_def", qplan.getSources()[0].getMetadata().getName());
260+
}
261+
247262
@Test
248263
public void retrieveAandBonly_manyA() throws Exception {
249264
FindRequest fr = new FindRequest();

crud/src/test/resources/composite/B.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"backend":"mongo",
66
"datasource": "mongodata",
77
"collection": "user"
8-
}
8+
},
9+
"defaultVersion":"1.0.0"
910
},
1011
"schema" : {
1112
"name" : "B",

metadata/src/main/java/com/redhat/lightblue/metadata/parser/MetadataParser.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -873,7 +873,7 @@ private ReferenceField parseReferenceField(String name,
873873
T object) {
874874
ReferenceField field = new ReferenceField(name);
875875
field.setEntityName(getRequiredStringProperty(object, STR_ENTITY));
876-
field.setVersionValue(getRequiredStringProperty(object, STR_VERSION_VALUE));
876+
field.setVersionValue(getStringProperty(object, STR_VERSION_VALUE));
877877
field.setProjection(getProjection(object, STR_PROJECTION));
878878
field.setQuery(getQuery(object, STR_QUERY));
879879
field.setSort(getSort(object, STR_SORT));
@@ -1493,7 +1493,8 @@ private void convertArrayField(ArrayField field, T fieldObject) {
14931493

14941494
private void convertReferenceField(ReferenceField field, T fieldObject) {
14951495
putString(fieldObject, STR_ENTITY, field.getEntityName());
1496-
putString(fieldObject, STR_VERSION_VALUE, field.getVersionValue());
1496+
if(field.getVersionValue()!=null)
1497+
putString(fieldObject, STR_VERSION_VALUE, field.getVersionValue());
14971498
if (field.getProjection() != null) {
14981499
putProjection(fieldObject, STR_PROJECTION, field.getProjection());
14991500
}

metadata/src/test/java/com/redhat/lightblue/metadata/CompositeMetadataTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,4 +291,12 @@ public void fieldResolutionTest() throws Exception {
291291
Assert.assertTrue(field == a.resolve(new Path("obj1.c.*._id")));
292292
Assert.assertEquals("obj1.c.*._id", field.getFullPath().toString());
293293
}
294+
295+
@Test
296+
public void defaultVersionInRefTest() throws Exception {
297+
EntityMetadata md=getMd("composite/A_def.json");
298+
CompositeMetadata a = CompositeMetadata.buildCompositeMetadata(md, new SimpleGMD());
299+
ResolvedReferenceField ref = (ResolvedReferenceField) a.resolve(new Path("obj1.c"));
300+
Assert.assertNotNull(ref);
301+
}
294302
}

0 commit comments

Comments
 (0)