Coverage Report - org.webslinger.commons.vfs.operations.RealFileOperationProvider
 
Classes in this File Line Coverage Branch Coverage Complexity
RealFileOperationProvider
81%
17/21
71%
5/7
0
 
 1  
 package org.webslinger.commons.vfs.operations;
 2  
 
 3  
 import java.util.Collection;
 4  
 
 5  
 import org.apache.commons.vfs.FileObject;
 6  
 import org.apache.commons.vfs.FileSystemException;
 7  
 import org.apache.commons.vfs.FileSystemManager;
 8  
 import org.apache.commons.vfs.operations.FileOperation;
 9  
 import org.apache.commons.vfs.operations.FileOperationProvider;
 10  
 
 11  
 public abstract class RealFileOperationProvider<T extends FileObject> implements FileOperationProvider {
 12  
     protected final Class<T> fileClass;
 13  
 
 14  235
     protected RealFileOperationProvider(Class<T> fileClass) {
 15  235
         this.fileClass = fileClass;
 16  235
     }
 17  
 
 18  
     public void collectOperations(Collection operationsList, FileObject file) throws FileSystemException {
 19  224
         collectRealOperations((Collection<Class<? extends FileOperation>>) operationsList, fileClass.cast(file));
 20  224
     }
 21  
 
 22  
     public FileOperation getOperation(FileObject file, Class operationClass) throws FileSystemException {
 23  207
         return getRealOperation(fileClass.cast(file), operationClass.asSubclass(FileOperation.class));
 24  
     }
 25  
 
 26  
     protected void collectOperationsWorker(Collection<Class<? extends FileOperation>> operationsList, FileObject file) throws FileSystemException {
 27  224
         if (file == null) return;
 28  192
         String scheme = file.getURL().getProtocol();
 29  192
         FileOperationProvider[] providers = file.getFileSystem().getFileSystemManager().getOperationProviders(scheme);
 30  192
         if (providers == null) return;
 31  28
         for (FileOperationProvider provider: providers) {
 32  14
             provider.collectOperations(operationsList, file);
 33  
         }
 34  14
     }
 35  
 
 36  
     protected FileOperation getOperationWorker(FileObject file, Class<? extends FileOperation> operationClass) throws FileSystemException {
 37  1
         if (file == null) return null;
 38  1
         String scheme = file.getURL().getProtocol();
 39  1
         FileOperationProvider[] providers = file.getFileSystem().getFileSystemManager().getOperationProviders(scheme);
 40  1
         if (providers == null) return null;
 41  0
         for (FileOperationProvider provider: providers) {
 42  0
             FileOperation operation = provider.getOperation(file, operationClass);
 43  0
             if (operation != null) return operation;
 44  
         }
 45  0
         return null;
 46  
     }
 47  
 
 48  
     protected abstract void collectRealOperations(Collection<Class<? extends FileOperation>> operationsList, T file) throws FileSystemException;
 49  
     protected abstract FileOperation getRealOperation(T file, Class<? extends FileOperation> operationClass) throws FileSystemException;
 50  
 }