@Override protected StorageItem doRetrieveItem(ResourceStoreRequest request) throws IllegalOperationException, ItemNotFoundException, StorageException { StorageItem result = super.doRetrieveItem(request); List<String> wf = getWelcomeFiles(); boolean useWelcomeFiles = !request.getRequestContext().containsKey(WebSiteRepository.USE_WELCOME_FILES_KEY) || Boolean.TRUE.equals( request.getRequestContext().get(WebSiteRepository.USE_WELCOME_FILES_KEY)); if (useWelcomeFiles && result instanceof StorageCollectionItem && wf.size() > 0) { // it is a collection, check for one of the "welcome" files Collection<StorageItem> collItems = list(false, (StorageCollectionItem) result); for (StorageItem item : collItems) { if (item instanceof StorageFileItem && wf.contains(item.getName())) { // it is a file, it's name is in welcomeFiles list, so return it instead parent collection return item; } } } return result; }
protected StorageItem mangle( boolean isList, ResourceStoreRequest request, RequestRoute route, StorageItem item) throws AccessDeniedException, ItemNotFoundException, IllegalOperationException, StorageException { if (isList) { ((AbstractStorageItem) item) .setPath(ItemPathUtils.concatPaths(route.getOriginalRequestPath(), item.getName())); } else { ((AbstractStorageItem) item).setPath(route.getOriginalRequestPath()); } if (isFollowLinks() && item instanceof StorageLinkItem) { return dereferenceLink((StorageLinkItem) item); } else { return item; } }