Author: kwright
Date: Mon Jul  1 09:10:23 2013
New Revision: 1498331

URL: http://svn.apache.org/r1498331
Log:
Handle case where mapping fails more elegantly.  Part of CONNECTORS-703.

Modified:
    
manifoldcf/trunk/framework/authority-servlet/src/main/java/org/apache/manifoldcf/authorityservlet/UserACLServlet.java
    
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/AuthCheckThread.java
    
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/MappingThread.java

Modified: 
manifoldcf/trunk/framework/authority-servlet/src/main/java/org/apache/manifoldcf/authorityservlet/UserACLServlet.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/framework/authority-servlet/src/main/java/org/apache/manifoldcf/authorityservlet/UserACLServlet.java?rev=1498331&r1=1498330&r2=1498331&view=diff
==============================================================================
--- 
manifoldcf/trunk/framework/authority-servlet/src/main/java/org/apache/manifoldcf/authorityservlet/UserACLServlet.java
 (original)
+++ 
manifoldcf/trunk/framework/authority-servlet/src/main/java/org/apache/manifoldcf/authorityservlet/UserACLServlet.java
 Mon Jul  1 09:10:23 2013
@@ -320,7 +320,14 @@ public class UserACLServlet extends Http
             return;
           }
 
-          if (reply.getResponseStatus() == 
AuthorizationResponse.RESPONSE_UNREACHABLE)
+          // A null reply means the same as USERNOTFOUND; it occurs because a 
user mapping failed somewhere.
+          if (reply == null)
+          {
+            if (Logging.authorityService.isDebugEnabled())
+              Logging.authorityService.debug("User '"+userID+"' mapping failed 
for authority '"+ar.getIdentifyingString()+"'");
+            
sb.append(USERNOTFOUND_VALUE).append(java.net.URLEncoder.encode(ar.getIdentifyingString(),"UTF-8")).append("\n");
+          }
+          else if (reply.getResponseStatus() == 
AuthorizationResponse.RESPONSE_UNREACHABLE)
           {
             Logging.authorityService.warn("Authority 
'"+ar.getIdentifyingString()+"' is unreachable for user '"+userID+"'");
             
sb.append(UNREACHABLE_VALUE).append(java.net.URLEncoder.encode(ar.getIdentifyingString(),"UTF-8")).append("\n");

Modified: 
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/AuthCheckThread.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/AuthCheckThread.java?rev=1498331&r1=1498330&r2=1498331&view=diff
==============================================================================
--- 
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/AuthCheckThread.java
 (original)
+++ 
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/AuthCheckThread.java
 Mon Jul  1 09:10:23 2013
@@ -72,55 +72,59 @@ public class AuthCheckThread extends Thr
         AuthorizationResponse response = null;
         Throwable exception = null;
 
-        try
+        // Grab an authorization response only if there's a user
+        if (theRequest.getUserID() != null)
         {
-          IAuthorityConnector connector = 
AuthorityConnectorFactory.grab(threadContext,
-            theRequest.getClassName(),
-            theRequest.getConfigurationParams(),
-            theRequest.getMaxConnections());
-          // If this is null, we MUST treat this as an "unauthorized" 
condition!!
-          // We signal that by setting the exception value.
           try
           {
-            if (connector == null)
-              exception = new ManifoldCFException("Authority connector 
"+theRequest.getClassName()+" is not registered.");
-            else
+            IAuthorityConnector connector = 
AuthorityConnectorFactory.grab(threadContext,
+              theRequest.getClassName(),
+              theRequest.getConfigurationParams(),
+              theRequest.getMaxConnections());
+            // If this is null, we MUST treat this as an "unauthorized" 
condition!!
+            // We signal that by setting the exception value.
+            try
             {
-              // Get the acl for the user
-              try
+              if (connector == null)
+                exception = new ManifoldCFException("Authority connector 
"+theRequest.getClassName()+" is not registered.");
+              else
               {
-                response = 
connector.getAuthorizationResponse(theRequest.getUserID());
-              }
-              catch (ManifoldCFException e)
-              {
-                if (e.getErrorCode() == ManifoldCFException.INTERRUPTED)
-                  throw e;
-                Logging.authorityService.warn("Authority error: 
"+e.getMessage(),e);
-                response = 
AuthorityConnectorFactory.getDefaultAuthorizationResponse(threadContext,theRequest.getClassName(),theRequest.getUserID());
-              }
+                // Get the acl for the user
+                try
+                {
+                  response = 
connector.getAuthorizationResponse(theRequest.getUserID());
+                }
+                catch (ManifoldCFException e)
+                {
+                  if (e.getErrorCode() == ManifoldCFException.INTERRUPTED)
+                    throw e;
+                  Logging.authorityService.warn("Authority error: 
"+e.getMessage(),e);
+                  response = 
AuthorityConnectorFactory.getDefaultAuthorizationResponse(threadContext,theRequest.getClassName(),theRequest.getUserID());
+                }
 
+              }
+            }
+            finally
+            {
+              AuthorityConnectorFactory.release(connector);
             }
           }
-          finally
+          catch (ManifoldCFException e)
           {
-            AuthorityConnectorFactory.release(connector);
+            if (e.getErrorCode() == ManifoldCFException.INTERRUPTED)
+              throw e;
+            Logging.authorityService.warn("Authority connection exception: 
"+e.getMessage(),e);
+            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);
+            response = 
AuthorityConnectorFactory.getDefaultAuthorizationResponse(threadContext,theRequest.getClassName(),theRequest.getUserID());
+            if (response == null)
+              exception = e;
           }
-        }
-        catch (ManifoldCFException e)
-        {
-          if (e.getErrorCode() == ManifoldCFException.INTERRUPTED)
-            throw e;
-          Logging.authorityService.warn("Authority connection exception: 
"+e.getMessage(),e);
-          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);
-          response = 
AuthorityConnectorFactory.getDefaultAuthorizationResponse(threadContext,theRequest.getClassName(),theRequest.getUserID());
-          if (response == null)
-            exception = e;
         }
 
         // The request is complete

Modified: 
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/MappingThread.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/MappingThread.java?rev=1498331&r1=1498330&r2=1498331&view=diff
==============================================================================
--- 
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/MappingThread.java
 (original)
+++ 
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/MappingThread.java
 Mon Jul  1 09:10:23 2013
@@ -71,48 +71,52 @@ public class MappingThread extends Threa
        String outputUserID = null;
         Throwable exception = null;
 
-        try
+        // Only try a mapping if we have a user to map...
+        if (theRequest.getUserID() != null)
         {
-          IMappingConnector connector = 
MappingConnectorFactory.grab(threadContext,
-            theRequest.getClassName(),
-            theRequest.getConfigurationParams(),
-            theRequest.getMaxConnections());
           try
           {
-            if (connector == null)
-              exception = new ManifoldCFException("Mapping connector 
"+theRequest.getClassName()+" is not registered.");
-            else
+            IMappingConnector connector = 
MappingConnectorFactory.grab(threadContext,
+              theRequest.getClassName(),
+              theRequest.getConfigurationParams(),
+              theRequest.getMaxConnections());
+            try
             {
-              // Do the mapping
-              try
+              if (connector == null)
+                exception = new ManifoldCFException("Mapping connector 
"+theRequest.getClassName()+" is not registered.");
+              else
               {
-                outputUserID = connector.mapUser(theRequest.getUserID());
-              }
-              catch (ManifoldCFException e)
-              {
-                if (e.getErrorCode() == ManifoldCFException.INTERRUPTED)
-                  throw e;
-                Logging.authorityService.warn("Mapping error: 
"+e.getMessage(),e);
-              }
+                // Do the mapping
+                try
+                {
+                  outputUserID = connector.mapUser(theRequest.getUserID());
+                }
+                catch (ManifoldCFException e)
+                {
+                  if (e.getErrorCode() == ManifoldCFException.INTERRUPTED)
+                    throw e;
+                  Logging.authorityService.warn("Mapping error: 
"+e.getMessage(),e);
+                }
 
+              }
+            }
+            finally
+            {
+              MappingConnectorFactory.release(connector);
             }
           }
-          finally
+          catch (ManifoldCFException e)
           {
-            MappingConnectorFactory.release(connector);
+            if (e.getErrorCode() == ManifoldCFException.INTERRUPTED)
+              throw e;
+            Logging.authorityService.warn("Mapping connection exception: 
"+e.getMessage(),e);
+            exception = e;
+          }
+          catch (Throwable e)
+          {
+            Logging.authorityService.warn("Mapping connection error: 
"+e.getMessage(),e);
+            exception = e;
           }
-        }
-        catch (ManifoldCFException e)
-        {
-          if (e.getErrorCode() == ManifoldCFException.INTERRUPTED)
-            throw e;
-          Logging.authorityService.warn("Mapping connection exception: 
"+e.getMessage(),e);
-          exception = e;
-        }
-        catch (Throwable e)
-        {
-          Logging.authorityService.warn("Mapping connection error: 
"+e.getMessage(),e);
-          exception = e;
         }
 
         // The request is complete


Reply via email to