Access vocabulary from Java
Is there any way of accessing a vocabulary via Java code?
2 votes
1 answers
4366 views
You need to use a Session (org.nuxeo.ecm.directory.Session) connected to the SQL repository which contains all directories and the DirectoryService (org.nuxeo.ecm.directory.api.DirectoryService).
This is a snippet of my code to create a new directory entry :
DirectoryService dirService = DirectoryHelper.getDirectoryService();
if (dirService == null) {
return;
}
DocumentModel entry = null;
Session dirSession = null;
int id;
try {
dirSession = dirService.open(<VOCABULARY_ID>);
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", "1");
map.put("label", "label.country.france");
map.put("obsolete", "0");
map.put("ordering", "0");
entry = dirSession.createEntry(map);
} finally {
if (entry == null) {
dirSession.close();
throw new ApplicationException("Can't add reference to the directory <VOCABULARY_ID>");
} else {
dirSession.commit();
dirSession.close();
}
}
Just take care to close (or commit) the Session correctly.