@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;
  }
Ejemplo n.º 2
0
  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;
    }
  }