Author: kwright
Date: Tue Jun  2 16:34:06 2020
New Revision: 1878400

URL: http://svn.apache.org/viewvc?rev=1878400&view=rev
Log:
CONNECTORS-1645: Use a list rather than a map to contain login sequence 
descriptions

Modified:
    
manifoldcf/trunk/connectors/webcrawler/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/webcrawler/CredentialsDescription.java

Modified: 
manifoldcf/trunk/connectors/webcrawler/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/webcrawler/CredentialsDescription.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/webcrawler/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/webcrawler/CredentialsDescription.java?rev=1878400&r1=1878399&r2=1878400&view=diff
==============================================================================
--- 
manifoldcf/trunk/connectors/webcrawler/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/webcrawler/CredentialsDescription.java
 (original)
+++ 
manifoldcf/trunk/connectors/webcrawler/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/webcrawler/CredentialsDescription.java
 Tue Jun  2 16:34:06 2020
@@ -129,21 +129,22 @@ public class CredentialsDescription
                 {
                   throw new ManifoldCFException("Match regular expression 
'"+matchRegexp+"' is illegal: "+e.getMessage(),e);
                 }
+                int authPageIndex = -1;
                 if (pageType.equals(WebcrawlerConfig.ATTRVALUE_FORM))
                 {
-                  
sc.addAuthPage(authPageRegexp,authPattern,overrideTargetURL,null,null,matchRegexp,matchPattern,null,null,null,null);
+                  authPageIndex = 
sc.addAuthPage(authPageRegexp,authPattern,overrideTargetURL,null,null,matchRegexp,matchPattern,null,null,null,null);
                 }
                 else if (pageType.equals(WebcrawlerConfig.ATTRVALUE_LINK))
                 {
-                  
sc.addAuthPage(authPageRegexp,authPattern,overrideTargetURL,matchRegexp,matchPattern,null,null,null,null,null,null);
+                  authPageIndex = 
sc.addAuthPage(authPageRegexp,authPattern,overrideTargetURL,matchRegexp,matchPattern,null,null,null,null,null,null);
                 }
                 else if 
(pageType.equals(WebcrawlerConfig.ATTRVALUE_REDIRECTION))
                 {
-                  
sc.addAuthPage(authPageRegexp,authPattern,overrideTargetURL,null,null,null,null,matchRegexp,matchPattern,null,null);
+                  authPageIndex = 
sc.addAuthPage(authPageRegexp,authPattern,overrideTargetURL,null,null,null,null,matchRegexp,matchPattern,null,null);
                 }
                 else if (pageType.equals(WebcrawlerConfig.ATTRVALUE_CONTENT))
                 {
-                  
sc.addAuthPage(authPageRegexp,authPattern,overrideTargetURL,null,null,null,null,null,null,matchRegexp,matchPattern);
+                  authPageIndex = 
sc.addAuthPage(authPageRegexp,authPattern,overrideTargetURL,null,null,null,null,null,null,matchRegexp,matchPattern);
                 }
                 else
                   throw new ManifoldCFException("Invalid page type: 
"+pageType);
@@ -169,7 +170,7 @@ public class CredentialsDescription
                     String paramValue = 
paramNode.getAttributeValue(WebcrawlerConfig.ATTR_VALUE);
                     if (passwordValue != null)
                       paramValue = ManifoldCF.deobfuscate(passwordValue);
-                    
sc.addPageParameter(authPageRegexp,paramName,paramNamePattern,paramValue);
+                    
sc.addPageParameter(authPageIndex,authPageRegexp,paramName,paramNamePattern,paramValue);
                   }
                 }
               }
@@ -514,17 +515,16 @@ public class CredentialsDescription
   /** LoginParameter iterator */
   protected static class LoginParameterIterator implements Iterator
   {
-    protected Map sessionPages;
-    protected Iterator sessionPageIterator;
-    protected String documentIdentifier;
+    protected final List<SessionCredentialItem> sessionPages;
+    protected final String documentIdentifier;
+    protected int sessionCredentialIndex = -1;
     protected LoginParameters currentOne = null;
 
     /** Constructor */
-    public LoginParameterIterator(Map sessionPages, String documentIdentifier)
+    public LoginParameterIterator(List<SessionCredentialItem> sessionPages, 
String documentIdentifier)
     {
       this.sessionPages = sessionPages;
       this.documentIdentifier = documentIdentifier;
-      this.sessionPageIterator = sessionPages.keySet().iterator();
     }
 
     /** Find next one */
@@ -532,20 +532,24 @@ public class CredentialsDescription
     {
       if (currentOne != null)
         return;
-      while (sessionPageIterator.hasNext())
+      if (sessionCredentialIndex == -1) {
+        sessionCredentialIndex = 0;
+      }
+      while (sessionCredentialIndex < sessionPages.size())
       {
-        String key = (String)sessionPageIterator.next();
-        SessionCredentialItem sci = 
(SessionCredentialItem)sessionPages.get(key);
+        SessionCredentialItem sci = sessionPages.get(sessionCredentialIndex);
         Matcher m = sci.getPattern().matcher(documentIdentifier);
         if (m.find())
         {
           currentOne = sci;
           return;
         }
+        sessionCredentialIndex++;
       }
     }
 
     /** Check for next */
+    @Override
     public boolean hasNext()
     {
       findNextOne();
@@ -553,6 +557,7 @@ public class CredentialsDescription
     }
 
     /** Get the next one */
+    @Override
     public Object next()
     {
       findNextOne();
@@ -561,6 +566,7 @@ public class CredentialsDescription
       return rval;
     }
 
+    @Override
     public void remove()
     {
       throw new Error("Unimplemented function");
@@ -570,8 +576,8 @@ public class CredentialsDescription
   /** Session credentials */
   protected static class SessionCredential implements SequenceCredentials
   {
-    protected String sequenceKey;
-    protected Map sessionPages = new HashMap();
+    protected final String sequenceKey;
+    protected final List<SessionCredentialItem> sessionPages = new 
ArrayList<>();
 
     /** Constructor */
     public SessionCredential(String sequenceKey)
@@ -580,7 +586,7 @@ public class CredentialsDescription
     }
 
     /** Add an auth page */
-    public void addAuthPage(String urlregexp, Pattern urlPattern,
+    public int addAuthPage(String urlregexp, Pattern urlPattern,
       String overrideTargetURL,
       String preferredLinkRegexp, Pattern preferredLinkPattern,
       String formNameRegexp, Pattern formNamePattern,
@@ -588,23 +594,26 @@ public class CredentialsDescription
       String contentRegexp, Pattern contentPattern)
       throws ManifoldCFException
     {
-      sessionPages.put(urlregexp,new 
SessionCredentialItem(urlregexp,urlPattern,
+      int rval = sessionPages.size();
+      sessionPages.add(new SessionCredentialItem(urlregexp,urlPattern,
        overrideTargetURL,
         preferredLinkRegexp,preferredLinkPattern,
         formNameRegexp,formNamePattern,
         preferredRedirectionRegexp,preferredRedirectionPattern,
        contentRegexp,contentPattern));
+      return rval;
     }
 
     /** Add a page parameter */
-    public void addPageParameter(String urlregexp, String paramNameRegexp, 
Pattern paramNamePattern, String paramValue)
+    public void addPageParameter(int authPageIndex, String urlregexp, String 
paramNameRegexp, Pattern paramNamePattern, String paramValue)
     {
-      SessionCredentialItem sci = 
(SessionCredentialItem)sessionPages.get(urlregexp);
+      SessionCredentialItem sci = sessionPages.get(authPageIndex);
       sci.addParameter(paramNameRegexp,paramNamePattern,paramValue);
     }
 
     /** Fetch the unique key value for this particular credential.  (This is 
used to enforce the proper page ordering).
     */
+    @Override
     public String getSequenceKey()
     {
       return sequenceKey;
@@ -614,6 +623,7 @@ public class CredentialsDescription
     * must be specified as part of the login sequence description information.
     * If null is returned, then this page has no specific login information.
     */
+    @Override
     public Iterator findLoginParameters(String documentIdentifier)
       throws ManifoldCFException
     {
@@ -628,12 +638,9 @@ public class CredentialsDescription
       SessionCredential b = (SessionCredential)o;
       if (b.sessionPages.size() != sessionPages.size())
         return false;
-      Iterator iter = sessionPages.keySet().iterator();
-      while (iter.hasNext())
-      {
-        String key = (String)iter.next();
-        SessionCredentialItem sci = 
(SessionCredentialItem)sessionPages.get(key);
-        SessionCredentialItem bsci = 
(SessionCredentialItem)b.sessionPages.get(key);
+      for (int i = 0; i < sessionPages.size(); i++) {
+        SessionCredentialItem sci = sessionPages.get(i);
+        SessionCredentialItem bsci = b.sessionPages.get(i);
         if (bsci == null)
           return false;
         if (!sci.equals(bsci))
@@ -646,11 +653,7 @@ public class CredentialsDescription
     public int hashCode()
     {
       int rval = 0;
-      Iterator iter = sessionPages.keySet().iterator();
-      while (iter.hasNext())
-      {
-        String key = (String)iter.next();
-        SessionCredentialItem sci = 
(SessionCredentialItem)sessionPages.get(key);
+      for (final SessionCredentialItem sci : sessionPages) {
         rval += sci.hashCode();
       }
       return rval;


Reply via email to