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 2014/10/30 13:50:03 UTC

svn commit: r1635481 - /manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraRepositoryConnector.java

Author: kwright
Date: Thu Oct 30 12:50:02 2014
New Revision: 1635481

URL: http://svn.apache.org/r1635481
Log:
Fix CONNECTORS-1077 for jira connector

Modified:
    manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraRepositoryConnector.java

Modified: manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraRepositoryConnector.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraRepositoryConnector.java?rev=1635481&r1=1635480&r2=1635481&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraRepositoryConnector.java (original)
+++ manifoldcf/trunk/connectors/jira/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jira/JiraRepositoryConnector.java Thu Oct 30 12:50:02 2014
@@ -949,131 +949,146 @@ public class JiraRepositoryConnector ext
           continue;
         }
         Date rev = jiraFile.getUpdatedDate();
-        if (rev != null) {
-          StringBuilder sb = new StringBuilder();
-
-          if (acls == null) {
-            // Get acls from issue
-            List<String> users = getUsers(issueID);
-            aclsToUse = (String[])users.toArray(new String[0]);
-            java.util.Arrays.sort(aclsToUse);
-          } else {
-            aclsToUse = acls;
-          }
-          
-          // Acls
-          packList(sb,aclsToUse,'+');
-          if (aclsToUse.length > 0) {
-            sb.append('+');
-            pack(sb,defaultAuthorityDenyToken,'+');
-          } else
-            sb.append('-');
-          sb.append(rev.toString());
-          versionString = sb.toString();
-        } else {
+        if (rev == null) {
           //a jira document that doesn't contain versioning information will NEVER be processed.
           // I don't know what this means, and whether it can ever occur.
           activities.deleteDocument(documentIdentifier);
           continue;
         }
+        
+        StringBuilder sb = new StringBuilder();
 
-        if (activities.checkDocumentNeedsReindexing(documentIdentifier,versionString))
-        {
-          
-          long startTime = System.currentTimeMillis();
-          String errorCode = "FAILED";
-          String errorDesc = StringUtils.EMPTY;
-          Long fileSize = null;
+        if (acls == null) {
+          // Get acls from issue
+          List<String> users = getUsers(issueID);
+          aclsToUse = (String[])users.toArray(new String[0]);
+          java.util.Arrays.sort(aclsToUse);
+        } else {
+          aclsToUse = acls;
+        }
           
-          try {
-            if (Logging.connectors.isDebugEnabled()) {
-              Logging.connectors.debug("JIRA: Processing document identifier '"
-                  + documentIdentifier + "'");
-            }
+        // Acls
+        packList(sb,aclsToUse,'+');
+        if (aclsToUse.length > 0) {
+          sb.append('+');
+          pack(sb,defaultAuthorityDenyToken,'+');
+        } else
+          sb.append('-');
+        sb.append(rev.toString());
+        
+        versionString = sb.toString();
 
-            // Now do standard stuff
-              
-            String mimeType = "text/plain";
-            Date createdDate = jiraFile.getCreatedDate();
-            Date modifiedDate = jiraFile.getUpdatedDate();
-            String documentURI = composeDocumentURI(getBaseUrl(session), jiraFile.getKey());
+        if (activities.checkDocumentNeedsReindexing(documentIdentifier,versionString))
+          continue;
 
-            if (!activities.checkURLIndexable(documentURI))
-            {
-              activities.noDocument(documentIdentifier, versionString);
-              continue;
-            }
+        if (Logging.connectors.isDebugEnabled()) {
+          Logging.connectors.debug("JIRA: Processing document identifier '"
+              + documentIdentifier + "'");
+        }
+
+        long startTime = System.currentTimeMillis();
+        String errorCode = null;
+        String errorDesc = null;
+        Long fileSize = null;
+          
+        try {
+          // Now do standard stuff
             
-            if (!activities.checkMimeTypeIndexable(mimeType))
-            {
-              activities.noDocument(documentIdentifier, versionString);
-              continue;
-            }
+          String mimeType = "text/plain";
+          Date createdDate = jiraFile.getCreatedDate();
+          Date modifiedDate = jiraFile.getUpdatedDate();
+          String documentURI = composeDocumentURI(getBaseUrl(session), jiraFile.getKey());
+
+          if (!activities.checkURLIndexable(documentURI))
+          {
+            errorCode = activities.EXCLUDED_URL;
+            errorDesc = "Excluded because of URL ('"+documentURI+"')";
+            activities.noDocument(documentIdentifier, versionString);
+            continue;
+          }
             
-            if (!activities.checkDateIndexable(modifiedDate))
-            {
-              activities.noDocument(documentIdentifier, versionString);
-              continue;
-            }
+          if (!activities.checkMimeTypeIndexable(mimeType))
+          {
+            errorCode = activities.EXCLUDED_MIMETYPE;
+            errorDesc = "Excluded because of mime type ('"+mimeType+"')";
+            activities.noDocument(documentIdentifier, versionString);
+            continue;
+          }
+            
+          if (!activities.checkDateIndexable(modifiedDate))
+          {
+            errorCode = activities.EXCLUDED_DATE;
+            errorDesc = "Excluded because of date ("+modifiedDate+")";
+            activities.noDocument(documentIdentifier, versionString);
+            continue;
+          }
             
-            //otherwise process
-            RepositoryDocument rd = new RepositoryDocument();
+          //otherwise process
+          RepositoryDocument rd = new RepositoryDocument();
               
-            // Turn into acls and add into description
-            String[] denyAclsToUse;
-            if (aclsToUse.length > 0)
-              denyAclsToUse = new String[]{defaultAuthorityDenyToken};
-            else
-              denyAclsToUse = new String[0];
-            rd.setSecurity(RepositoryDocument.SECURITY_TYPE_DOCUMENT,aclsToUse,denyAclsToUse);
-
-            rd.setMimeType(mimeType);
-            if (createdDate != null)
-              rd.setCreatedDate(createdDate);
-            if (modifiedDate != null)
-              rd.setModifiedDate(modifiedDate);
+          // Turn into acls and add into description
+          String[] denyAclsToUse;
+          if (aclsToUse.length > 0)
+            denyAclsToUse = new String[]{defaultAuthorityDenyToken};
+          else
+            denyAclsToUse = new String[0];
+          rd.setSecurity(RepositoryDocument.SECURITY_TYPE_DOCUMENT,aclsToUse,denyAclsToUse);
+
+          rd.setMimeType(mimeType);
+          if (createdDate != null)
+            rd.setCreatedDate(createdDate);
+          if (modifiedDate != null)
+            rd.setModifiedDate(modifiedDate);
             
-            rd.addField("key", jiraFile.getKey());
-            rd.addField("self", jiraFile.getSelf());
-            rd.addField("description", jiraFile.getDescription());
+          rd.addField("key", jiraFile.getKey());
+          rd.addField("self", jiraFile.getSelf());
+          rd.addField("description", jiraFile.getDescription());
 
-            // Get general document metadata
-            Map<String,String[]> metadataMap = jiraFile.getMetadata();
+          // Get general document metadata
+          Map<String,String[]> metadataMap = jiraFile.getMetadata();
               
-            for (Entry<String, String[]> entry : metadataMap.entrySet()) {
-              rd.addField(entry.getKey(), entry.getValue());
-            }
+          for (Entry<String, String[]> entry : metadataMap.entrySet()) {
+            rd.addField(entry.getKey(), entry.getValue());
+          }
 
-            String document = getJiraBody(jiraFile);
-            try {
-              byte[] documentBytes = document.getBytes(StandardCharsets.UTF_8);
-              long fileLength = documentBytes.length;
+          String document = getJiraBody(jiraFile);
+          try {
+            byte[] documentBytes = document.getBytes(StandardCharsets.UTF_8);
+            long fileLength = documentBytes.length;
               
-              if (!activities.checkLengthIndexable(fileLength))
-              {
-                activities.noDocument(documentIdentifier, versionString);
-                continue;
-              }
+            if (!activities.checkLengthIndexable(fileLength))
+            {
+              errorCode = activities.EXCLUDED_LENGTH;
+              errorDesc = "Excluded because of document length ("+fileLength+")";
+              activities.noDocument(documentIdentifier, versionString);
+              continue;
+            }
                 
-              InputStream is = new ByteArrayInputStream(documentBytes);
-              try {
-                rd.setBinary(is, fileLength);
-                activities.ingestDocumentWithException(documentIdentifier, versionString, documentURI, rd);
-                // No errors.  Record the fact that we made it.
-                errorCode = "OK";
-                fileSize = new Long(documentBytes.length);
-              } finally {
-                is.close();
-              }
-            } catch (java.io.IOException e) {
-              handleIOException(e);
+            InputStream is = new ByteArrayInputStream(documentBytes);
+            try {
+              rd.setBinary(is, fileLength);
+              activities.ingestDocumentWithException(documentIdentifier, versionString, documentURI, rd);
+              // No errors.  Record the fact that we made it.
+              errorCode = "OK";
+              fileSize = new Long(fileLength);
+            } finally {
+              is.close();
             }
-          } finally {
+          } catch (java.io.IOException e) {
+            errorCode = e.getClass().getSimpleName().toUpperCase(Locale.ROOT);
+            errorDesc = e.getMessage();
+            handleIOException(e);
+          }
+        } catch (ManifoldCFException e) {
+          if (e.getErrorCode() == ManifoldCFException.INTERRUPTED)
+            errorCode = null;
+          throw e;
+        } finally {
+          if (errorCode != null)
             activities.recordActivity(new Long(startTime), ACTIVITY_READ,
               fileSize, documentIdentifier, errorCode, errorDesc, null);
-          }
-
         }
+
       } else {
         // Unrecognized identifier type
         activities.deleteDocument(documentIdentifier);