public function findSingle(Criterion $filter, array $languageFilter = array())
{
if (!isset($languageFilter['languages'])) {
$languageFilter['languages'] = array();
}
if (!isset($languageFilter['useAlwaysAvailable'])) {
$languageFilter['useAlwaysAvailable'] = true;
}
$searchQuery = new Query();
$searchQuery->filter = $filter;
$searchQuery->query = new Criterion\MatchAll();
$searchQuery->offset = 0;
$searchQuery->limit = 2;
// Because we optimize away the count query below
$searchQuery->performCount = true;
$searchQuery->sortClauses = null;
$result = $this->findContent($searchQuery, $languageFilter);
if (empty($result->searchHits)) {
throw new NotFoundException('Content', 'findSingle() found no content for given $criterion');
} elseif (isset($result->searchHits[1])) {
throw new InvalidArgumentException('totalCount', 'findSingle() found more then one item for given $criterion');
}
$first = reset($result->searchHits);
return $first->valueObject;
}