You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by pi...@apache.org on 2011/12/31 17:30:14 UTC

svn commit: r1226128 - in /incubator/lcf/trunk: ./ connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/ connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/

Author: piergiorgio
Date: Sat Dec 31 16:30:14 2011
New Revision: 1226128

URL: http://svn.apache.org/viewvc?rev=1226128&view=rev
Log:
- added explicit support for Multi-Tenancy in the job configuration (CONNECTORS-328)
- content binary is not correctly read (CONNECTORS-349)

Modified:
    incubator/lcf/trunk/CHANGES.txt
    incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/AlfrescoConfig.java
    incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/AlfrescoRepositoryConnector.java
    incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/PropertiesUtils.java
    incubator/lcf/trunk/connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/editConfiguration_en_US.html
    incubator/lcf/trunk/connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/hiddenConfiguration_en_US.html
    incubator/lcf/trunk/connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/viewConfiguration_en_US.html

Modified: incubator/lcf/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/CHANGES.txt?rev=1226128&r1=1226127&r2=1226128&view=diff
==============================================================================
--- incubator/lcf/trunk/CHANGES.txt (original)
+++ incubator/lcf/trunk/CHANGES.txt Sat Dec 31 16:30:14 2011
@@ -3,6 +3,12 @@ $Id$
 
 ======================= 0.5-dev =====================
 
+CONNECTORS-328: added explicit support for Multi-Tenancy in the job configuration
+(Piergiorgio Lucidi)
+
+CONNECTORS-349: content binary is not correctly read
+(Piergiorgio Lucidi)
+
 CONNECTORS-337: Pay attention to -DskipIT for alfresco, cmis, and
 wiki tests on Maven build.
 (Karl Wright)

Modified: incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/AlfrescoConfig.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/AlfrescoConfig.java?rev=1226128&r1=1226127&r2=1226128&view=diff
==============================================================================
--- incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/AlfrescoConfig.java (original)
+++ incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/AlfrescoConfig.java Sat Dec 31 16:30:14 2011
@@ -24,27 +24,33 @@ package org.apache.manifoldcf.crawler.co
 */
 public class AlfrescoConfig {
 
-  /** Username */
+  /** Username parameter */
   public static final String USERNAME_PARAM = "username";
  
-  /** Password */
+  /** Password parameter */
   public static final String PASSWORD_PARAM = "password";
   
-  /** Protocol */
+  /** Protocol parameter */
   public static final String PROTOCOL_PARAM = "protocol";
   
-  /** Server name */
+  /** Server name parameter */
   public static final String SERVER_PARAM = "server";
   
-  /** Port */
+  /** Port parameter */
   public static final String PORT_PARAM = "port";
   
-  /** Path of the context of the Alfresco Web Services API */
+  /** Parameter for the path of the context of the Alfresco Web Services API */
   public static final String PATH_PARAM = "path";
   
   /** The Lucene Query parameter */
   public static final String LUCENE_QUERY_PARAM = "luceneQuery";
   
+  /** Tenant domain parameter (optional) */
+  public static final String TENANT_DOMAIN_PARAM = "tenantDomain";
+  
+  /** Separator for the username field dedicated to the tenant domain */
+  public static final String TENANT_DOMAIN_SEP = "@";
+  
   //default values
   public static final String USERNAME_DEFAULT_VALUE = "admin";
   public static final String PASSWORD_DEFAULT_VALUE = "admin";

Modified: incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/AlfrescoRepositoryConnector.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/AlfrescoRepositoryConnector.java?rev=1226128&r1=1226127&r2=1226128&view=diff
==============================================================================
--- incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/AlfrescoRepositoryConnector.java (original)
+++ incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/AlfrescoRepositoryConnector.java Sat Dec 31 16:30:14 2011
@@ -19,17 +19,14 @@
  */
 package org.apache.manifoldcf.crawler.connectors.alfresco;
 
-import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.io.InterruptedIOException;
-import java.io.UnsupportedEncodingException;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import java.util.HashMap;
 
 import org.alfresco.webservice.authentication.AuthenticationFault;
 import org.alfresco.webservice.content.Content;
@@ -44,7 +41,6 @@ import org.alfresco.webservice.util.Auth
 import org.alfresco.webservice.util.AuthenticationUtils;
 import org.alfresco.webservice.util.WebServiceException;
 import org.alfresco.webservice.util.WebServiceFactory;
-import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.manifoldcf.agents.interfaces.RepositoryDocument;
 import org.apache.manifoldcf.agents.interfaces.ServiceInterruption;
@@ -59,7 +55,6 @@ import org.apache.manifoldcf.crawler.int
 import org.apache.manifoldcf.crawler.interfaces.IProcessActivity;
 import org.apache.manifoldcf.crawler.interfaces.ISeedingActivity;
 import org.apache.manifoldcf.crawler.system.Logging;
-import org.apache.manifoldcf.ui.util.Encoder;
 
 public class AlfrescoRepositoryConnector extends BaseRepositoryConnector {
 
@@ -84,6 +79,9 @@ public class AlfrescoRepositoryConnector
   /** Endpoint context path of the Alfresco webapp */
   protected String path = null;
   
+  /** Alfresco Tenant domain */
+  protected String tenantDomain = null;
+  
   protected AuthenticationDetails session = null;
 
   protected static final long timeToRelease = 300000L;
@@ -175,6 +173,7 @@ public class AlfrescoRepositoryConnector
     server = null;
     port = null;
     path = null;
+    tenantDomain = null;
 
   }
 
@@ -192,6 +191,12 @@ public class AlfrescoRepositoryConnector
     server = params.getParameter(AlfrescoConfig.SERVER_PARAM);
     port = params.getParameter(AlfrescoConfig.PORT_PARAM);
     path = params.getParameter(AlfrescoConfig.PATH_PARAM);
+    tenantDomain = params.getParameter(AlfrescoConfig.TENANT_DOMAIN_PARAM);
+    
+    //tenant domain (optional parameter). Pattern: username@tenantDomain
+    if(StringUtils.isNotEmpty(tenantDomain)){
+      username += AlfrescoConfig.TENANT_DOMAIN_SEP + tenantDomain;
+    }
   }
 
   /** Test the connection.  Returns a string describing the connection integrity.
@@ -251,9 +256,9 @@ public class AlfrescoRepositoryConnector
       session = AuthenticationUtils.getAuthenticationDetails();
     } catch (AuthenticationFault e) {
       Logging.connectors.warn(
-          "Alfresco: Error during authentication. Username: "+username + ", endpoint: "+endpoint
+          "Alfresco: Error during authentication. Username: "+username + ", endpoint: "+endpoint+". "
               + e.getMessage(), e);
-      throw new ManifoldCFException("Alfresco: Error during authentication. Username: "+username + ", endpoint: "+endpoint
+      throw new ManifoldCFException("Alfresco: Error during authentication. Username: "+username + ", endpoint: "+endpoint+". "
           + e.getMessage(), e);
     } catch (WebServiceException e){
       Logging.connectors.warn(
@@ -473,7 +478,13 @@ public class AlfrescoRepositoryConnector
       parameters.setParameter(AlfrescoConfig.PATH_PARAM, AlfrescoConfig.PATH_DEFAULT_VALUE);
     }
     
+    String tenantDomain = parameters.getParameter(AlfrescoConfig.TENANT_DOMAIN_PARAM);
+    if (StringUtils.isEmpty(tenantDomain)){
+      parameters.setParameter(AlfrescoConfig.TENANT_DOMAIN_PARAM, StringUtils.EMPTY);
+    }
+
     outputResource(VIEW_CONFIG_FORWARD, out, locale, parameters);
+
   }
 
   /**
@@ -521,6 +532,7 @@ public class AlfrescoRepositoryConnector
     String server = parameters.getParameter(AlfrescoConfig.SERVER_PARAM);
     String port = parameters.getParameter(AlfrescoConfig.PORT_PARAM);
     String path = parameters.getParameter(AlfrescoConfig.PATH_PARAM);
+      String tenantDomain = parameters.getParameter(AlfrescoConfig.TENANT_DOMAIN_PARAM);
       
     if (username == null)
       username = "admin";
@@ -534,19 +546,24 @@ public class AlfrescoRepositoryConnector
       port = "8080";
     if (path == null)
       path = "/alfresco/api";
-  
-    ConfigParams newMap = new ConfigParams();
-    newMap.setParameter(AlfrescoConfig.USERNAME_PARAM, username);
-    newMap.setParameter(AlfrescoConfig.PASSWORD_PARAM, password);
-    newMap.setParameter(AlfrescoConfig.PROTOCOL_PARAM, protocol);
-    newMap.setParameter(AlfrescoConfig.SERVER_PARAM, server);
-    newMap.setParameter(AlfrescoConfig.PORT_PARAM, port);
-    newMap.setParameter(AlfrescoConfig.PATH_PARAM, path);
     
+    if(StringUtils.isEmpty(tenantDomain))
+      tenantDomain = StringUtils.EMPTY;
+  
+    parameters.setParameter(AlfrescoConfig.TENANT_DOMAIN_PARAM, tenantDomain);
+    parameters.setParameter(AlfrescoConfig.USERNAME_PARAM, username);
+    parameters.setParameter(AlfrescoConfig.PASSWORD_PARAM, password);
+    parameters.setParameter(AlfrescoConfig.PROTOCOL_PARAM, protocol);
+    parameters.setParameter(AlfrescoConfig.SERVER_PARAM, server);
+    parameters.setParameter(AlfrescoConfig.PORT_PARAM, port);
+    parameters.setParameter(AlfrescoConfig.PATH_PARAM, path);
+    parameters.setParameter(AlfrescoConfig.TENANT_DOMAIN_PARAM, tenantDomain);
+      
     if(ALFRESCO_SERVER_TAB_NAME.equals(tabName)){
-      outputResource(EDIT_CONFIG_FORWARD, out, locale, newMap);  
+      outputResource(EDIT_CONFIG_FORWARD, out, locale, parameters);  
+
     } else {
-      outputResource(HIDDEN_CONFIG_FORWARD, out, locale, newMap);
+      outputResource(HIDDEN_CONFIG_FORWARD, out, locale, parameters);
     }
   }
 
@@ -608,6 +625,14 @@ public class AlfrescoRepositoryConnector
     if (StringUtils.isNotEmpty(path)) {
       parameters.setParameter(AlfrescoConfig.PATH_PARAM, path);
     }
+    
+    String tenantDomain = variableContext.getParameter(AlfrescoConfig.TENANT_DOMAIN_PARAM);
+    if(StringUtils.isNotEmpty(tenantDomain)){
+      parameters.setParameter(AlfrescoConfig.TENANT_DOMAIN_PARAM, tenantDomain);
+    } else {
+      parameters.setParameter(AlfrescoConfig.TENANT_DOMAIN_PARAM, StringUtils.EMPTY);
+    }
+    
     return null;
   }
 
@@ -897,19 +922,21 @@ public class AlfrescoRepositoryConnector
       predicate.setNodes(new Reference[]{reference});
       
       Node node = NodeUtils.get(username, password, session, predicate);
-      NamedValue[] properties = node.getProperties();
-      boolean isDocument = ContentModelUtils.isDocument(properties);
-      if(isDocument){
-        boolean isVersioned = NodeUtils.isVersioned(node.getAspects());
-        if(isVersioned){
-          rval[i] = NodeUtils.getVersionLabel(properties);
+      if(node.getProperties()!=null){
+        NamedValue[] properties = node.getProperties();
+        boolean isDocument = ContentModelUtils.isDocument(properties);
+        if(isDocument){
+          boolean isVersioned = NodeUtils.isVersioned(node.getAspects());
+          if(isVersioned){
+            rval[i] = NodeUtils.getVersionLabel(properties);
+          } else {
+            //a document that doesn't contain versioning information will always be processed
+            rval[i] = StringUtils.EMPTY;
+          }
         } else {
-          //a document that doesn't contain versioning information will always be processed
+          //a space will always be processed
           rval[i] = StringUtils.EMPTY;
         }
-      } else {
-        //a space will always be processed
-        rval[i] = StringUtils.EMPTY;
       }
       i++;
     }

Modified: incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/PropertiesUtils.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/PropertiesUtils.java?rev=1226128&r1=1226127&r2=1226128&view=diff
==============================================================================
--- incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/PropertiesUtils.java (original)
+++ incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/PropertiesUtils.java Sat Dec 31 16:30:14 2011
@@ -28,7 +28,7 @@ import org.apache.manifoldcf.core.interf
 
 public class PropertiesUtils {
 
-  private static final String PROP_CONTENT_PREFIX = "ContentData";
+  private static final String PROP_CONTENT_PREFIX = "contentUrl";
   
   public static String[] getPropertyValues(NamedValue[]  properties, String qname){
     String[] propertyValues = null;

Modified: incubator/lcf/trunk/connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/editConfiguration_en_US.html
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/editConfiguration_en_US.html?rev=1226128&r1=1226127&r2=1226128&view=diff
==============================================================================
--- incubator/lcf/trunk/connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/editConfiguration_en_US.html (original)
+++ incubator/lcf/trunk/connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/editConfiguration_en_US.html Sat Dec 31 16:30:14 2011
@@ -22,6 +22,16 @@
 		</td>
 	</tr>
 	<tr>
+    <td class="description">
+      <nobr>
+        Tenant domain:
+      </nobr>
+    </td>
+    <td class="value">
+        <input id="tenantDomain" name="tenantDomain" type="text" size="32" value="${TENANTDOMAIN:A}" />
+    </td>
+  </tr>
+	<tr>
 		<td class="description">
 			<nobr>
 				Username:

Modified: incubator/lcf/trunk/connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/hiddenConfiguration_en_US.html
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/hiddenConfiguration_en_US.html?rev=1226128&r1=1226127&r2=1226128&view=diff
==============================================================================
--- incubator/lcf/trunk/connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/hiddenConfiguration_en_US.html (original)
+++ incubator/lcf/trunk/connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/hiddenConfiguration_en_US.html Sat Dec 31 16:30:14 2011
@@ -19,4 +19,5 @@
 <input type="hidden" name="protocol" value="${PROTOCOL:A}" />
 <input type="hidden" name="server" value="${SERVER:A}" />
 <input type="hidden" name="port" value="${PORT:A}" />
-<input type="hidden" name="path" value="${PATH:A}" />
\ No newline at end of file
+<input type="hidden" name="path" value="${PATH:A}" />
+<input type="hidden" name="tenantDomain" value="${TENANTDOMAIN:A}" />
\ No newline at end of file

Modified: incubator/lcf/trunk/connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/viewConfiguration_en_US.html
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/viewConfiguration_en_US.html?rev=1226128&r1=1226127&r2=1226128&view=diff
==============================================================================
--- incubator/lcf/trunk/connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/viewConfiguration_en_US.html (original)
+++ incubator/lcf/trunk/connectors/alfresco/connector/src/main/resource/org/apache/manifoldcf/crawler/connectors/alfresco/viewConfiguration_en_US.html Sat Dec 31 16:30:14 2011
@@ -23,6 +23,10 @@
 			</nobr>
 		</td>
 		<td class="value" colspan="3">
+		  <nobr>
+        tenantDomain=${TENANTDOMAIN:B}
+      </nobr>
+      <br />
 			<nobr>
 				username=${USERNAME:B}
 			</nobr>