Author: bfoster
Date: Wed Jun  1 20:00:03 2011
New Revision: 1130280

URL: http://svn.apache.org/viewvc?rev=1130280&view=rev
Log:

- improved unit-tests and documentation

------------
OODT-194

Added:
    oodt/branches/protocol/protocol-api/src/main/bin/
    oodt/branches/protocol/protocol-api/src/main/bin/protocol
    
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/
    
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/MockProtocolAction.java
   (with props)
    
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestBasicVerifyAction.java
   (with props)
    
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestDownloadAction.java
   (with props)
    
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestProtocolAction.java
   (with props)
Modified:
    
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/action/BasicVerifyAction.java
    
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/action/DownloadAction.java
    
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/auth/Authentication.java
    
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/auth/BasicAuthentication.java
    
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/auth/NoAuthentication.java
    
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/config/ProtocolConfig.java
    
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/config/SpringProtocolConfig.java
    
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/system/ProtocolManager.java
    
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/verify/BasicProtocolVerifier.java
    
oodt/branches/protocol/protocol-api/src/main/resources/policy/protocol-action-beans.xml
    
oodt/branches/protocol/protocol-api/src/main/resources/policy/protocol-cmd-line-beans.xml
    
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/MockProtocol.java
    
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/auth/TestBasicAuthentication.java
    
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/auth/TestNoAuthentication.java
    oodt/branches/protocol/protocol-api/src/testdata/test-protocol-config.xml

Added: oodt/branches/protocol/protocol-api/src/main/bin/protocol
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/main/bin/protocol?rev=1130280&view=auto
==============================================================================
--- oodt/branches/protocol/protocol-api/src/main/bin/protocol (added)
+++ oodt/branches/protocol/protocol-api/src/main/bin/protocol Wed Jun  1 
20:00:03 2011
@@ -0,0 +1,13 @@
+#!/bin/csh
+
+set args
+
+if ( $#args > 0 ) then
+       set args = "$*"
+endif
+
+${JAVA_HOME}/bin/java \
+       -Djava.ext.dirs=../lib \
+       -Djava.util.logging.config.file=../etc/logging.properties \
+       
-Dorg.apache.oodt.cas.protocol.manager.config.file=../policy/protocol-config.xml
 \
+       org.apache.oodt.cas.protocol.system.CLProtocolManager ${args}
\ No newline at end of file

Modified: 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/action/BasicVerifyAction.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/action/BasicVerifyAction.java?rev=1130280&r1=1130279&r2=1130280&view=diff
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/action/BasicVerifyAction.java
 (original)
+++ 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/action/BasicVerifyAction.java
 Wed Jun  1 20:00:03 2011
@@ -34,18 +34,20 @@ public class BasicVerifyAction extends P
        private ProtocolVerifier verifier;
        private ProtocolFactory factory;
        
+       private boolean lastVerificationResult;
+       
        @Override
        public void performAction(ProtocolManager protocolManager) throws 
Exception {
                if (factory != null) {
                        Protocol protocol = factory.newInstance();
-                       if (verifier.verify(protocol, getSite(), 
getAuthentication())) {
+                       if (lastVerificationResult = verifier.verify(protocol, 
getSite(), getAuthentication())) {
                                LOG.info("Protocol '" + 
protocol.getClass().getCanonicalName() + "' PASSED verification!");
                        } else {
                                LOG.severe("Protocol '" + 
protocol.getClass().getCanonicalName() + "' FAILED verification!");
                        }
                } else {
                        Protocol protocol = 
protocolManager.getProtocolBySite(getSite(), getAuthentication(), verifier);
-                       if (protocol != null) {
+                       if (lastVerificationResult = protocol != null) {
                                LOG.info("Protocol '" + 
protocol.getClass().getCanonicalName() + "' PASSED verification!");
                        } else {
                                LOG.info("No Protocol determined, FAILED 
verification!");                               
@@ -61,4 +63,7 @@ public class BasicVerifyAction extends P
                this.factory = factory;
        }
        
+       protected boolean getLastVerificationResults() {
+               return lastVerificationResult;
+       }
 }

Modified: 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/action/DownloadAction.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/action/DownloadAction.java?rev=1130280&r1=1130279&r2=1130280&view=diff
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/action/DownloadAction.java
 (original)
+++ 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/action/DownloadAction.java
 Wed Jun  1 20:00:03 2011
@@ -19,6 +19,7 @@ package org.apache.oodt.cas.protocol.act
 //JDK imports
 import java.io.File;
 import java.net.URI;
+import java.net.URISyntaxException;
 
 //OODT imports
 import org.apache.oodt.cas.protocol.Protocol;
@@ -32,26 +33,40 @@ import org.apache.oodt.cas.protocol.syst
  */
 public class DownloadAction extends ProtocolAction {
        
-       private String urlString;
-       private String toDir;
+       protected URI uri;
+       protected String toDir;
+       protected Protocol usedProtocol;
        
        public void performAction(ProtocolManager protocolManager) throws 
Exception {
-               URI uri = new URI(urlString);
-               Protocol protocol = protocolManager.getProtocolBySite(
-                               new URI(uri.getScheme(), uri.getHost(), null, 
null),
-                               getAuthentication(),
-                               null);
-               protocol.get(new ProtocolFile(uri.getPath(), false),
-                               (toDir != null ? new 
File(toDir).getAbsoluteFile() : new File(
-                                               ".").getAbsoluteFile()));
+               usedProtocol = createProtocol(protocolManager);
+               ProtocolFile fromFile = createProtocolFile();
+               String toFilename = fromFile.equals(ProtocolFile.ROOT)
+                               || fromFile.getName().isEmpty() ? uri.getHost() 
: fromFile
+                               .getName();
+               File toFile = (toDir != null) ? new File(toDir, toFilename) : 
new File(toFilename);
+               usedProtocol.get(fromFile, toFile.getAbsoluteFile());
        }
        
-       public void setUrl(String urlString) {
-               this.urlString = urlString;
+       public void setUrl(String urlString) throws URISyntaxException {
+               uri = new URI(urlString);
        }
        
        public void setToDir(String toDir) {
                this.toDir = toDir;
        }
 
+       protected Protocol getUsedProtocol() {
+               return usedProtocol;
+       }
+       
+       protected ProtocolFile createProtocolFile() throws URISyntaxException {
+               return new ProtocolFile(uri.getPath(), false);
+       }
+       
+       protected Protocol createProtocol(ProtocolManager protocolManager) 
throws URISyntaxException {
+               return protocolManager.getProtocolBySite(
+                               new URI(uri.getScheme(), uri.getHost(), null, 
null),
+                               getAuthentication(),
+                               null);
+       }
 }

Modified: 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/auth/Authentication.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/auth/Authentication.java?rev=1130280&r1=1130279&r2=1130280&view=diff
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/auth/Authentication.java
 (original)
+++ 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/auth/Authentication.java
 Wed Jun  1 20:00:03 2011
@@ -26,5 +26,5 @@ public interface Authentication {
        public String getUser();
        
        public String getPass();
-       
+
 }

Modified: 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/auth/BasicAuthentication.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/auth/BasicAuthentication.java?rev=1130280&r1=1130279&r2=1130280&view=diff
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/auth/BasicAuthentication.java
 (original)
+++ 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/auth/BasicAuthentication.java
 Wed Jun  1 20:00:03 2011
@@ -16,6 +16,8 @@
  */
 package org.apache.oodt.cas.protocol.auth;
 
+import org.apache.commons.lang.Validate;
+
 /**
  * Basic username and password {@link Authentication}
  * 
@@ -28,6 +30,8 @@ public class BasicAuthentication impleme
        private String pass;
        
        public BasicAuthentication(String user, String pass) {
+               Validate.notNull(user, "NULL user not allowed");
+               Validate.notNull(pass, "NULL pass not allowed");
                this.user = user;
                this.pass = pass;
        }
@@ -39,5 +43,4 @@ public class BasicAuthentication impleme
        public String getPass() {
                return pass;
        }
-
 }

Modified: 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/auth/NoAuthentication.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/auth/NoAuthentication.java?rev=1130280&r1=1130279&r2=1130280&view=diff
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/auth/NoAuthentication.java
 (original)
+++ 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/auth/NoAuthentication.java
 Wed Jun  1 20:00:03 2011
@@ -24,10 +24,11 @@ package org.apache.oodt.cas.protocol.aut
 public class NoAuthentication implements Authentication {
 
        public String getUser() {
-               return null;
+               return "";
        }
 
        public String getPass() {
-               return null;
+               return "";
        }
+
 }

Modified: 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/config/ProtocolConfig.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/config/ProtocolConfig.java?rev=1130280&r1=1130279&r2=1130280&view=diff
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/config/ProtocolConfig.java
 (original)
+++ 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/config/ProtocolConfig.java
 Wed Jun  1 20:00:03 2011
@@ -31,6 +31,8 @@ import org.apache.oodt.cas.protocol.syst
  */
 public interface ProtocolConfig {
 
+       public List<ProtocolFactory> getAllFactories();
+       
        public List<ProtocolFactory> getFactoriesBySite(URI site);
        
 }

Modified: 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/config/SpringProtocolConfig.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/config/SpringProtocolConfig.java?rev=1130280&r1=1130279&r2=1130280&view=diff
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/config/SpringProtocolConfig.java
 (original)
+++ 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/config/SpringProtocolConfig.java
 Wed Jun  1 20:00:03 2011
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.Map;
 
 //Spring imports
+import org.apache.commons.lang.Validate;
 import org.apache.oodt.cas.protocol.ProtocolFactory;
 import org.springframework.context.support.FileSystemXmlApplicationContext;
 
@@ -39,6 +40,7 @@ public class SpringProtocolConfig implem
        protected Map<String, List<ProtocolFactory>> factoryMap;
        
        public SpringProtocolConfig(String configFile) {
+               Validate.notNull(configFile, "SpringProtocolConfig configFile 
cannnot be NULL");
                factoryMap = new HashMap<String, List<ProtocolFactory>>();
                FileSystemXmlApplicationContext appContext = new 
FileSystemXmlApplicationContext(configFile);
                Collection<ProtocolFactory> protocolFactories = 
appContext.getBeansOfType(ProtocolFactory.class).values();
@@ -52,7 +54,16 @@ public class SpringProtocolConfig implem
                }
        }
        
+       public List<ProtocolFactory> getAllFactories() {
+               ArrayList<ProtocolFactory> factories = new 
ArrayList<ProtocolFactory>();
+               for (List<ProtocolFactory> groupOfFactories : 
factoryMap.values()) {
+                       factories.addAll(groupOfFactories);
+               }
+               return factories;
+       }
+       
        public List<ProtocolFactory> getFactoriesBySite(URI site) {
+               Validate.notNull(site, "URI site cannot be NULL");
                List<ProtocolFactory> factories = 
factoryMap.get(site.getScheme());
                if (factories == null) {
                        factories = new ArrayList<ProtocolFactory>();

Modified: 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/system/ProtocolManager.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/system/ProtocolManager.java?rev=1130280&r1=1130279&r2=1130280&view=diff
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/system/ProtocolManager.java
 (original)
+++ 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/system/ProtocolManager.java
 Wed Jun  1 20:00:03 2011
@@ -17,6 +17,7 @@
 package org.apache.oodt.cas.protocol.system;
 
 //OODT imports
+import org.apache.commons.lang.Validate;
 import org.apache.oodt.cas.protocol.auth.Authentication;
 import org.apache.oodt.cas.protocol.config.ProtocolConfig;
 import org.apache.oodt.cas.protocol.verify.ProtocolVerifier;
@@ -26,6 +27,7 @@ import org.apache.oodt.cas.protocol.Prot
 //JDK imports
 import java.net.URI;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.logging.Logger;
 
@@ -42,6 +44,7 @@ public class ProtocolManager {
        private Map<URI, ProtocolFactory> verifiedMap;
        
     public ProtocolManager(ProtocolConfig protocolConfig) {
+       Validate.notNull(protocolConfig, "protocolConfig must not be NULL");
        this.protocolConfig = protocolConfig;
        verifiedMap = new HashMap<URI, ProtocolFactory>();
     }
@@ -50,15 +53,40 @@ public class ProtocolManager {
        return protocolConfig;
     }
     
+    public List<ProtocolFactory> getFactories() {
+       return protocolConfig.getAllFactories();
+    }
+    
+    /**
+     * Determines/creates the appropriate {@link Protocol} for the given site 
and {@link Authentication}.
+     * {@link ProtocolVerifier} is run and the first {@link Protocol} to pass 
its verification, will be
+     * returned already connected to the given site.  If a {@link Protocol} is 
returned once for a given
+     * site/Authentication combination, then it will be remember next time 
this method is called an
+     * {@link ProtocolVerifier} will not be run (assumed pass).
+     * 
+     * @param site The URI for which a {@link Protocol} will be created
+     * @param auth The connection {@link Authentication} to be used to connect 
to the given site
+     * @param verifier The {@link ProtocolVerifier} which any {@link Protocol} 
must pass to be returned 
+     *                         as the approved {@link Protocol} for the given 
site and {@link Authentication}; may be null,
+     *                         in which case as long as the {@link Protocol} 
can connect to the site it is considered a pass
+     *                         as will be returned
+     * @return A verified {@link Protocol} for the given site and {@link 
Authentication}, otherwise null if
+     *         no {@link Protocol} could be determined.
+     */
     public Protocol getProtocolBySite(URI site, Authentication auth, 
ProtocolVerifier verifier) {
        if (verifiedMap.containsKey(site)) {
                return verifiedMap.get(site).newInstance();
        } else {
                for (ProtocolFactory factory : 
protocolConfig.getFactoriesBySite(site)) {
+                       Protocol protocol = null;
                        try {
-                               Protocol protocol = factory.newInstance();
+                               protocol = factory.newInstance();
                                if (verifier == null || 
verifier.verify(protocol, site, auth)) {
                                        verifiedMap.put(site, factory);
+                                       if (protocol.connected()) {
+                                               protocol.close();
+                                       }
+                                       protocol.connect(site.getHost(), auth);
                                        return protocol;
                                }
                        } catch (Exception e) {
@@ -72,7 +100,17 @@ public class ProtocolManager {
        }
     }
     
-    public void setProtocol(URI site, ProtocolFactory factory) {
+    /**
+     * 
+     * @param site
+     * @param auth
+     * @param factory
+     * @throws IllegalArgumentException if any of the arguments are null
+     */
+    public void setProtocol(URI site, Authentication auth, ProtocolFactory 
factory) {
+       Validate.notNull(site, "site must not be NULL");
+       Validate.notNull(auth, "auth must not be NULL");
+       Validate.notNull(factory, "factory must not be NULL");
        verifiedMap.put(site, factory);
     }
 }

Modified: 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/verify/BasicProtocolVerifier.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/verify/BasicProtocolVerifier.java?rev=1130280&r1=1130279&r2=1130280&view=diff
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/verify/BasicProtocolVerifier.java
 (original)
+++ 
oodt/branches/protocol/protocol-api/src/main/java/org/apache/oodt/cas/protocol/verify/BasicProtocolVerifier.java
 Wed Jun  1 20:00:03 2011
@@ -74,6 +74,8 @@ public class BasicProtocolVerifier imple
                     + protocol.getClass().getCanonicalName()
                     + " failed compatibility test : " + e.getMessage(), e);
             return false;
+        } finally {
+               try { protocol.close(); } catch (Exception e) {}
         }
         return true;
     }

Modified: 
oodt/branches/protocol/protocol-api/src/main/resources/policy/protocol-action-beans.xml
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/main/resources/policy/protocol-action-beans.xml?rev=1130280&r1=1130279&r2=1130280&view=diff
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/main/resources/policy/protocol-action-beans.xml
 (original)
+++ 
oodt/branches/protocol/protocol-api/src/main/resources/policy/protocol-action-beans.xml
 Wed Jun  1 20:00:03 2011
@@ -12,6 +12,6 @@
 
        <bean 
class="org.apache.oodt.commons.spring.postprocessor.SetIdBeanPostProcessor"/>
 
-       <bean id="download" 
class="org.apache.oodt.cas.protocol.action.DownloadAction"/>
+       <bean id="Download" 
class="org.apache.oodt.cas.protocol.action.DownloadAction"/>
        
 </beans>
\ No newline at end of file

Modified: 
oodt/branches/protocol/protocol-api/src/main/resources/policy/protocol-cmd-line-beans.xml
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/main/resources/policy/protocol-cmd-line-beans.xml?rev=1130280&r1=1130279&r2=1130280&view=diff
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/main/resources/policy/protocol-cmd-line-beans.xml
 (original)
+++ 
oodt/branches/protocol/protocol-api/src/main/resources/policy/protocol-cmd-line-beans.xml
 Wed Jun  1 20:00:03 2011
@@ -58,7 +58,7 @@
        </bean>
        
        <bean id="url" lazy-init="true" 
class="org.apache.oodt.commons.option.CmdLineOption">
-               <property name="shortOption" value="u"/>
+               <property name="shortOption" value="url"/>
                <property name="longOption" value="url"/>
                <property name="description" value="URL to download"/>
                <property name="hasArgs" value="true"/>

Modified: 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/MockProtocol.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/MockProtocol.java?rev=1130280&r1=1130279&r2=1130280&view=diff
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/MockProtocol.java
 (original)
+++ 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/MockProtocol.java
 Wed Jun  1 20:00:03 2011
@@ -18,6 +18,7 @@ package org.apache.oodt.cas.protocol;
 
 //JDK imports
 import java.io.File;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
@@ -36,9 +37,18 @@ public class MockProtocol implements Pro
        private ProtocolFile cwd;
        private String factoryId;
        
+       private List<ProtocolFile> deletedFiles;
+       private List<ProtocolFile> putFiles;
+       private List<ProtocolFile> getFiles;
+       private int timesConnected;
+       
        public MockProtocol(String factoryId) {
                connected = false;
                this.factoryId = factoryId;
+               deletedFiles = new ArrayList<ProtocolFile>();
+               putFiles = new ArrayList<ProtocolFile>();
+               getFiles = new ArrayList<ProtocolFile>();
+               timesConnected = 0;
        }
        
        public String getFactoryId() {
@@ -48,6 +58,14 @@ public class MockProtocol implements Pro
        public void connect(String host, Authentication authentication)
                        throws ProtocolException {
                connected = true;
+               deletedFiles.clear();
+               putFiles.clear();
+               getFiles.clear();
+               timesConnected++;
+       }
+       
+       public int getTimesConnected() {
+               return timesConnected;
        }
 
        public void close() throws ProtocolException {
@@ -64,12 +82,20 @@ public class MockProtocol implements Pro
 
        public void get(ProtocolFile fromFile, File toFile)
                        throws ProtocolException {
-               //do nothing
+               getFiles.add(fromFile);
        }
 
+       public List<ProtocolFile> getGetFiles() {
+               return getFiles;
+       }
+       
        public void put(File fromFile, ProtocolFile toFile)
                        throws ProtocolException {
-               //do nothing
+               putFiles.add(toFile);
+       }
+       
+       public List<ProtocolFile> getPutFiles() {
+               return putFiles;
        }
 
        public ProtocolFile pwd() throws ProtocolException {
@@ -81,7 +107,11 @@ public class MockProtocol implements Pro
        }
 
        public void delete(ProtocolFile file) throws ProtocolException {
-               //do nothing
+               deletedFiles.add(file);
+       }
+       
+       public List<ProtocolFile> getDeletedFiles() {
+               return deletedFiles;
        }
 
 }

Added: 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/MockProtocolAction.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/MockProtocolAction.java?rev=1130280&view=auto
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/MockProtocolAction.java
 (added)
+++ 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/MockProtocolAction.java
 Wed Jun  1 20:00:03 2011
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.oodt.cas.protocol.action;
+
+//OODT imports
+import org.apache.oodt.cas.protocol.system.ProtocolManager;
+
+/**
+ * Mock class for {@ProtocolAction}.
+ * 
+ * @author bfoster
+ */
+public class MockProtocolAction extends ProtocolAction {
+
+       @Override
+       public void performAction(ProtocolManager protocolManager) throws 
Exception {}
+
+}

Propchange: 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/MockProtocolAction.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestBasicVerifyAction.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestBasicVerifyAction.java?rev=1130280&view=auto
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestBasicVerifyAction.java
 (added)
+++ 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestBasicVerifyAction.java
 Wed Jun  1 20:00:03 2011
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.oodt.cas.protocol.action;
+
+//JUnit imports
+import java.net.URI;
+
+import org.apache.oodt.cas.protocol.Protocol;
+import org.apache.oodt.cas.protocol.auth.Authentication;
+import org.apache.oodt.cas.protocol.config.MockSpringProtocolConfig;
+import org.apache.oodt.cas.protocol.system.ProtocolManager;
+import org.apache.oodt.cas.protocol.verify.ProtocolVerifier;
+
+import junit.framework.TestCase;
+
+/**
+ * Test class for {@link BasicVerifyAction}
+ * 
+ * @author bfoster
+ */
+public class TestBasicVerifyAction extends TestCase {
+
+       public void testVerification() throws Exception {
+               BasicVerifyAction bva = new BasicVerifyAction();
+               bva.setSite("http://localhost";);
+               bva.setVerifier(new ProtocolVerifier() {
+                       public boolean verify(Protocol protocol, URI site,
+                                       Authentication auth) {
+                               return auth != null && 
site.toString().equals("http://localhost";);
+                       }
+               });
+               bva.performAction(new ProtocolManager(new 
MockSpringProtocolConfig()));
+               assertTrue(bva.getLastVerificationResults());
+       }
+       
+}

Propchange: 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestBasicVerifyAction.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestDownloadAction.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestDownloadAction.java?rev=1130280&view=auto
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestDownloadAction.java
 (added)
+++ 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestDownloadAction.java
 Wed Jun  1 20:00:03 2011
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.oodt.cas.protocol.action;
+
+//JUnit imports
+import java.net.URISyntaxException;
+
+import org.apache.oodt.cas.protocol.MockProtocol;
+import org.apache.oodt.cas.protocol.Protocol;
+import org.apache.oodt.cas.protocol.ProtocolFile;
+import org.apache.oodt.cas.protocol.config.MockSpringProtocolConfig;
+import org.apache.oodt.cas.protocol.system.ProtocolManager;
+
+import junit.framework.TestCase;
+
+/**
+ * Test class for {@link DownloadAction}.
+ * 
+ * @author bfoster
+ */
+public class TestDownloadAction extends TestCase {
+       
+       private ProtocolManager pm;
+       
+       @Override
+       public void setUp() {
+               pm = new ProtocolManager(new MockSpringProtocolConfig());
+       }
+       
+       public void testCreateProtocol() throws URISyntaxException {
+               DownloadAction da = new DownloadAction();
+               da.setUrl("http://localhost/some/file";);
+               Protocol protocol = da.createProtocol(pm);
+               assertNotNull(protocol);
+               assertTrue(protocol instanceof MockProtocol);
+               assertEquals("http1", ((MockProtocol) protocol).getFactoryId());
+       }
+       
+       public void testCreateProtocolFile() throws URISyntaxException {
+               DownloadAction da = new DownloadAction();
+               da.setUrl("http://localhost/some/file";);
+               ProtocolFile file = da.createProtocolFile();
+               assertNotNull(file);
+               assertEquals("/some/file", file.getPath());
+               assertFalse(file.isRelative());
+               assertFalse(file.isDir());
+       }
+       
+       public void testFileDownload() throws Exception {
+               DownloadAction da = new DownloadAction();
+               da.setUrl("http://localhost/some/file";);
+               da.performAction(new ProtocolManager(new 
MockSpringProtocolConfig()));
+               assertNotNull(da.getUsedProtocol());
+               assertTrue(da.getUsedProtocol() instanceof MockProtocol);
+               assertEquals(1, ((MockProtocol) 
da.getUsedProtocol()).getGetFiles().size());
+               assertEquals("/some/file", ((MockProtocol) 
da.getUsedProtocol()).getGetFiles().get(0).getPath());
+       }
+}

Propchange: 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestDownloadAction.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestProtocolAction.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestProtocolAction.java?rev=1130280&view=auto
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestProtocolAction.java
 (added)
+++ 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestProtocolAction.java
 Wed Jun  1 20:00:03 2011
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.oodt.cas.protocol.action;
+
+//JUnit imports
+import java.net.URISyntaxException;
+
+import junit.framework.TestCase;
+
+/**
+ * Test class for {@link ProtocolAction}.
+ * 
+ * @author bfoster
+ */
+public class TestProtocolAction extends TestCase {
+
+       public void testInitialState() throws URISyntaxException {
+               MockProtocolAction action = new MockProtocolAction();
+               action.setId("id");
+               action.setUser("user");
+               action.setPass("pass");
+               action.setSite("http://some-site";);
+               assertEquals("id", action.getId());
+               assertEquals("user", action.getAuthentication().getUser());
+               assertEquals("pass", action.getAuthentication().getPass());
+               assertEquals("http://some-site";, action.getSite().toString());
+       }
+}

Propchange: 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/action/TestProtocolAction.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/auth/TestBasicAuthentication.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/auth/TestBasicAuthentication.java?rev=1130280&r1=1130279&r2=1130280&view=diff
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/auth/TestBasicAuthentication.java
 (original)
+++ 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/auth/TestBasicAuthentication.java
 Wed Jun  1 20:00:03 2011
@@ -32,4 +32,18 @@ public class TestBasicAuthentication ext
                assertEquals("pass", auth.getPass());
        }
        
+       public void testNullCase() {
+               try {
+                       new BasicAuthentication(null, "pass");
+                       fail("Should have thrown IllegalArgumentException");
+               }catch (IllegalArgumentException e) {}
+               try {
+                       new BasicAuthentication("user", null);
+                       fail("Should have thrown IllegalArgumentException");
+               }catch (IllegalArgumentException e) {}
+               try {
+                       new BasicAuthentication(null, null);
+                       fail("Should have thrown IllegalArgumentException");
+               }catch (IllegalArgumentException e) {}
+       }
 }

Modified: 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/auth/TestNoAuthentication.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/auth/TestNoAuthentication.java?rev=1130280&r1=1130279&r2=1130280&view=diff
==============================================================================
--- 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/auth/TestNoAuthentication.java
 (original)
+++ 
oodt/branches/protocol/protocol-api/src/test/org/apache/oodt/cas/protocol/auth/TestNoAuthentication.java
 Wed Jun  1 20:00:03 2011
@@ -28,8 +28,8 @@ public class TestNoAuthentication extend
 
        public void testInitialState() {
                NoAuthentication auth = new NoAuthentication();
-               assertNull(auth.getUser());
-               assertNull(auth.getPass());
+               assertEquals("", auth.getUser());
+               assertEquals("", auth.getPass());
        }
        
 }

Modified: 
oodt/branches/protocol/protocol-api/src/testdata/test-protocol-config.xml
URL: 
http://svn.apache.org/viewvc/oodt/branches/protocol/protocol-api/src/testdata/test-protocol-config.xml?rev=1130280&r1=1130279&r2=1130280&view=diff
==============================================================================
--- oodt/branches/protocol/protocol-api/src/testdata/test-protocol-config.xml 
(original)
+++ oodt/branches/protocol/protocol-api/src/testdata/test-protocol-config.xml 
Wed Jun  1 20:00:03 2011
@@ -30,7 +30,7 @@
                <property name="schema" value="sftp"/>
        </bean>
        
-       <bean id="http" 
class="org.apache.oodt.cas.protocol.MockProtocolFactory">
+       <bean id="http1" 
class="org.apache.oodt.cas.protocol.MockProtocolFactory">
                <property name="schema" value="http"/>
        </bean>
        


Reply via email to