You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2013/06/28 16:56:16 UTC

svn commit: r1497799 - in /manifoldcf/branches/CONNECTORS-703/framework: authority-servlet/src/main/java/org/apache/manifoldcf/authorityservlet/ crawler-ui/src/main/webapp/ pull-agent/src/main/java/org/apache/manifoldcf/authorities/authorities/ pull-ag...

Author: kwright
Date: Fri Jun 28 14:56:16 2013
New Revision: 1497799

URL: http://svn.apache.org/r1497799
Log:
Rearrange schema so there's only one prereq allowed.

Removed:
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authority/AuthorityPrereqManager.java
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/UserRecord.java
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/mapping/MappingPrereqManager.java
Modified:
    manifoldcf/branches/CONNECTORS-703/framework/authority-servlet/src/main/java/org/apache/manifoldcf/authorityservlet/UserACLServlet.java
    manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/editauthority.jsp
    manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/editmapper.jsp
    manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/execute.jsp
    manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/viewauthority.jsp
    manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/viewmapper.jsp
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authorities/BaseAuthorityConnector.java
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authority/AuthorityConnection.java
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authority/AuthorityConnectionManager.java
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/AuthorityConnectorFactory.java
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IAuthorityConnection.java
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IAuthorityConnector.java
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IMappingConnection.java
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IMappingConnector.java
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/mapping/MappingConnection.java
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/mapping/MappingConnectionManager.java
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/AuthCheckThread.java
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/AuthRequest.java
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/MappingRequest.java
    manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/MappingThread.java
    manifoldcf/branches/CONNECTORS-703/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_en_US.properties
    manifoldcf/branches/CONNECTORS-703/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_ja_JP.properties

Modified: manifoldcf/branches/CONNECTORS-703/framework/authority-servlet/src/main/java/org/apache/manifoldcf/authorityservlet/UserACLServlet.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/authority-servlet/src/main/java/org/apache/manifoldcf/authorityservlet/UserACLServlet.java?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/authority-servlet/src/main/java/org/apache/manifoldcf/authorityservlet/UserACLServlet.java (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/authority-servlet/src/main/java/org/apache/manifoldcf/authorityservlet/UserACLServlet.java Fri Jun 28 14:56:16 2013
@@ -113,40 +113,6 @@ public class UserACLServlet extends Http
         return;
       }
 
-      String[] domains = request.getParameterValues("domain");
-      
-      UserRecord userRecord = new UserRecord();
-
-      if (domains == null)
-      {
-        int atIndex = userID.indexOf("@");
-        if (atIndex == -1)
-          userRecord.setDomainValue(userRecord.DOMAIN_ACTIVEDIRECTORY, userID);
-        else
-        {
-          UserRecord u2 = new UserRecord();
-          u2.setDomainValue(userID.substring(atIndex+1), userID.substring(0,atIndex));
-          userRecord.setDomainValue(userRecord.DOMAIN_ACTIVEDIRECTORY, u2);
-        }
-      }
-      else
-      {
-        int domainIndex = domains.length;
-        while (--domainIndex >= 0)
-        {
-          if (domainIndex == domains.length-1)
-          {
-            userRecord.setDomainValue(domains[domainIndex], userID);
-          }
-          else
-          {
-            UserRecord newUserRecord = new UserRecord();
-            newUserRecord.setDomainValue(domains[domainIndex], userRecord);
-            userRecord = newUserRecord;
-          }
-        }
-      }
-
       boolean idneeded = false;
       boolean aclneeded = true;
 
@@ -169,7 +135,7 @@ public class UserACLServlet extends Http
 
       if (Logging.authorityService.isDebugEnabled())
       {
-        Logging.authorityService.debug("Received authority request for user '"+userRecord.toString()+"'");
+        Logging.authorityService.debug("Received authority request for user '"+userID+"'");
       }
 
       RequestQueue<MappingRequest> mappingQueue = ManifoldCF.getMappingRequestQueue();
@@ -200,8 +166,9 @@ public class UserACLServlet extends Http
       // One thread per authority, which is responsible for starting the auth request when it is ready.
       List<AuthOrderThread> authThreads = new ArrayList<AuthOrderThread>();
 
-      Map<String,MappingRequest> mappingRequests = new HashMap<String,MappingRequest>();
-      Map<String,AuthRequest> authRequests = new HashMap<String,AuthRequest>();
+      // These two must be thread-safe!!
+      Map<String,MappingRequest> mappingRequests = new Hashtable<String,MappingRequest>();
+      Map<String,AuthRequest> authRequests = new Hashtable<String,AuthRequest>();
 
       Map<String,IMappingConnection> mappingConnMap = new HashMap<String,IMappingConnection>();
       
@@ -226,24 +193,21 @@ public class UserACLServlet extends Http
           identifyingString = thisConnection.getName();
         
         // Create a record and add it to the queue
-        AuthRequest ar = new AuthRequest(userRecord,
-          thisConnection.getClassName(),identifyingString,thisConnection.getConfigParams(),thisConnection.getMaxConnections());
-        
-        authRequests.put(thisConnection.getName(), ar);
         
         // We create an auth thread if there are prerequisites to meet.
         // Otherwise, we just fire off the request
-        if (thisConnection.getPrerequisites().isEmpty())
+        if (thisConnection.getPrerequisiteMapping() == null)
+        {
+          AuthRequest ar = new AuthRequest(userID,
+            thisConnection.getClassName(),identifyingString,thisConnection.getConfigParams(),thisConnection.getMaxConnections());
+          authRequests.put(thisConnection.getName(), ar);
           queue.addRequest(ar);
+        }
         else
         {
-          AuthOrderThread thread = new AuthOrderThread(queue, authRequests, thisConnection);
-          thread.start();
+          AuthOrderThread thread = new AuthOrderThread(queue, authRequests, mappingRequests, thisConnection, identifyingString);
           authThreads.add(thread);
-          for (String p : thisConnection.getPrerequisites())
-          {
-            activeConnections.add(p);
-          }
+          activeConnections.add(thisConnection.getPrerequisiteMapping());
         }
       }
 
@@ -257,30 +221,38 @@ public class UserACLServlet extends Http
         if (identifyingString == null || identifyingString.length() == 0)
           identifyingString = connectionName;
         
-        // Create a record and add it to the queue
-        MappingRequest mr = new MappingRequest(userRecord,
-          thisConnection.getClassName(),identifyingString,thisConnection.getConfigParams(),thisConnection.getMaxConnections());
-        
-        mappingRequests.put(connectionName, mr);
-        
         // Either start up a thread, or just fire it off immediately.
-        if (thisConnection.getPrerequisites().isEmpty())
+        if (thisConnection.getPrerequisiteMapping() == null)
+        {
+          // Create a record and add it to the queue
+          MappingRequest mr = new MappingRequest(userID,
+            thisConnection.getClassName(),identifyingString,thisConnection.getConfigParams(),thisConnection.getMaxConnections());
+          mappingRequests.put(connectionName, mr);
           mappingQueue.addRequest(mr);
+        }
         else
         {
-          MappingOrderThread thread = new MappingOrderThread(mappingQueue, mappingRequests, thisConnection);
-          thread.start();
+          MappingOrderThread thread = new MappingOrderThread(mappingQueue, mappingRequests, thisConnection, identifyingString);
           mappingThreads.add(thread);
-          for (String p : thisConnection.getPrerequisites())
-          {
-            if (mappingRequests.get(p) == null)
+          String p = thisConnection.getPrerequisiteMapping();
+          if (mappingRequests.get(p) == null)
             activeConnections.add(p);
-          }
         }
         activeConnections.remove(connectionName);
       }
       
-      // Wait for the threads to finish up.  This will guarantee that all mappers have been started.
+      // Start threads.  We have to wait until all the requests have been
+      // at least created before we do this.
+      for (MappingOrderThread thread : mappingThreads)
+      {
+        thread.start();
+      }
+      for (AuthOrderThread thread : authThreads)
+      {
+        thread.start();
+      }
+      
+      // Wait for the threads to finish up.  This will guarantee that all entities have run to completion.
       for (MappingOrderThread thread : mappingThreads)
       {
         thread.finishUp();
@@ -322,12 +294,12 @@ public class UserACLServlet extends Http
           AuthRequest ar = authRequests.get(ac.getName());
 
           if (Logging.authorityService.isDebugEnabled())
-            Logging.authorityService.debug("Waiting for answer from connector class '"+ac.getClassName()+"' for user '"+userRecord.toString()+"'");
+            Logging.authorityService.debug("Waiting for answer from connector class '"+ac.getClassName()+"' for user '"+userID+"'");
 
           ar.waitForComplete();
 
           if (Logging.authorityService.isDebugEnabled())
-            Logging.authorityService.debug("Received answer from connector class '"+ac.getClassName()+"' for user '"+userRecord.toString()+"'");
+            Logging.authorityService.debug("Received answer from connector class '"+ac.getClassName()+"' for user '"+userID+"'");
 
           Throwable exception = ar.getAnswerException();
           AuthorizationResponse reply = ar.getAnswerResponse();
@@ -350,13 +322,13 @@ public class UserACLServlet extends Http
           else if (reply.getResponseStatus() == AuthorizationResponse.RESPONSE_USERUNAUTHORIZED)
           {
             if (Logging.authorityService.isDebugEnabled())
-              Logging.authorityService.debug("Authority '"+ar.getIdentifyingString()+"' does not authorize user '"+userRecord.toString()+"'");
+              Logging.authorityService.debug("Authority '"+ar.getIdentifyingString()+"' does not authorize user '"+userID+"'");
             sb.append(UNAUTHORIZED_VALUE).append(java.net.URLEncoder.encode(ar.getIdentifyingString(),"UTF-8")).append("\n");
           }
           else if (reply.getResponseStatus() == AuthorizationResponse.RESPONSE_USERNOTFOUND)
           {
             if (Logging.authorityService.isDebugEnabled())
-              Logging.authorityService.debug("User '"+userRecord.toString()+"' unknown to authority '"+ar.getIdentifyingString()+"'");
+              Logging.authorityService.debug("User '"+userID+"' unknown to authority '"+ar.getIdentifyingString()+"'");
             sb.append(USERNOTFOUND_VALUE).append(java.net.URLEncoder.encode(ar.getIdentifyingString(),"UTF-8")).append("\n");
           }
           else
@@ -371,7 +343,7 @@ public class UserACLServlet extends Http
               while (j < acl.length)
               {
                 if (Logging.authorityService.isDebugEnabled())
-                  Logging.authorityService.debug("  User '"+userRecord.toString()+"' has Acl = '"+acl[j]+"' from authority '"+ar.getIdentifyingString()+"'");
+                  Logging.authorityService.debug("  User '"+userID+"' has Acl = '"+acl[j]+"' from authority '"+ar.getIdentifyingString()+"'");
                 sb.append(TOKEN_PREFIX).append(java.net.URLEncoder.encode(ac.getName(),"UTF-8")).append(":").append(java.net.URLEncoder.encode(acl[j++],"UTF-8")).append("\n");
               }
             }
@@ -393,7 +365,7 @@ public class UserACLServlet extends Http
       }
 
       if (Logging.authorityService.isDebugEnabled())
-        Logging.authorityService.debug("Done with request for '"+userRecord.toString()+"'");
+        Logging.authorityService.debug("Done with request for '"+userID+"'");
     }
     catch (InterruptedException e)
     {
@@ -423,18 +395,21 @@ public class UserACLServlet extends Http
     protected final Map<String,MappingRequest> requests;
     protected final RequestQueue<MappingRequest> mappingRequestQueue;
     protected final IMappingConnection mappingConnection;
-    
+    protected final String identifyingString;
+
     protected Throwable exception = null;
     
     public MappingOrderThread(RequestQueue<MappingRequest> mappingRequestQueue,
       Map<String, MappingRequest> requests,
-      IMappingConnection mappingConnection)
+      IMappingConnection mappingConnection,
+      String identifyingString)
     {
       super();
       this.mappingRequestQueue = mappingRequestQueue;
       this.mappingConnection = mappingConnection;
       this.requests = requests;
-      setName("Constraint matcher for mapper "+mappingConnection.getName());
+      this.identifyingString = identifyingString;
+      setName("Constraint matcher for mapper '"+identifyingString+"'");
       setDaemon(true);
     }
     
@@ -442,17 +417,14 @@ public class UserACLServlet extends Http
     {
       try
       {
-        while (true)
-        {
-          Set<String> prereqs = mappingConnection.getPrerequisites();
-          for (String x : prereqs)
-          {
-            MappingRequest mr = requests.get(x);
-            mr.waitForComplete();
-          }
-          // Constraints are met.  Fire off the request.
-          mappingRequestQueue.addRequest(requests.get(mappingConnection.getName()));
-        }
+        String prerequisite = mappingConnection.getPrerequisiteMapping();
+        MappingRequest mappingRequest = requests.get(prerequisite);
+        mappingRequest.waitForComplete();
+        // Constraints are met.  Fire off the request.
+        MappingRequest mr = new MappingRequest(mappingRequest.getAnswerResponse(),
+          mappingConnection.getClassName(),identifyingString,mappingConnection.getConfigParams(),mappingConnection.getMaxConnections());
+        requests.put(mappingConnection.getName(), mr);
+        mappingRequestQueue.addRequest(mr);
       }
       catch (Throwable e)
       {
@@ -485,20 +457,26 @@ public class UserACLServlet extends Http
   protected static class AuthOrderThread extends Thread
   {
     protected final Map<String,AuthRequest> requests;
+    protected final Map<String,MappingRequest> mappingRequests;
     protected final RequestQueue<AuthRequest> authRequestQueue;
     protected final IAuthorityConnection authConnection;
+    protected final String identifyingString;
     
     protected Throwable exception = null;
     
     public AuthOrderThread(RequestQueue<AuthRequest> authRequestQueue,
       Map<String, AuthRequest> requests,
-      IAuthorityConnection authConnection)
+      Map<String, MappingRequest> mappingRequests,
+      IAuthorityConnection authConnection,
+      String identifyingString)
     {
       super();
       this.authRequestQueue = authRequestQueue;
       this.authConnection = authConnection;
       this.requests = requests;
-      setName("Constraint matcher for authority "+authConnection.getName());
+      this.mappingRequests = mappingRequests;
+      this.identifyingString = identifyingString;
+      setName("Constraint matcher for authority '"+identifyingString+"'");
       setDaemon(true);
     }
     
@@ -506,17 +484,14 @@ public class UserACLServlet extends Http
     {
       try
       {
-        while (true)
-        {
-          Set<String> prereqs = authConnection.getPrerequisites();
-          for (String x : prereqs)
-          {
-            AuthRequest mr = requests.get(x);
-            mr.waitForComplete();
-          }
-          // Constraints are met.  Fire off the request.
-          authRequestQueue.addRequest(requests.get(authConnection.getName()));
-        }
+        String prerequisite = authConnection.getPrerequisiteMapping();
+        MappingRequest mappingRequest = mappingRequests.get(prerequisite);
+        mappingRequest.waitForComplete();
+        // Constraints are met.  Fire off the request.  User may be null if mapper failed!!
+        AuthRequest ar = new AuthRequest(mappingRequest.getAnswerResponse(),
+          authConnection.getClassName(),identifyingString,authConnection.getConfigParams(),authConnection.getMaxConnections());
+        requests.put(authConnection.getName(), ar);
+        authRequestQueue.addRequest(ar);
       }
       catch (Throwable e)
       {

Modified: manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/editauthority.jsp
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/editauthority.jsp?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/editauthority.jsp (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/editauthority.jsp Fri Jun 28 14:56:16 2013
@@ -60,7 +60,7 @@
 	String className = "";
 	int maxConnections = 10;
 	ConfigParams parameters = new ConfigParams();
-	Set<String> prereqs = new HashSet<String>();
+	String prereq = null;
 
 	if (connection != null)
 	{
@@ -71,7 +71,7 @@
 		className = connection.getClassName();
 		parameters = connection.getConfigParams();
 		maxConnections = connection.getMaxConnections();
-		prereqs = connection.getPrerequisites();
+		prereq = connection.getPrerequisiteMapping();
 	}
 	else
 		connectionName = null;
@@ -407,26 +407,39 @@
 		    <table class="displaytable">
 			<tr><td class="separator" colspan="5"><hr/></td></tr>
 			<tr>
-				<td class="description"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editauthority.PrerequisiteUserMappingsColon")%></nobr></td>
+				<td class="description"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editauthority.PrerequisiteUserMappingColon")%></nobr></td>
 				<td class="value" colspan="4">
 					<input type="hidden" name="prerequisites_present" value="true"/>
 <%
+	    if (prereq == null)
+	    {
+%>
+					<input type="radio" name="prerequisites" value="" checked="true"/>&nbsp;<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editauthority.NoPrerequisites")%><br/>
+<%
+	    }
+	    else
+	    {
+%>
+					<input type="radio" name="prerequisites" value=""/>&nbsp;<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editauthority.NoPrerequisites")%><br/>
+<%
+	    }
+
 	    for (IMappingConnection mappingConnection : mappingConnections)
 	    {
 		String mappingName = mappingConnection.getName();
 		String mappingDescription = mappingName;
 		if (mappingConnection.getDescription() != null && mappingConnection.getDescription().length() > 0)
 			mappingDescription += " (" + mappingConnection.getDescription()+")";
-		if (prereqs.contains(mappingName))
+		if (prereq != null && prereq.equals(mappingName))
 		{
 %>
-					<input type="checkbox" name="prerequisites" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(mappingName)%>' checked="true"/>&nbsp;<%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(mappingDescription)%><br/>
+					<input type="radio" name="prerequisites" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(mappingName)%>' checked="true"/>&nbsp;<%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(mappingDescription)%><br/>
 <%
 		}
 		else
 		{
 %>
-					<input type="checkbox" name="prerequisites" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(mappingName)%>'/>&nbsp;<%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(mappingDescription)%><br/>
+					<input type="radio" name="prerequisites" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(mappingName)%>'/>&nbsp;<%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(mappingDescription)%><br/>
 <%
 		}
 	    }
@@ -442,7 +455,7 @@
 %>
 		    <input type="hidden" name="prerequisites_present" value="true"/>
 <%
-		for (String prereq : prereqs)
+		if (prereq != null)
 		{
 %>
 		    <input type="hidden" name="prerequisites" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(prereq)%>'/>

Modified: manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/editmapper.jsp
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/editmapper.jsp?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/editmapper.jsp (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/editmapper.jsp Fri Jun 28 14:56:16 2013
@@ -58,7 +58,7 @@
 	String className = "";
 	int maxConnections = 10;
 	ConfigParams parameters = new ConfigParams();
-	Set<String> prereqs = new HashSet<String>();
+	String prereq = null;
 
 	if (connection != null)
 	{
@@ -69,7 +69,7 @@
 		className = connection.getClassName();
 		parameters = connection.getConfigParams();
 		maxConnections = connection.getMaxConnections();
-		prereqs = connection.getPrerequisites();
+		prereq = connection.getPrerequisiteMapping();
 	}
 	else
 		connectionName = null;
@@ -406,26 +406,39 @@
 		    <table class="displaytable">
 			<tr><td class="separator" colspan="5"><hr/></td></tr>
 			<tr>
-				<td class="description"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editmapper.PrerequisiteUserMappingsColon")%></nobr></td>
+				<td class="description"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editmapper.PrerequisiteUserMappingColon")%></nobr></td>
 				<td class="value" colspan="4">
 					<input type="hidden" name="prerequisites_present" value="true"/>
 <%
+	    if (prereq == null)
+	    {
+%>
+					<input type="radio" name="prerequisites" value="" checked="true"/>&nbsp;<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editmapper.NoPrerequisites")%><br/>
+<%
+	    }
+	    else
+	    {
+%>
+					<input type="radio" name="prerequisites" value=""/>&nbsp;<%=Messages.getBodyString(pageContext.getRequest().getLocale(),"editmapper.NoPrerequisites")%><br/>
+<%
+	    }
+
 	    for (IMappingConnection mappingConnection : mappingConnections)
 	    {
 		String mappingName = mappingConnection.getName();
 		String mappingDescription = mappingName;
 		if (mappingConnection.getDescription() != null && mappingConnection.getDescription().length() > 0)
 			mappingDescription += " (" + mappingConnection.getDescription()+")";
-		if (prereqs.contains(mappingName))
+		if (prereq != null && prereq.equals(mappingName))
 		{
 %>
-					<input type="checkbox" name="prerequisites" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(mappingName)%>' checked="true"/>&nbsp;<%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(mappingDescription)%><br/>
+					<input type="radio" name="prerequisites" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(mappingName)%>' checked="true"/>&nbsp;<%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(mappingDescription)%><br/>
 <%
 		}
 		else
 		{
 %>
-					<input type="checkbox" name="prerequisites" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(mappingName)%>'/>&nbsp;<%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(mappingDescription)%><br/>
+					<input type="radio" name="prerequisites" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(mappingName)%>'/>&nbsp;<%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(mappingDescription)%><br/>
 <%
 		}
 	    }
@@ -441,7 +454,7 @@
 %>
 		    <input type="hidden" name="prerequisites_present" value="true"/>
 <%
-		for (String prereq : prereqs)
+		if (prereq != null)
 		{
 %>
 		    <input type="hidden" name="prerequisites" value='<%=org.apache.manifoldcf.ui.util.Encoder.attributeEscape(prereq)%>'/>

Modified: manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/execute.jsp
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/execute.jsp?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/execute.jsp (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/execute.jsp Fri Jun 28 14:56:16 2013
@@ -254,15 +254,8 @@
 					x = variableContext.getParameter("prerequisites_present");
 					if (x != null && x.equals("true"))
 					{
-						connection.getPrerequisites().clear();
-						String[] y = variableContext.getParameterValues("prerequisites");
-						if (y != null)
-						{
-							for (String s : y)
-							{
-								connection.getPrerequisites().add(s);
-							}
-						}
+						String y = variableContext.getParameter("prerequisites");
+						connection.setPrerequisiteMapping(y);
 					}
 					
 					String error = AuthorityConnectorFactory.processConfigurationPost(threadContext,connection.getClassName(),variableContext,pageContext.getRequest().getLocale(),connection.getConfigParams());
@@ -382,15 +375,8 @@
 					x = variableContext.getParameter("prerequisites_present");
 					if (x != null && x.equals("true"))
 					{
-						connection.getPrerequisites().clear();
-						String[] y = variableContext.getParameterValues("prerequisites");
-						if (y != null)
-						{
-							for (String s : y)
-							{
-								connection.getPrerequisites().add(s);
-							}
-						}
+						String y = variableContext.getParameter("prerequisites");
+						connection.setPrerequisiteMapping(y);
 					}
 
 					String error = MappingConnectorFactory.processConfigurationPost(threadContext,connection.getClassName(),variableContext,pageContext.getRequest().getLocale(),connection.getConfigParams());

Modified: manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/viewauthority.jsp
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/viewauthority.jsp?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/viewauthority.jsp (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/viewauthority.jsp Fri Jun 28 14:56:16 2013
@@ -83,14 +83,7 @@
 		if (connectorName == null)
 			connectorName = className + Messages.getString(pageContext.getRequest().getLocale(),"viewauthority.uninstalled");
 		int maxCount = connection.getMaxConnections();
-		Set<String> prereqs = connection.getPrerequisites();
-		String[] prereqList = new String[prereqs.size()];
-		int i = 0;
-		for (String s : prereqs)
-		{
-			prereqList[i++] = s;
-		}
-		java.util.Arrays.sort(prereqList);
+		String prereq = connection.getPrerequisiteMapping();
 		
 		ConfigParams parameters = connection.getConfigParams();
 
@@ -147,17 +140,14 @@
 				<td class="separator" colspan="4"><hr/></td>
 			</tr>
 			<tr>
-				<td class="description" colspan="1"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"viewauthority.PrerequisiteUserMappingsColon")%></nobr></td>
+				<td class="description" colspan="1"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"viewauthority.PrerequisiteUserMappingColon")%></nobr></td>
 				<td class="value" colspan="3">
 <%
-		if (prereqList.length != 0)
+		if (prereq != null)
 		{
-			for (int j = 0; j < prereqList.length; j++)
-			{	
 %>
-					<nobr><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(prereqList[j])%></nobr><br/>
+					<nobr><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(prereq)%></nobr>
 <%
-			}
 		}
 		else
 		{

Modified: manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/viewmapper.jsp
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/viewmapper.jsp?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/viewmapper.jsp (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/crawler-ui/src/main/webapp/viewmapper.jsp Fri Jun 28 14:56:16 2013
@@ -83,14 +83,7 @@
 		if (connectorName == null)
 			connectorName = className + Messages.getString(pageContext.getRequest().getLocale(),"viewmapper.uninstalled");
 		int maxCount = connection.getMaxConnections();
-		Set<String> prereqs = connection.getPrerequisites();
-		String[] prereqList = new String[prereqs.size()];
-		int i = 0;
-		for (String s : prereqs)
-		{
-			prereqList[i++] = s;
-		}
-		java.util.Arrays.sort(prereqList);
+		String prereq = connection.getPrerequisiteMapping();
 
 		ConfigParams parameters = connection.getConfigParams();
 
@@ -143,17 +136,14 @@
 				<td class="separator" colspan="4"><hr/></td>
 			</tr>
 			<tr>
-				<td class="description" colspan="1"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"viewmapper.PrerequisiteUserMappingsColon")%></nobr></td>
+				<td class="description" colspan="1"><nobr><%=Messages.getBodyString(pageContext.getRequest().getLocale(),"viewmapper.PrerequisiteUserMappingColon")%></nobr></td>
 				<td class="value" colspan="3">
 <%
-		if (prereqList.length != 0)
+		if (prereq != null)
 		{
-			for (int j = 0; j < prereqList.length; j++)
-			{	
 %>
-					<nobr><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(prereqList[j])%></nobr><br/>
+					<nobr><%=org.apache.manifoldcf.ui.util.Encoder.bodyEscape(prereq)%></nobr><br/>
 <%
-			}
 		}
 		else
 		{

Modified: manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authorities/BaseAuthorityConnector.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authorities/BaseAuthorityConnector.java?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authorities/BaseAuthorityConnector.java (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authorities/BaseAuthorityConnector.java Fri Jun 28 14:56:16 2013
@@ -34,38 +34,6 @@ public abstract class BaseAuthorityConne
 {
   public static final String _rcsid = "@(#)$Id: BaseAuthorityConnector.java 988245 2010-08-23 18:39:35Z kwright $";
 
-  /** Obtain the access tokens for a given UserRecord.
-  * This method is typically the one that is implemented by an authority,
-  * unless the authority predates release 1.3.  In that case, the
-  * ActiveDirectory credentials are pulled from the UserRecord and
-  * are passed to the other variant of this method.
-  *@param userRecord is the identifying user record.
-  *@return the response tokens (according to the current authority).
-  * (Should throws an exception only when a condition cannot be properly described within the authorization response object.)
-  */
-  @Override
-  public AuthorizationResponse getAuthorizationResponse(UserRecord userRecord)
-    throws ManifoldCFException
-  {
-    UserRecord activeDirectoryDomain = userRecord.getDomainValueAsUserRecord(UserRecord.DOMAIN_ACTIVEDIRECTORY);
-    if (activeDirectoryDomain == null)
-    {
-      String activeDirectoryUser = userRecord.getDomainValueAsString(UserRecord.DOMAIN_ACTIVEDIRECTORY);
-      if (activeDirectoryUser == null)
-        return new AuthorizationResponse(new String[0],AuthorizationResponse.RESPONSE_USERNOTFOUND);
-      return getAuthorizationResponse(activeDirectoryUser);
-    }
-    if (activeDirectoryDomain.getDomainCount() == 0)
-      return new AuthorizationResponse(new String[0],AuthorizationResponse.RESPONSE_USERNOTFOUND);
-    Iterator<String> adDomains = activeDirectoryDomain.iteratorDomains();
-    // Just pick the first one
-    String adDomain = adDomains.next();
-    String userName = activeDirectoryDomain.getDomainValueAsString(adDomain);
-    if (userName == null)
-      return new AuthorizationResponse(new String[0],AuthorizationResponse.RESPONSE_USERNOTFOUND);
-    return getAuthorizationResponse(userName + "@" + adDomain);
-  }
-
   /** Obtain the access tokens for a given user name.
   *@param userName is the user name or identifier.
   *@return the response tokens (according to the current authority).
@@ -96,25 +64,6 @@ public abstract class BaseAuthorityConne
     }
   }
 
-  /** Obtain the default access tokens for a given user record.
-  *@param userRecord is the identifying user record.
-  *@return the default response tokens, presuming that the connect method fails.
-  */
-  @Override
-  public AuthorizationResponse getDefaultAuthorizationResponse(UserRecord userRecord)
-  {
-    UserRecord activeDirectoryDomain = userRecord.getDomainValueAsUserRecord(UserRecord.DOMAIN_ACTIVEDIRECTORY);
-    if (activeDirectoryDomain == null || activeDirectoryDomain.getDomainCount() == 0)
-      return new AuthorizationResponse(new String[0],AuthorizationResponse.RESPONSE_USERNOTFOUND);
-    Iterator<String> adDomains = activeDirectoryDomain.iteratorDomains();
-    // Just pick the first one
-    String adDomain = adDomains.next();
-    String userName = activeDirectoryDomain.getDomainValueAsString(adDomain);
-    if (userName == null)
-      return new AuthorizationResponse(new String[0],AuthorizationResponse.RESPONSE_USERNOTFOUND);
-    return getDefaultAuthorizationResponse(userName + "@" + adDomain);
-  }
-
   /** Obtain the default access tokens for a given user name.
   *@param userName is the user name or identifier.
   *@return the default response tokens, presuming that the connect method fails.

Modified: manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authority/AuthorityConnection.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authority/AuthorityConnection.java?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authority/AuthorityConnection.java (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authority/AuthorityConnection.java Fri Jun 28 14:56:16 2013
@@ -36,8 +36,7 @@ public class AuthorityConnection impleme
   protected String className = null;
   protected ConfigParams configParams = new ConfigParams();
   protected int maxCount = 100;
-
-  protected Set<String> prerequisites = new HashSet<String>();
+  protected String prerequisiteMapping = null;
 
   /** Constructor.
   */
@@ -57,10 +56,7 @@ public class AuthorityConnection impleme
     rval.className = className;
     rval.maxCount = maxCount;
     rval.configParams = configParams.duplicate();
-    for (String s : prerequisites)
-    {
-      rval.prerequisites.add(s);
-    }
+    rval.prerequisiteMapping = prerequisiteMapping;
     return rval;
   }
 
@@ -152,12 +148,21 @@ public class AuthorityConnection impleme
     return maxCount;
   }
 
-  /** Get the prerequisite mappers.
-  *@return the set of mapping connections (by name) that must be run prior to this one.
+  /** Set the prerequisite mapper, if any.
+  *@param mapping is the name of the mapping connection to use to get the input user name,
+  *  or null.
+  */
+  public void setPrerequisiteMapping(String mapping)
+  {
+    prerequisiteMapping = mapping;
+  }
+  
+  /** Get the prerequisite mapper, if any.
+  *@return the mapping connection name whose output should be used as the input user name.
   */
-  public Set<String> getPrerequisites()
+  public String getPrerequisiteMapping()
   {
-    return prerequisites;
+    return prerequisiteMapping;
   }
 
 }

Modified: manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authority/AuthorityConnectionManager.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authority/AuthorityConnectionManager.java?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authority/AuthorityConnectionManager.java (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/authority/AuthorityConnectionManager.java Fri Jun 28 14:56:16 2013
@@ -39,6 +39,7 @@ import org.apache.manifoldcf.crawler.int
  * <tr><td>classname</td><td>VARCHAR(255)</td><td></td></tr>
  * <tr><td>maxcount</td><td>BIGINT</td><td></td></tr>
  * <tr><td>configxml</td><td>LONGTEXT</td><td></td></tr>
+ * <tr><td>mappingname</td><td>VARCHAR(32)</td><td></td></tr>
  * </table>
  * <br><br>
  * 
@@ -55,9 +56,7 @@ public class AuthorityConnectionManager 
   protected final static String classNameField = "classname";
   protected final static String maxCountField = "maxcount";
   protected final static String configField = "configxml";
-
-  // Handle for prereq storage
-  protected AuthorityPrereqManager authPrereqManager;
+  protected final static String mappingField = "mappingname";
 
   // Cache manager
   ICacheManager cacheManager;
@@ -72,7 +71,6 @@ public class AuthorityConnectionManager 
   {
     super(database,"authconnections");
 
-    authPrereqManager = new AuthorityPrereqManager(database);
     cacheManager = CacheManagerFactory.make(threadContext);
     this.threadContext = threadContext;
   }
@@ -96,16 +94,21 @@ public class AuthorityConnectionManager 
         map.put(classNameField,new ColumnDescription("VARCHAR(255)",false,false,null,null,false));
         map.put(maxCountField,new ColumnDescription("BIGINT",false,false,null,null,false));
         map.put(configField,new ColumnDescription("LONGTEXT",false,true,null,null,false));
+        map.put(mappingField,new ColumnDescription("VARCHAR(32)",false,true,null,null,false));
         performCreate(map,null);
       }
       else
       {
-        // Upgrade code goes here
+        // Add the mappingField column
+        ColumnDescription cd = (ColumnDescription)existing.get(mappingField);
+        if (cd == null)
+        {
+          Map addMap = new HashMap();
+          addMap.put(mappingField,new ColumnDescription("VARCHAR(32)",false,true,null,null,false));
+          performAlter(addMap,null,null,null);
+        }
       }
 
-      // Install dependent tables.
-      authPrereqManager.install(getTableName(),nameField);
-
       // Index management goes here
 
       break;
@@ -118,26 +121,7 @@ public class AuthorityConnectionManager 
   public void deinstall()
     throws ManifoldCFException
   {
-    beginTransaction();
-    try
-    {
-      authPrereqManager.deinstall();
-      performDrop(null);
-    }
-    catch (ManifoldCFException e)
-    {
-      signalRollback();
-      throw e;
-    }
-    catch (Error e)
-    {
-      signalRollback();
-      throw e;
-    }
-    finally
-    {
-      endTransaction();
-    }
+    performDrop(null);
   }
 
   /** Export configuration */
@@ -161,13 +145,7 @@ public class AuthorityConnectionManager 
       ManifoldCF.writeString(os,conn.getClassName());
       ManifoldCF.writeString(os,conn.getConfigParams().toXML());
       ManifoldCF.writeDword(os,conn.getMaxConnections());
-      
-      Set<String> prereqs = conn.getPrerequisites();
-      ManifoldCF.writeDword(os,prereqs.size());
-      for (String s : prereqs)
-      {
-        ManifoldCF.writeString(os,s);
-      }
+      ManifoldCF.writeString(os,conn.getPrerequisiteMapping());
     }
   }
 
@@ -191,11 +169,7 @@ public class AuthorityConnectionManager 
       conn.setMaxConnections(ManifoldCF.readDword(is));
       if (version >= 2)
       {
-        int prereqCount = ManifoldCF.readDword(is);
-        for (int j = 0; j < prereqCount; j++)
-        {
-          conn.getPrerequisites().add(ManifoldCF.readString(is));
-        }
+        conn.setPrerequisiteMapping(ManifoldCF.readString(is));
       }
       // Attempt to save this connection
       save(conn);
@@ -329,6 +303,7 @@ public class AuthorityConnectionManager 
             values.put(classNameField,object.getClassName());
             values.put(maxCountField,new Long((long)object.getMaxConnections()));
             values.put(configField,object.getConfigParams().toXML());
+            values.put(mappingField,object.getPrerequisiteMapping());
 
             boolean isCreated;
             
@@ -356,9 +331,6 @@ public class AuthorityConnectionManager 
               performInsert(values,null);
             }
 
-            // Write secondary table stuff
-            authPrereqManager.writeRows(object.getName(),object);
-
             cacheManager.invalidateKeys(ch);
             return isCreated;
           }
@@ -421,7 +393,6 @@ public class AuthorityConnectionManager 
         if (repoManager.isReferenced(name))
           throw new ManifoldCFException("Can't delete authority connection '"+name+"': existing repository connections refer to it");
         ManifoldCF.noteConfigurationChange();
-        authPrereqManager.deleteRows(name);
         ArrayList params = new ArrayList();
         String query = buildConjunctionClause(params,new ClauseDescription[]{
           new UnitaryClause(nameField,name)});
@@ -472,8 +443,8 @@ public class AuthorityConnectionManager 
     StringSet localCacheKeys = new StringSet(ssb);
     ArrayList params = new ArrayList();
     String query = buildConjunctionClause(params,new ClauseDescription[]{
-      new UnitaryClause(authPrereqManager.prereqField,mappingName)});
-    IResultSet set = performQuery("SELECT "+nameField+" FROM "+authPrereqManager.getTableName()+" WHERE "+query,params,
+      new UnitaryClause(mappingField,mappingName)});
+    IResultSet set = performQuery("SELECT "+nameField+" FROM "+getTableName()+" WHERE "+query,params,
       localCacheKeys,null);
     return set.getRowCount() > 0;
   }
@@ -559,8 +530,7 @@ public class AuthorityConnectionManager 
   */
   protected int maxClauseGetAuthorityConnectionsChunk()
   {
-    return Math.min(findConjunctionClauseMax(new ClauseDescription[]{}),
-      authPrereqManager.maxClauseGetRows());
+    return findConjunctionClauseMax(new ClauseDescription[]{});
   }
     
   /** Read a chunk of authority connections.
@@ -588,13 +558,12 @@ public class AuthorityConnectionManager 
       rc.setDescription((String)row.getValue(descriptionField));
       rc.setClassName((String)row.getValue(classNameField));
       rc.setMaxConnections((int)((Long)row.getValue(maxCountField)).longValue());
+      rc.setPrerequisiteMapping((String)row.getValue(mappingField));
       String xml = (String)row.getValue(configField);
       if (xml != null && xml.length() > 0)
         rc.getConfigParams().fromXML(xml);
       rval[index] = rc;
     }
-    // Do prereq part
-    authPrereqManager.getRows(rval,returnIndex,params);
   }
 
   // The cached instance will be a AuthorityConnection.  The cached version will be duplicated when it is returned

Modified: manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/AuthorityConnectorFactory.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/AuthorityConnectorFactory.java?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/AuthorityConnectorFactory.java (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/AuthorityConnectorFactory.java Fri Jun 28 14:56:16 2013
@@ -58,17 +58,6 @@ public class AuthorityConnectorFactory
 
   /** Get the default response from a connector.  Called if the connection attempt fails.
   */
-  public static AuthorizationResponse getDefaultAuthorizationResponse(IThreadContext threadContext, String className, UserRecord userRecord)
-    throws ManifoldCFException
-  {
-    IAuthorityConnector connector = getConnector(threadContext,className);
-    if (connector == null)
-      return null;
-    return connector.getDefaultAuthorizationResponse(userRecord);
-  }
-
-  /** Get the default response from a connector.  Called if the connection attempt fails.
-  */
   public static AuthorizationResponse getDefaultAuthorizationResponse(IThreadContext threadContext, String className, String userName)
     throws ManifoldCFException
   {

Modified: manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IAuthorityConnection.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IAuthorityConnection.java?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IAuthorityConnection.java (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IAuthorityConnection.java Fri Jun 28 14:56:16 2013
@@ -80,9 +80,15 @@ public interface IAuthorityConnection
   */
   public int getMaxConnections();
 
-  /** Get the prerequisite mappers.
-  *@return the set of mapping connections (by name) that must be run prior to this one.
+  /** Set the prerequisite mapper, if any.
+  *@param mapping is the name of the mapping connection to use to get the input user name,
+  *  or null.
   */
-  public Set<String> getPrerequisites();
+  public void setPrerequisiteMapping(String mapping);
+
+  /** Get the prerequisite mapper, if any.
+  *@return the mapping connection name whose output should be used as the input user name.
+  */
+  public String getPrerequisiteMapping();
 
 }

Modified: manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IAuthorityConnector.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IAuthorityConnector.java?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IAuthorityConnector.java (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IAuthorityConnector.java Fri Jun 28 14:56:16 2013
@@ -32,22 +32,7 @@ import java.io.*;
 public interface IAuthorityConnector extends IConnector
 {
 
-  /** Obtain the access tokens for a given UserRecord.
-  * This method is typically the one that is implemented by an authority,
-  * unless the authority predates release 1.3.  In that case, the
-  * ActiveDirectory credentials are pulled from the UserRecord and
-  * are passed to the other variant of this method.
-  *@param userRecord is the identifying user record.
-  *@return the response tokens (according to the current authority).
-  * (Should throws an exception only when a condition cannot be properly described within the authorization response object.)
-  */
-  public AuthorizationResponse getAuthorizationResponse(UserRecord userRecord)
-    throws ManifoldCFException;
-
   /** Obtain the access tokens for a given Active Directory user name.
-  * This method is typically not the one that an authority will implement;
-  * instead, most authorities implement the UserRecord version, and have
-  * this method call that one.
   *@param userName is the user name or identifier.
   *@return the response tokens (according to the current authority).
   * (Should throws an exception only when a condition cannot be properly described within the authorization response object.)
@@ -55,12 +40,6 @@ public interface IAuthorityConnector ext
   public AuthorizationResponse getAuthorizationResponse(String userName)
     throws ManifoldCFException;
 
-  /** Obtain the default access tokens for a given user record.
-  *@param userRecord is the identifying user record.
-  *@return the default response tokens, presuming that the connect method fails.
-  */
-  public AuthorizationResponse getDefaultAuthorizationResponse(UserRecord userRecord);
-
   /** Obtain the default access tokens for a given user name.
   *@param userName is the user name or identifier.
   *@return the default response tokens, presuming that the connect method fails.

Modified: manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IMappingConnection.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IMappingConnection.java?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IMappingConnection.java (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IMappingConnection.java Fri Jun 28 14:56:16 2013
@@ -80,9 +80,15 @@ public interface IMappingConnection
   */
   public int getMaxConnections();
 
-  /** Get the prerequisite mappers.
-  *@return the set of mapping connections (by name) that must be run prior to this one.
+  /** Set the prerequisite mapper, if any.
+  *@param mapping is the name of the mapping connection to use to get the input user name,
+  *  or null.
   */
-  public Set<String> getPrerequisites();
+  public void setPrerequisiteMapping(String mapping);
+
+  /** Get the prerequisite mapper, if any.
+  *@return the mapping connection name whose output should be used as the input user name.
+  */
+  public String getPrerequisiteMapping();
 
 }

Modified: manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IMappingConnector.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IMappingConnector.java?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IMappingConnector.java (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/interfaces/IMappingConnector.java Fri Jun 28 14:56:16 2013
@@ -28,10 +28,11 @@ import org.apache.manifoldcf.core.interf
 public interface IMappingConnector extends IConnector
 {
 
-  /** Modify a user record, according to whatever mapping is desired.
-  *@param record is the user record to read data from, and to modify.
+  /** Map an input user name to an output name.
+  *@param userName is the name to map
+  *@return the mapped user name
   */
-  public void mapUser(UserRecord record)
+  public String mapUser(String userName)
     throws ManifoldCFException;
   
 }

Modified: manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/mapping/MappingConnection.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/mapping/MappingConnection.java?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/mapping/MappingConnection.java (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/mapping/MappingConnection.java Fri Jun 28 14:56:16 2013
@@ -36,8 +36,7 @@ public class MappingConnection implement
   protected String className = null;
   protected ConfigParams configParams = new ConfigParams();
   protected int maxCount = 100;
-
-  protected Set<String> prerequisites = new HashSet<String>();
+  protected String prerequisiteMapping = null;
 
   /** Constructor.
   */
@@ -57,10 +56,7 @@ public class MappingConnection implement
     rval.className = className;
     rval.maxCount = maxCount;
     rval.configParams = configParams.duplicate();
-    for (String s : prerequisites)
-    {
-      rval.prerequisites.add(s);
-    }
+    rval.prerequisiteMapping = prerequisiteMapping;
     return rval;
   }
 
@@ -152,12 +148,21 @@ public class MappingConnection implement
     return maxCount;
   }
 
-  /** Get the prerequisite mappers.
-  *@return the set of mapping connections (by name) that must be run prior to this one.
+  /** Set the prerequisite mapper, if any.
+  *@param mapping is the name of the mapping connection to use to get the input user name,
+  *  or null.
+  */
+  public void setPrerequisiteMapping(String mapping)
+  {
+    prerequisiteMapping = mapping;
+  }
+  
+  /** Get the prerequisite mapper, if any.
+  *@return the mapping connection name whose output should be used as the input user name.
   */
-  public Set<String> getPrerequisites()
+  public String getPrerequisiteMapping()
   {
-    return prerequisites;
+    return prerequisiteMapping;
   }
 
 }

Modified: manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/mapping/MappingConnectionManager.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/mapping/MappingConnectionManager.java?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/mapping/MappingConnectionManager.java (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/mapping/MappingConnectionManager.java Fri Jun 28 14:56:16 2013
@@ -52,9 +52,7 @@ public class MappingConnectionManager ex
   protected final static String classNameField = "classname";
   protected final static String maxCountField = "maxcount";
   protected final static String configField = "configxml";
-
-  // Handle for prereq storage
-  protected MappingPrereqManager mappingPrereqManager;
+  protected final static String mappingField = "mappingname";
 
   // Cache manager
   ICacheManager cacheManager;
@@ -69,7 +67,6 @@ public class MappingConnectionManager ex
   {
     super(database,"mapconnections");
 
-    mappingPrereqManager = new MappingPrereqManager(database);
     cacheManager = CacheManagerFactory.make(threadContext);
     this.threadContext = threadContext;
   }
@@ -93,6 +90,7 @@ public class MappingConnectionManager ex
         map.put(classNameField,new ColumnDescription("VARCHAR(255)",false,false,null,null,false));
         map.put(maxCountField,new ColumnDescription("BIGINT",false,false,null,null,false));
         map.put(configField,new ColumnDescription("LONGTEXT",false,true,null,null,false));
+        map.put(mappingField,new ColumnDescription("VARCHAR(32)",false,true,null,null,false));
         performCreate(map,null);
       }
       else
@@ -100,9 +98,6 @@ public class MappingConnectionManager ex
         // Upgrade code goes here
       }
 
-      // Install dependent tables.
-      mappingPrereqManager.install(getTableName(),nameField);
-
       // Index management goes here
 
       break;
@@ -117,26 +112,7 @@ public class MappingConnectionManager ex
   public void deinstall()
     throws ManifoldCFException
   {
-    beginTransaction();
-    try
-    {
-      mappingPrereqManager.deinstall();
-      performDrop(null);
-    }
-    catch (ManifoldCFException e)
-    {
-      signalRollback();
-      throw e;
-    }
-    catch (Error e)
-    {
-      signalRollback();
-      throw e;
-    }
-    finally
-    {
-      endTransaction();
-    }
+    performDrop(null);
   }
 
   /** Export configuration */
@@ -158,13 +134,7 @@ public class MappingConnectionManager ex
       ManifoldCF.writeString(os,conn.getClassName());
       ManifoldCF.writeString(os,conn.getConfigParams().toXML());
       ManifoldCF.writeDword(os,conn.getMaxConnections());
-      
-      Set<String> prereqs = conn.getPrerequisites();
-      ManifoldCF.writeDword(os,prereqs.size());
-      for (String s : prereqs)
-      {
-        ManifoldCF.writeString(os,s);
-      }
+      ManifoldCF.writeString(os,conn.getPrerequisiteMapping());
     }
     
   }
@@ -186,11 +156,7 @@ public class MappingConnectionManager ex
       conn.setClassName(ManifoldCF.readString(is));
       conn.getConfigParams().fromXML(ManifoldCF.readString(is));
       conn.setMaxConnections(ManifoldCF.readDword(is));
-      int prereqCount = ManifoldCF.readDword(is);
-      for (int j = 0; j < prereqCount; j++)
-      {
-        conn.getPrerequisites().add(ManifoldCF.readString(is));
-      }
+      conn.setPrerequisiteMapping(ManifoldCF.readString(is));
       // Attempt to save this connection
       save(conn);
     }
@@ -254,16 +220,16 @@ public class MappingConnectionManager ex
       for (int i = 0; i < connections.length; i++)
       {
         String connectionName = connections[i].getName();
-        Set<String> prereqs = connections[i].getPrerequisites();
-        for (String s : prereqs)
+        String prerequisite = connections[i].getPrerequisiteMapping();
+        if (prerequisite != null)
         {
-          Integer x = incomingCount.get(s);
+          Integer x = incomingCount.get(prerequisite);
           if (x == null)
-            incomingCount.put(s,new Integer(1));
+            incomingCount.put(prerequisite,new Integer(1));
           else
-            incomingCount.put(s,new Integer(x.intValue()+1));
-          Q.remove(s);
-          links.add(connectionName + ":" + s);
+            incomingCount.put(prerequisite,new Integer(x.intValue()+1));
+          Q.remove(prerequisite);
+          links.add(connectionName + ":" + prerequisite);
         }
       }
 
@@ -284,7 +250,8 @@ public class MappingConnectionManager ex
         String checkConnectionName = iter.next();
         // Get prereqs for the connection, those that are still in the graph
         IMappingConnection sourceConnection = connectionMap.get(checkConnectionName);
-        for (String s : sourceConnection.getPrerequisites())
+        String s = sourceConnection.getPrerequisiteMapping();
+        if (s != null)
         {
           String edgeName = checkConnectionName + ":" + s;
           if (links.contains(edgeName))
@@ -440,6 +407,7 @@ public class MappingConnectionManager ex
             values.put(classNameField,object.getClassName());
             values.put(maxCountField,new Long((long)object.getMaxConnections()));
             values.put(configField,object.getConfigParams().toXML());
+            values.put(mappingField,object.getPrerequisiteMapping());
 
             boolean isCreated;
             
@@ -467,9 +435,6 @@ public class MappingConnectionManager ex
               performInsert(values,null);
             }
 
-            // Write secondary table stuff
-            mappingPrereqManager.writeRows(object.getName(),object);
-
             cacheManager.invalidateKeys(ch);
             return isCreated;
           }
@@ -530,13 +495,11 @@ public class MappingConnectionManager ex
       try
       {
         // Check if any other mapping refers to this connection name
-        // MHL - need to check about authority references!!!
         if (isReferenced(name))
           throw new ManifoldCFException("Can't delete mapping connection '"+name+"': existing mapping connections refer to it");
         if (authManager.isMappingReferenced(name))
           throw new ManifoldCFException("Can't delete mapping connection '"+name+"': existing authority connections refer to it");
         ManifoldCF.noteConfigurationChange();
-        mappingPrereqManager.deleteRows(name);
         ArrayList params = new ArrayList();
         String query = buildConjunctionClause(params,new ClauseDescription[]{
           new UnitaryClause(nameField,name)});
@@ -586,8 +549,8 @@ public class MappingConnectionManager ex
     StringSet localCacheKeys = new StringSet(ssb);
     ArrayList params = new ArrayList();
     String query = buildConjunctionClause(params,new ClauseDescription[]{
-      new UnitaryClause(mappingPrereqManager.prereqField,mappingName)});
-    IResultSet set = performQuery("SELECT "+nameField+" FROM "+mappingPrereqManager.getTableName()+" WHERE "+query,params,
+      new UnitaryClause(mappingField,mappingName)});
+    IResultSet set = performQuery("SELECT "+nameField+" FROM "+getTableName()+" WHERE "+query,params,
       localCacheKeys,null);
     return set.getRowCount() > 0;
   }
@@ -673,8 +636,7 @@ public class MappingConnectionManager ex
   */
   protected int maxClauseGetMappingConnectionsChunk()
   {
-    return Math.min(findConjunctionClauseMax(new ClauseDescription[]{}),
-      mappingPrereqManager.maxClauseGetRows());
+    return findConjunctionClauseMax(new ClauseDescription[]{});
   }
     
   /** Read a chunk of mapping connections.
@@ -702,13 +664,12 @@ public class MappingConnectionManager ex
       rc.setDescription((String)row.getValue(descriptionField));
       rc.setClassName((String)row.getValue(classNameField));
       rc.setMaxConnections((int)((Long)row.getValue(maxCountField)).longValue());
+      rc.setPrerequisiteMapping((String)row.getValue(mappingField));
       String xml = (String)row.getValue(configField);
       if (xml != null && xml.length() > 0)
         rc.getConfigParams().fromXML(xml);
       rval[index] = rc;
     }
-    // Do prereq part
-    mappingPrereqManager.getRows(rval,returnIndex,params);
   }
 
   // The cached instance will be a MappingConnection.  The cached version will be duplicated when it is returned

Modified: manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/AuthCheckThread.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/AuthCheckThread.java?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/AuthCheckThread.java (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/AuthCheckThread.java Fri Jun 28 14:56:16 2013
@@ -89,21 +89,14 @@ public class AuthCheckThread extends Thr
               // Get the acl for the user
               try
               {
-                // Either userID or userRecord will be set, never both
-                if (theRequest.getUserID() == null)
-                  response = connector.getAuthorizationResponse(theRequest.getUserRecord());
-                else
-                  response = connector.getAuthorizationResponse(theRequest.getUserID());
+                response = connector.getAuthorizationResponse(theRequest.getUserID());
               }
               catch (ManifoldCFException e)
               {
                 if (e.getErrorCode() == ManifoldCFException.INTERRUPTED)
                   throw e;
                 Logging.authorityService.warn("Authority error: "+e.getMessage(),e);
-                if (theRequest.getUserID() == null)
-                  response = AuthorityConnectorFactory.getDefaultAuthorizationResponse(threadContext,theRequest.getClassName(),theRequest.getUserRecord());
-                else
-                  response = AuthorityConnectorFactory.getDefaultAuthorizationResponse(threadContext,theRequest.getClassName(),theRequest.getUserID());
+                response = AuthorityConnectorFactory.getDefaultAuthorizationResponse(threadContext,theRequest.getClassName(),theRequest.getUserID());
               }
 
             }
@@ -118,20 +111,14 @@ public class AuthCheckThread extends Thr
           if (e.getErrorCode() == ManifoldCFException.INTERRUPTED)
             throw e;
           Logging.authorityService.warn("Authority connection exception: "+e.getMessage(),e);
-          if (theRequest.getUserID() == null)
-            response = AuthorityConnectorFactory.getDefaultAuthorizationResponse(threadContext,theRequest.getClassName(),theRequest.getUserRecord());
-          else
-            response = AuthorityConnectorFactory.getDefaultAuthorizationResponse(threadContext,theRequest.getClassName(),theRequest.getUserID());
+          response = AuthorityConnectorFactory.getDefaultAuthorizationResponse(threadContext,theRequest.getClassName(),theRequest.getUserID());
           if (response == null)
             exception = e;
         }
         catch (Throwable e)
         {
           Logging.authorityService.warn("Authority connection error: "+e.getMessage(),e);
-          if (theRequest.getUserID() == null)
-            response = AuthorityConnectorFactory.getDefaultAuthorizationResponse(threadContext,theRequest.getClassName(),theRequest.getUserRecord());
-          else
-            response = AuthorityConnectorFactory.getDefaultAuthorizationResponse(threadContext,theRequest.getClassName(),theRequest.getUserID());
+          response = AuthorityConnectorFactory.getDefaultAuthorizationResponse(threadContext,theRequest.getClassName(),theRequest.getUserID());
           if (response == null)
             exception = e;
         }

Modified: manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/AuthRequest.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/AuthRequest.java?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/AuthRequest.java (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/AuthRequest.java Fri Jun 28 14:56:16 2013
@@ -32,7 +32,6 @@ public class AuthRequest
 
   // This is where the request data actually lives
   protected final String userID;
-  protected final UserRecord userRecord;
   protected final String className;
   protected final String identifyingString;
   protected final ConfigParams configParameters;
@@ -48,19 +47,6 @@ public class AuthRequest
   public AuthRequest(String userID, String className, String identifyingString, ConfigParams configParameters, int maxConnections)
   {
     this.userID = userID;
-    this.userRecord = null;
-    this.className = className;
-    this.identifyingString = identifyingString;
-    this.configParameters = configParameters;
-    this.maxConnections = maxConnections;
-  }
-
-  /** Construct the request, and record the question.
-  */
-  public AuthRequest(UserRecord userRecord, String className, String identifyingString, ConfigParams configParameters, int maxConnections)
-  {
-    this.userID = null;
-    this.userRecord = userRecord;
     this.className = className;
     this.identifyingString = identifyingString;
     this.configParameters = configParameters;
@@ -73,12 +59,6 @@ public class AuthRequest
     return userID;
   }
 
-  /** Get the user record */
-  public UserRecord getUserRecord()
-  {
-    return userRecord;
-  }
-  
   /** Get the class name */
   public String getClassName()
   {

Modified: manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/MappingRequest.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/MappingRequest.java?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/MappingRequest.java (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/MappingRequest.java Fri Jun 28 14:56:16 2013
@@ -31,7 +31,7 @@ public class MappingRequest
   public static final String _rcsid = "@(#)$Id$";
 
   // This is where the request data actually lives
-  protected final UserRecord userRecord;
+  protected final String userID;
   protected final String className;
   protected final String identifyingString;
   protected final ConfigParams configParameters;
@@ -39,23 +39,24 @@ public class MappingRequest
 
   // These are the possible results of the request
   protected boolean answerComplete = false;
+  protected String outputUserID = null;
   protected Throwable answerException = null;
 
   /** Construct the request, and record the question.
   */
-  public MappingRequest(UserRecord userRecord, String className, String identifyingString, ConfigParams configParameters, int maxConnections)
+  public MappingRequest(String userID, String className, String identifyingString, ConfigParams configParameters, int maxConnections)
   {
-    this.userRecord = userRecord;
+    this.userID = userID;
     this.className = className;
     this.identifyingString = identifyingString;
     this.configParameters = configParameters;
     this.maxConnections = maxConnections;
   }
 
-  /** Get the user record */
-  public UserRecord getUserRecord()
+  /** Get the user ID */
+  public String getUserID()
   {
-    return userRecord;
+    return userID;
   }
   
   /** Get the class name */
@@ -97,7 +98,7 @@ public class MappingRequest
 
   /** Note that the request is complete, and record the answers.
   */
-  public void completeRequest(Throwable answerException)
+  public void completeRequest(String outputUserID, Throwable answerException)
   {
     synchronized (this)
     {
@@ -106,6 +107,7 @@ public class MappingRequest
 
       // Record the answer.
       answerComplete = true;
+      this.outputUserID = outputUserID;
       this.answerException = answerException;
 
       // Notify threads waiting on the answer.
@@ -113,6 +115,12 @@ public class MappingRequest
     }
   }
 
+  /** Get the answer user */
+  public String getAnswerResponse()
+  {
+    return outputUserID;
+  }
+
   /** Get the answer exception */
   public Throwable getAnswerException()
   {

Modified: manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/MappingThread.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/MappingThread.java?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/MappingThread.java (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/MappingThread.java Fri Jun 28 14:56:16 2013
@@ -68,6 +68,7 @@ public class MappingThread extends Threa
           Logging.authorityService.debug(" Calling mapping connector class '"+theRequest.getClassName()+"'");
         }
 
+	String outputUserID = null;
         Throwable exception = null;
 
         try
@@ -85,7 +86,7 @@ public class MappingThread extends Threa
               // Do the mapping
               try
               {
-                connector.mapUser(theRequest.getUserRecord());
+                outputUserID = connector.mapUser(theRequest.getUserID());
               }
               catch (ManifoldCFException e)
               {
@@ -115,7 +116,7 @@ public class MappingThread extends Threa
         }
 
         // The request is complete
-        theRequest.completeRequest(exception);
+        theRequest.completeRequest(outputUserID, exception);
 
         // Repeat, and only go to sleep if there are no more requests.
       }

Modified: manifoldcf/branches/CONNECTORS-703/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_en_US.properties
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_en_US.properties?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_en_US.properties (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_en_US.properties Fri Jun 28 14:56:16 2013
@@ -180,7 +180,8 @@ editauthority.Type=Type
 editauthority.Throttling=Throttling
 editauthority.EditAuthorityConnection=Edit Authority Connection
 editauthority.Prerequisites=Prerequisites
-editauthority.PrerequisiteUserMappingsColon=Prerequisite user mappings:
+editauthority.PrerequisiteUserMappingColon=Prerequisite user mapping:
+editauthority.NoPrerequisites=-- No Prerequisites --
 
 editmapper.ApacheManifoldCFEditMapping=Apache ManifoldCF: Edit Mapping
 editmapper.EditAMapping=Edit A Mapping
@@ -206,7 +207,8 @@ editmapper.Type=Type
 editmapper.Throttling=Throttling
 editmapper.EditMappingConnection=Edit Mapping Connection
 editmapper.Prerequisites=Prerequisites
-editmapper.PrerequisiteUserMappingsColon=Prerequisite user mappings:
+editmapper.PrerequisiteUserMappingColon=Prerequisite user mapping:
+editmapper.NoPrerequisites=-- No Prerequisites --
 
 listconnections.ApacheManifoldCFListConnections=Apache ManifoldCF: List Connections
 listconnections.ListOfRepositoryConnections=List of Repository Connections
@@ -818,7 +820,7 @@ viewauthority.Connectorisnotinstalled=Co
 viewauthority.uninstalled=(uninstalled)
 viewauthority.Threwexception=Threw exception:
 viewauthority.qmark=?
-viewauthority.PrerequisiteUserMappingsColon=Prerequisite user mappings:
+viewauthority.PrerequisiteUserMappingColon=Prerequisite user mapping:
 viewauthority.NoPrerequisites=No prerequisites
 
 viewmapper.ApacheManifoldCFViewMappingConnectionStatus=Apache ManifoldCF: View Mapping Connection Status
@@ -838,5 +840,5 @@ viewmapper.EditThisMappingConnection=Edi
 viewmapper.Delete=Delete
 viewmapper.DeleteThisMappingConnection=Delete this mapping connection
 viewmapper.qmark=?
-viewmapper.PrerequisiteUserMappingsColon=Prerequisite user mappings:
+viewmapper.PrerequisiteUserMappingColon=Prerequisite user mapping:
 viewmapper.NoPrerequisites=No prerequisites

Modified: manifoldcf/branches/CONNECTORS-703/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_ja_JP.properties
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-703/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_ja_JP.properties?rev=1497799&r1=1497798&r2=1497799&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-703/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_ja_JP.properties (original)
+++ manifoldcf/branches/CONNECTORS-703/framework/ui-core/src/main/native2ascii/org/apache/manifoldcf/ui/i18n/common_ja_JP.properties Fri Jun 28 14:56:16 2013
@@ -180,7 +180,8 @@ editauthority.Type=タイプ
 editauthority.Throttling=スロットリング
 editauthority.EditAuthorityConnection=Edit Authority Connection
 editauthority.Prerequisites=Prerequisites
-editauthority.PrerequisiteUserMappingsColon=Prerequisite user mappings:
+editauthority.PrerequisiteUserMappingColon=Prerequisite user mapping:
+editauthority.NoPrerequisites=-- No Prerequisites --
 
 editmapper.ApacheManifoldCFEditMapping=Apache ManifoldCF: Edit Mapping
 editmapper.EditAMapping=Edit A Mapping
@@ -206,7 +207,8 @@ editmapper.Type=Type
 editmapper.Throttling=Throttling
 editmapper.EditMappingConnection=Edit Mapping Connection
 editmapper.Prerequisites=Prerequisites
-editmapper.PrerequisiteUserMappingsColon=Prerequisite user mappings:
+editmapper.PrerequisiteUserMappingColon=Prerequisite user mapping:
+editmapper.NoPrerequisites=-- No Prerequisites --
 
 listconnections.ApacheManifoldCFListConnections=Apache ManifoldCF:コネクション一覧
 listconnections.ListOfRepositoryConnections=リポジトリコネクション一覧
@@ -819,7 +821,7 @@ viewauthority.Connectorisnotinstalled=Co
 viewauthority.uninstalled=(uninstalled)
 viewauthority.Threwexception=Threw exception:
 viewauthority.qmark=?
-viewauthority.PrerequisiteUserMappingsColon=Prerequisite user mappings:
+viewauthority.PrerequisiteUserMappingColon=Prerequisite user mapping:
 viewauthority.NoPrerequisites=No prerequisites
 
 viewmapper.ApacheManifoldCFViewMappingConnectionStatus=Apache ManifoldCF: View Mapping Connection Status
@@ -839,5 +841,5 @@ viewmapper.EditThisMappingConnection=Edi
 viewmapper.Delete=削除
 viewmapper.DeleteThisMappingConnection=Delete this mapping connection
 viewmapper.qmark=?
-viewmapper.PrerequisiteUserMappingsColon=Prerequisite user mappings:
+viewmapper.PrerequisiteUserMappingColon=Prerequisite user mapping:
 viewmapper.NoPrerequisites=No prerequisites