package com.intridea.io.vfs.provider.s3.acl; import java.util.Collection; import org.apache.commons.vfs.FileObject; import org.apache.commons.vfs.FileSystemException; import org.apache.commons.vfs.operations.FileOperation; import com.intridea.io.vfs.operations.acl.IAclGetter; import com.intridea.io.vfs.operations.acl.IAclSetter; import com.intridea.io.vfs.provider.s3.S3FileObject; public class AclOperationsProvider implements org.apache.commons.vfs.operations.FileOperationProvider { @SuppressWarnings("unchecked") public void collectOperations(Collection operationsList, FileObject file) throws FileSystemException { if (file instanceof S3FileObject) { operationsList.add(AclGetter.class); operationsList.add(AclSetter.class); } } /** * Depending on operationClass return getter/setter for file access control list. */ public FileOperation getOperation(FileObject file, @SuppressWarnings("unchecked") Class operationClass) throws FileSystemException { if (file instanceof S3FileObject) { if (operationClass.equals(IAclGetter.class)) { // getter return new AclGetter((S3FileObject)file); } else if (operationClass.equals(IAclSetter.class)) { // setter return new AclSetter((S3FileObject)file); } } throw new FileSystemException(String.format("Operation %s is not provided for file %s", operationClass.getName(), file.getName())); } }