@SuppressWarnings("unchecked") private void addSearchResult(IEntity entity, ISearchField projectField) { String fieldName = projectField.getFieldName(); if (isRelationshipField(projectField)) { // CMS-3430 : treat a projection of relationship field as // project on the reference oid List<IEntity> projectFieldValues = (List<IEntity>) entity.getFieldValues(fieldName); for (IEntity e : projectFieldValues) { rootProjections.add(e.getId()); } } else { rootProjections.addAll(projectField.getSearchValue(entity)); } }
@Override @SuppressWarnings("unchecked") public void processReference(IEntity currentEntity, MetaRelationship metaRelationship) { ParseQueryNode oldPrevQueryNode = prevQueryNode; ParseQueryNode oldCurrQueryNode = currQueryNode; String relationName = metaRelationship.getName(); List<ParseQueryNode> nextNodes = currQueryNode.getNextQueryNode(metaRelationship); for (ParseQueryNode nextNode : nextNodes) { prevQueryNode = currQueryNode; currQueryNode = nextNode; List<IEntity> relationEntityList = (List<IEntity>) currentEntity.getFieldValues(relationName); for (IEntity entity : relationEntityList) { entity.traverse(this); } prevQueryNode = oldPrevQueryNode; currQueryNode = oldCurrQueryNode; } }