RepositoryAccess accessor = engine.getRepositoryAccess();
Object session = engine.getSession();
// TODO consider other property types
List<CMSObject> referencedNodes = new ArrayList<CMSObject>();
PropType type = prop.getDefinition().getPropertyType();
if (type.equals(PropType.REFERENCE)) {
// Resolve references
// TODO need a better value representation than string
// For example reference types may be resolved an put as an
// objecttype
for (String value : prop.getValue()) {
try {
referencedNodes.addAll(accessor.getNodeById(value, session));
} catch (RepositoryAccessException e) {
logger.warn("Error resolving reference value {}", value, e);
}
}
} else if (type.equals(PropType.NAME)) {
for (String name : prop.getValue()) {
try {
referencedNodes.addAll(accessor.getNodeByName(name, session));
} catch (Exception e) {
logger.warn("Error at getting name nodes.", e);
}
}
} else if (type.equals(PropType.PATH)) {
for (String value : prop.getValue()) {
try {
referencedNodes.addAll(accessor.getNodeByPath(value, session));
} catch (RepositoryAccessException e) {
logger.warn("Error at getting node by path ", e);