You are viewing a plain text version of this content. The canonical link for it is here.
Posted to droids-commits@incubator.apache.org by to...@apache.org on 2012/12/04 16:33:37 UTC

svn commit: r1417023 - in /incubator/droids/branches/0.2.x-cleanup/droids-core/src: main/java/org/apache/droids/core/ main/java/org/apache/droids/exception/ main/java/org/apache/droids/filter/ main/java/org/apache/droids/helper/factories/ test/java/org...

Author: tobr
Date: Tue Dec  4 16:33:34 2012
New Revision: 1417023

URL: http://svn.apache.org/viewvc?rev=1417023&view=rev
Log:
changed Validators to Filters

Added:
    incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/exception/DefaultTaskExceptionHandler.java
      - copied, changed from r1417006, incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/core/DefaultTaskExceptionHandler.java
    incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/ChainTaskFilter.java
      - copied, changed from r1417006, incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/ChainTaskValidator.java
    incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/Filter.java
      - copied, changed from r1417006, incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/URLFilter.java
    incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/MaxDepthTaskFilter.java
      - copied, changed from r1417006, incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/MaxDepthTaskValidator.java
Removed:
    incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/core/DefaultTaskExceptionHandler.java
    incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/ChainTaskValidator.java
    incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/MaxDepthTaskValidator.java
    incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/TaskValidator.java
    incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/URLFilter.java
Modified:
    incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/AlreadyVisitedFilter.java
    incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/HostFilter.java
    incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/RegexURLFilter.java
    incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/package-info.java
    incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/helper/factories/URLFiltersFactory.java
    incubator/droids/branches/0.2.x-cleanup/droids-core/src/test/java/org/apache/droids/core/TestSimpleQueue.java

Copied: incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/exception/DefaultTaskExceptionHandler.java (from r1417006, incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/core/DefaultTaskExceptionHandler.java)
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/exception/DefaultTaskExceptionHandler.java?p2=incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/exception/DefaultTaskExceptionHandler.java&p1=incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/core/DefaultTaskExceptionHandler.java&r1=1417006&r2=1417023&rev=1417023&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/core/DefaultTaskExceptionHandler.java (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/exception/DefaultTaskExceptionHandler.java Tue Dec  4 16:33:34 2012
@@ -14,12 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.droids.core;
+package org.apache.droids.exception;
 
 import java.io.IOException;
 
-import org.apache.droids.exception.TaskExceptionHandler;
-import org.apache.droids.exception.TaskExceptionResult;
+import org.apache.droids.core.DroidsException;
 
 
 public class DefaultTaskExceptionHandler implements TaskExceptionHandler {

Modified: incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/AlreadyVisitedFilter.java
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/AlreadyVisitedFilter.java?rev=1417023&r1=1417022&r2=1417023&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/AlreadyVisitedFilter.java (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/AlreadyVisitedFilter.java Tue Dec  4 16:33:34 2012
@@ -21,13 +21,14 @@ import java.net.URISyntaxException;
 import java.util.HashSet;
 import java.util.Set;
 
+import org.apache.droids.core.Task;
 import org.apache.http.client.utils.URIUtils;
 
 /**
  * 
  * @version 1.0
  */
-public class AlreadyVisitedFilter implements URLFilter {
+public class AlreadyVisitedFilter<T extends Task> implements Filter<T> {
 
   private Set<URI> visited;
 
@@ -37,16 +38,16 @@ public class AlreadyVisitedFilter implem
   }
 
   @Override
-  public String filter(final String url) {
+  public Task filter(final T task) {
     try {
-      URI uri = new URI(url);
+      URI uri = task.getURI();
       URI key = URIUtils.createURI(
           uri.getScheme(), uri.getHost(), uri.getPort(), uri.getPath(), null, null);
       synchronized (this.visited)
       {
         if (!this.visited.contains(key)) {
           this.visited.add(key);
-          return url;
+          return task;
         } else {
           return null;
         }

Copied: incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/ChainTaskFilter.java (from r1417006, incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/ChainTaskValidator.java)
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/ChainTaskFilter.java?p2=incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/ChainTaskFilter.java&p1=incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/ChainTaskValidator.java&r1=1417006&r2=1417023&rev=1417023&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/ChainTaskValidator.java (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/ChainTaskFilter.java Tue Dec  4 16:33:34 2012
@@ -24,28 +24,27 @@ import org.apache.droids.core.Task;
 /**
  * A chain task validator executes a chain of unique validators
  */
-public final class ChainTaskValidator<T extends Task> implements
-    TaskValidator<T> {
-  private final Set<TaskValidator<T>> validatorChain;
+public final class ChainTaskFilter<T extends Task> implements Filter<T> {
+  private final Set<Filter<T>> filterChain;
 
-  public ChainTaskValidator() {
+  public ChainTaskFilter() {
     super();
 
-    this.validatorChain = new LinkedHashSet<TaskValidator<T>>();
+    this.filterChain = new LinkedHashSet<Filter<T>>();
   }
 
   @Override
-  public boolean validate(final T task) {
-    for (final TaskValidator<T> taskValidator : this.validatorChain) {
-      if (!taskValidator.validate(task)) {
-        return false; 
+  public Task filter(final T task) {
+    for (final Filter<T> filter : this.filterChain) {
+      if (filter.filter(task) == null) {
+        return null; 
       }
     }
-    return true;
+    return task;
   }
 
-  public void addTaskValidator(final TaskValidator<T> taskValidator) {
-    this.validatorChain.add(taskValidator);
+  public void addFilter(final Filter<T> filter) {
+    this.filterChain.add(filter);
   }
 
 }

Copied: incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/Filter.java (from r1417006, incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/URLFilter.java)
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/Filter.java?p2=incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/Filter.java&p1=incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/URLFilter.java&r1=1417006&r2=1417023&rev=1417023&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/URLFilter.java (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/Filter.java Tue Dec  4 16:33:34 2012
@@ -16,6 +16,8 @@
  */
 package org.apache.droids.filter;
 
+import org.apache.droids.core.Task;
+
 /**
  * Filter to limit the urls that we want to allow in our queue.
  * <p>
@@ -25,7 +27,7 @@ package org.apache.droids.filter;
  * @version 1.0
  * 
  */
-public interface URLFilter {
+public interface Filter<T extends Task> {
 
   /**
    * Transforms the URL: can pass the original URL through or "delete" the URL
@@ -35,5 +37,5 @@ public interface URLFilter {
    *                the url to filter
    * @return null if the filter excludes the url or the url again if allowed
    */
-  String filter(String urlString);
+  Task filter(T task);
 }

Modified: incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/HostFilter.java
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/HostFilter.java?rev=1417023&r1=1417022&r2=1417023&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/HostFilter.java (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/HostFilter.java Tue Dec  4 16:33:34 2012
@@ -16,49 +16,43 @@
  */
 package org.apache.droids.filter;
 
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.util.HashSet;
 import java.util.Set;
 
+import org.apache.droids.core.Task;
 
 /**
- * Simple hostname based implementation of {@link URLFilter).
+ * Simple hostname based implementation of {@link Filter).
  * 
  * @version 1.0
  */
-public class HostFilter implements URLFilter {
+public class HostFilter<T extends Task> implements Filter<T> {
 
-  private Set<String> allowedHosts;
+	private Set<String> allowedHosts;
 
-  public HostFilter(final Set<String> allowedHosts) {
-    super();
-    this.allowedHosts = new HashSet<String>();
-    if (allowedHosts != null) {
-      this.allowedHosts.addAll(allowedHosts);
-    }
-  }
-  
-  public HostFilter(final String allowedHost) {
-    super();
-    this.allowedHosts = new HashSet<String>();
-    if (allowedHost != null) {
-      this.allowedHosts.add(allowedHost);
-    }
-  }
-
-  @Override
-  public String filter(final String url) {
-    try {
-      URI uri = new URI(url);
-      if (this.allowedHosts.contains(uri.getHost())) {
-        return url;
-      } else {
-        return null;
-      }
-    } catch (URISyntaxException ex) {
-      return null;
-    }
-  }
+	public HostFilter(final Set<String> allowedHosts) {
+		super();
+		this.allowedHosts = new HashSet<String>();
+		if (allowedHosts != null) {
+			this.allowedHosts.addAll(allowedHosts);
+		}
+	}
+
+	public HostFilter(final String allowedHost) {
+		super();
+		this.allowedHosts = new HashSet<String>();
+		if (allowedHost != null) {
+			this.allowedHosts.add(allowedHost);
+		}
+	}
+
+	@Override
+	public Task filter(final T task) {
+		if (this.allowedHosts.contains(task.getURI().getHost())) {
+			return task;
+		} else {
+			return null;
+		}
+	}
 
 }

Copied: incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/MaxDepthTaskFilter.java (from r1417006, incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/MaxDepthTaskValidator.java)
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/MaxDepthTaskFilter.java?p2=incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/MaxDepthTaskFilter.java&p1=incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/MaxDepthTaskValidator.java&r1=1417006&r2=1417023&rev=1417023&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/MaxDepthTaskValidator.java (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/MaxDepthTaskFilter.java Tue Dec  4 16:33:34 2012
@@ -21,23 +21,23 @@ import org.apache.droids.core.Task;
 /**
  * A simple task validator that honors task depth.
  */
-public class MaxDepthTaskValidator<T extends Task> implements TaskValidator<T> {
+public class MaxDepthTaskFilter<T extends Task> implements Filter<T> {
   private int maxDepth = -1;
 
-  public MaxDepthTaskValidator() {
+  public MaxDepthTaskFilter() {
     super();
   }
 
-  public MaxDepthTaskValidator(int maxDepth) {
+  public MaxDepthTaskFilter(int maxDepth) {
     this.maxDepth = maxDepth;
   }
 
   @Override
-  public boolean validate(final T task) {
+  public Task filter(final T task) {
     if (maxDepth > 0 && task.getDepth() > maxDepth) {
-      return false;
+      return null;
     }
-    return true;
+    return task;
   }
 
   public int getMaxDepth() {

Modified: incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/RegexURLFilter.java
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/RegexURLFilter.java?rev=1417023&r1=1417022&r2=1417023&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/RegexURLFilter.java (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/RegexURLFilter.java Tue Dec  4 16:33:34 2012
@@ -25,6 +25,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.regex.Pattern;
 
+import org.apache.droids.core.Task;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -35,7 +36,7 @@ import org.slf4j.LoggerFactory;
  * @version 1.0
  * 
  */
-public class RegexURLFilter implements URLFilter {
+public class RegexURLFilter<T extends Task> implements Filter<T> {
 
   private static final Logger LOG = LoggerFactory.getLogger(RegexURLFilter.class);
 
@@ -66,11 +67,11 @@ public class RegexURLFilter implements U
    * @see org.apache.droids.api.URLFilter#filter(java.lang.String)
    */
   @Override
-  public String filter(String url) {
+  public Task filter(T task) {
     synchronized (rules) {
       for (RegexRule rule : rules) {
-        if (rule.match(url)) {
-          return rule.accept() ? url : null;
+        if (rule.match(task.getURI().toString())) {
+          return rule.accept() ? task : null;
         }
       }
     }

Modified: incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/package-info.java
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/package-info.java?rev=1417023&r1=1417022&r2=1417023&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/package-info.java (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/filter/package-info.java Tue Dec  4 16:33:34 2012
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 /**
- * This package contains various helper for the work with protocols and network communication.
+ * This package contains filter for filtering or changing tasks of the droids.
  */
 package org.apache.droids.filter;
 

Modified: incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/helper/factories/URLFiltersFactory.java
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/helper/factories/URLFiltersFactory.java?rev=1417023&r1=1417022&r2=1417023&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/helper/factories/URLFiltersFactory.java (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-core/src/main/java/org/apache/droids/helper/factories/URLFiltersFactory.java Tue Dec  4 16:33:34 2012
@@ -16,9 +16,8 @@
  */
 package org.apache.droids.helper.factories;
 
-import java.net.URI;
-
-import org.apache.droids.filter.URLFilter;
+import org.apache.droids.core.Task;
+import org.apache.droids.filter.Filter;
 
 /**
  * Factory that will traverse all registered filter and execute them.
@@ -26,55 +25,54 @@ import org.apache.droids.filter.URLFilte
  * @version 1.0
  * 
  */
-public class URLFiltersFactory extends GenericFactory<URLFilter> {
+public class URLFiltersFactory extends GenericFactory<Filter> {
 
-  /**
-   * Run all defined filters. Assume logical AND.
-   * 
-   * @param urlString -
-   *                url to test
-   * @return true if filter plugin accept the url, false if excluded.
-   */
-  public boolean accept(URI uri) {
-  	if (uri == null) {
-  		return false;
-  	}
-  		
-    for (String key : getMap().keySet()) {
-      if(!accept(uri.toString(), key)) {
-      	return false;
-      }
-    }
-    return true;
-  }
-
-  /**
-   * Run a specific filter class.
-   * 
-   * @param urlString -
-   *                url to test
-   * @param filterName -
-   *                name of the specific filter class.
-   * @return true if filter plugin accept the url, false if excluded.
-   */
-  public boolean accept(String urlString, String filterName) {
-    if (urlString == null ||
-    		doFilter(urlString, filterName) == null) {
-      return false;
-    }
-    return true;
-  }
-
-  /**
-   * Check string against filters list
-   * 
-   * @param urlString -
-   *                url to test
-   * @param filterName -
-   *                name of the specific filter class.
-   * @return the URL if it's allowed, NULL otherwise
-   */
-	protected String doFilter(String urlString, String filterName) {
-	  return getMap().get(filterName).filter(urlString);
-  }
+	/**
+	 * Run all defined filters. Assume logical AND.
+	 * 
+	 * @param task
+	 *            the current Task
+	 * @return true if filter plugin accept the url, false if excluded.
+	 */
+	public boolean accept(Task task) {
+		if (task == null) {
+			return false;
+		}
+
+		for (String key : getMap().keySet()) {
+			if (!accept(task, key)) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * Run a specific filter class.
+	 * 
+	 * @param task
+	 *            the task to test
+	 * @param filterName
+	 *            - name of the specific filter class.
+	 * @return true if filter plugin accept the url, false if excluded.
+	 */
+	public boolean accept(Task task, String filterName) {
+		if (task == null || doFilter(task, filterName) == null) {
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * Check string against filters list
+	 * 
+	 * @param task
+	 *            - task to test
+	 * @param filterName
+	 *            - name of the specific filter class.
+	 * @return the URL if it's allowed, NULL otherwise
+	 */
+	protected Task doFilter(Task task, String filterName) {
+		return getMap().get(filterName).filter(task);
+	}
 }

Modified: incubator/droids/branches/0.2.x-cleanup/droids-core/src/test/java/org/apache/droids/core/TestSimpleQueue.java
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-core/src/test/java/org/apache/droids/core/TestSimpleQueue.java?rev=1417023&r1=1417022&r2=1417023&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-core/src/test/java/org/apache/droids/core/TestSimpleQueue.java (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-core/src/test/java/org/apache/droids/core/TestSimpleQueue.java Tue Dec  4 16:33:34 2012
@@ -20,18 +20,18 @@ import java.io.File;
 
 import junit.framework.Assert;
 
-import org.apache.droids.filter.MaxDepthTaskValidator;
+import org.apache.droids.filter.MaxDepthTaskFilter;
 import org.apache.droids.robot.walker.FileTask;
 import org.junit.Before;
 import org.junit.Test;
 
 public class TestSimpleQueue {
 
-	MaxDepthTaskValidator<FileTask> validator;
+	MaxDepthTaskFilter<FileTask> validator;
 
 	@Before
 	public final void initialize() {
-		validator = new MaxDepthTaskValidator<FileTask>();
+		validator = new MaxDepthTaskFilter<FileTask>();
 		validator.setMaxDepth(5);
 	}