Skip to content

Commit 2e5a20b

Browse files
authored
Merge pull request jbake-org#757 from jonbullock/fix/747-orientdb-otrackedmap
Resolves jbake-org#747 - OTrackedMap returned for contents of data file
2 parents 4d5cd56 + 3fdfd65 commit 2e5a20b

3 files changed

Lines changed: 45 additions & 12 deletions

File tree

jbake-core/src/main/java/org/jbake/app/ContentStore.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,8 @@
3232
import com.orientechnologies.orient.core.metadata.schema.OClass;
3333
import com.orientechnologies.orient.core.metadata.schema.OSchema;
3434
import com.orientechnologies.orient.core.metadata.schema.OType;
35-
import com.orientechnologies.orient.core.record.impl.ODocument;
35+
import com.orientechnologies.orient.core.record.OElement;
3636
import com.orientechnologies.orient.core.sql.executor.OResultSet;
37-
import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery;
38-
import org.jbake.launcher.SystemExit;
3937
import org.jbake.model.DocumentModel;
4038
import org.jbake.model.DocumentTypes;
4139
import org.jbake.model.ModelAttributes;
@@ -408,9 +406,9 @@ public boolean isActive() {
408406
}
409407

410408
public void addDocument(DocumentModel document) {
411-
ODocument doc = new ODocument(Schema.DOCUMENTS);
412-
doc.fromMap(document);
413-
doc.save();
409+
OElement element = db.newElement(Schema.DOCUMENTS);
410+
document.forEach((k, v) -> element.setProperty(k, v, OType.ANY));
411+
element.save();
414412
}
415413

416414
protected abstract class Schema {

jbake-core/src/test/java/org/jbake/app/CrawlerTest.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.jbake.app;
22

3+
import com.orientechnologies.orient.core.db.record.OTrackedMap;
34
import org.apache.commons.io.FilenameUtils;
45
import org.hamcrest.BaseMatcher;
56
import org.hamcrest.Description;
@@ -12,6 +13,8 @@
1213
import org.junit.BeforeClass;
1314
import org.junit.Test;
1415

16+
import java.util.HashMap;
17+
import java.util.LinkedHashMap;
1518
import java.util.Map;
1619

1720
import static org.assertj.core.api.Assertions.assertThat;
@@ -59,12 +62,21 @@ public void crawlDataFiles() {
5962
DocumentTypes.addDocumentType(config.getDataFileDocType());
6063
db.updateSchema();
6164
crawler.crawlDataFiles();
62-
Assert.assertEquals(1, db.getDocumentCount("data"));
63-
64-
DataFileUtil util = new DataFileUtil(db, "data");
65-
Map<String, Object> data = util.get("videos.yaml");
66-
Assert.assertFalse(data.isEmpty());
67-
Assert.assertNotNull(data.get("data"));
65+
Assert.assertEquals(2, db.getDocumentCount("data"));
66+
67+
DataFileUtil dataFileUtil = new DataFileUtil(db, "data");
68+
Map<String, Object> videos = dataFileUtil.get("videos.yaml");
69+
Assert.assertFalse(videos.isEmpty());
70+
Assert.assertNotNull(videos.get("data"));
71+
72+
// regression test for issue 747
73+
Map<String, Object> authorsFileContents = dataFileUtil.get("authors.yaml");
74+
Assert.assertFalse(authorsFileContents.isEmpty());
75+
Object authorsList = authorsFileContents.get("authors");
76+
assertThat(authorsList).isNotInstanceOf(OTrackedMap.class);
77+
assertThat(authorsList).isInstanceOf(LinkedHashMap.class);
78+
LinkedHashMap<String, Map<String, Object>> authors = (LinkedHashMap<String, Map<String, Object>>) authorsList;
79+
assertThat(authors.get("Joe Bloggs").get("last_name")).isEqualTo("Bloggs");
6880
}
6981

7082
@Test
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
authors:
2+
3+
John Smith:
4+
first_name: John
5+
last_name: Smith
6+
twitter: "@jsmith"
7+
facebook: "https://www.facebook.com/jsmith"
8+
9+
Jane Smith:
10+
first_name: Jane
11+
last_name: Smith
12+
twitter: "@janesmith"
13+
14+
Joe Bloggs:
15+
first_name: Joe
16+
last_name: Bloggs
17+
twitter: "@jblogs"
18+
19+
Tom Harry:
20+
first_name: Tom
21+
last_name: Harry
22+
twitter: "@tharry"
23+
facebook: "https://www.facebook.com/tharry"

0 commit comments

Comments
 (0)