Remove core dependency.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Mon, 9 Mar 2009 23:26:43 +0000 (00:26 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Mon, 9 Mar 2009 23:26:43 +0000 (00:26 +0100)
src/net/pterodactylus/arachne/core/URLFetcher.java

index d57e15f..ddfbddd 100644 (file)
@@ -7,6 +7,8 @@ import java.net.URL;
 import java.net.URLConnection;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -26,9 +28,6 @@ class URLFetcher implements Runnable, ParserListener {
        /** The logger. */
        private static final Logger logger = Logger.getLogger(URLFetcher.class.getName());
 
-       /** The core. */
-       private final Core core;
-
        /** The URL to fetch. */
        private final URL url;
 
@@ -38,20 +37,20 @@ class URLFetcher implements Runnable, ParserListener {
        /** The hash of the fetched URL. */
        private byte[] hash;
 
+       /** The collected URLs. */
+       private final List<Page> collectedPages = new ArrayList<Page>();
+
        /**
         * Creates a new fetcher for the given URL.
         *
-        * @param core
-        *            The core new pages are queued in
         * @param url
         *            The URL to fetch
         * @throws NoSuchAlgorithmException
         *             if no {@link MessageDigest} instance with an
         *             <code>SHA-256</code> algorithm can be created
         */
-       public URLFetcher(Core core, URL url) throws NoSuchAlgorithmException {
-               Validation.begin().isNotNull("core", core).isNotNull("url", url).check();
-               this.core = core;
+       public URLFetcher(URL url) throws NoSuchAlgorithmException {
+               Validation.begin().isNotNull("url", url).check();
                this.url = url;
                messageDigest = MessageDigest.getInstance("SHA-256");
        }
@@ -61,6 +60,15 @@ class URLFetcher implements Runnable, ParserListener {
        //
 
        /**
+        * Returns the pages collected while parsing this URL.
+        *
+        * @return The collected pages
+        */
+       public List<Page> getCollectedPages() {
+               return collectedPages;
+       }
+
+       /**
         * Returns the hash of the content of the fetched URL. The returned value is
         * only valid after {@link #run()} has been called.
         *
@@ -111,11 +119,12 @@ class URLFetcher implements Runnable, ParserListener {
                URL newLink = null;
                try {
                        newLink = new URL(url, linkTarget);
-                       core.addPage(newLink);
+                       Page newPage = Page.fromURL(newLink);
+                       if (newPage != null) {
+                               collectedPages.add(newPage);
+                       }
                } catch (MalformedURLException mue1) {
                        logger.log(Level.WARNING, "Could not create URL from “" + url + "” and “" + linkTarget + "”.", mue1);
-               } catch (IllegalArgumentException iae1) {
-                       logger.log(Level.WARNING, "Could not add “" + newLink + "” to core queue.", iae1);
                }
        }