final String entityContainerName = percentDecode(matcher.group(1));
final String segmentName = percentDecode(matcher.group(2));
final String keyPredicate = matcher.group(3);
final String emptyParentheses = matcher.group(4);
final EdmEntityContainer entityContainer =
entityContainerName == null ? edm.getDefaultEntityContainer() : edm.getEntityContainer(entityContainerName);
if (entityContainer == null) {
throw new UriNotMatchingException(UriNotMatchingException.CONTAINERNOTFOUND.addContent(entityContainerName));
}
uriResult.setEntityContainer(entityContainer);
final EdmEntitySet entitySet = entityContainer.getEntitySet(segmentName);
if (entitySet != null) {
uriResult.setStartEntitySet(entitySet);
handleEntitySet(entitySet, keyPredicate);
} else {
final EdmFunctionImport functionImport = entityContainer.getFunctionImport(segmentName);
if (functionImport == null) {
throw new UriNotMatchingException(UriNotMatchingException.NOTFOUND.addContent(segmentName));
}
uriResult.setFunctionImport(functionImport);
handleFunctionImport(functionImport, emptyParentheses, keyPredicate);