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/16 12:49:29 UTC
svn commit: r1215099 - in /incubator/lcf/trunk: ./
connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/
Author: piergiorgio
Date: Fri Dec 16 11:49:28 2011
New Revision: 1215099
URL: http://svn.apache.org/viewvc?rev=1215099&view=rev
Log:
(CONNECTORS-325): Adeguate the content identifier with the Alfresco node reference
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/Constants.java
incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/ContentModelUtils.java
incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/ContentReader.java
incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/NodeUtils.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/java/org/apache/manifoldcf/crawler/connectors/alfresco/SearchUtils.java
Modified: incubator/lcf/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/CHANGES.txt?rev=1215099&r1=1215098&r2=1215099&view=diff
==============================================================================
--- incubator/lcf/trunk/CHANGES.txt (original)
+++ incubator/lcf/trunk/CHANGES.txt Fri Dec 16 11:49:28 2011
@@ -3,6 +3,9 @@ $Id$
======================= 0.5-dev =====================
+CONNECTORS-325: Adeguate the content identifier with the Alfresco node reference
+(Piergiorgio Lucidi)
+
CONNECTORS-324: Maven build broken
(Piergiorgio Lucidi)
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=1215099&r1=1215098&r2=1215099&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 Fri Dec 16 11:49:28 2011
@@ -1,3 +1,6 @@
+/* $Id$ */
+
+
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
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=1215099&r1=1215098&r2=1215099&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 Fri Dec 16 11:49:28 2011
@@ -1,4 +1,7 @@
+/* $Id$ */
+
/**
+
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
@@ -149,7 +152,7 @@ public class AlfrescoRepositoryConnector
*/
@Override
public String[] getBinNames(String documentIdentifier) {
- return new String[] { protocol+"://"+server+":"+port+path };
+ return new String[] { protocol+"://"+server+":"+port+"/"+path };
}
/**
@@ -373,10 +376,11 @@ public class AlfrescoRepositoryConnector
ResultSet resultSet = queryResult.getResultSet();
ResultSetRow[] resultSetRows = resultSet.getRows();
for (ResultSetRow resultSetRow : resultSetRows) {
- activities.addSeedDocument(resultSetRow.getNode().getId());
+ NamedValue[] properties = resultSetRow.getColumns();
+ String nodeReference = PropertiesUtils.getNodeReference(properties);
+ activities.addSeedDocument(nodeReference);
+ }
}
- }
-
}
/** Get the maximum number of documents to amalgamate together into one batch, for this connector.
@@ -805,15 +809,16 @@ public class AlfrescoRepositoryConnector
while (i < documentIdentifiers.length) {
long startTime = System.currentTimeMillis();
- String nodeId = documentIdentifiers[i];
+ String nodeReference = documentIdentifiers[i];
+ String uuid = NodeUtils.getUuidFromNodeReference(nodeReference);
if (Logging.connectors.isDebugEnabled())
Logging.connectors.debug("Alfresco: Processing document identifier '"
- + nodeId + "'");
+ + nodeReference + "'");
Reference reference = new Reference();
reference.setStore(SearchUtils.STORE);
- reference.setUuid(nodeId);
+ reference.setUuid(uuid);
Predicate predicate = new Predicate();
predicate.setStore(SearchUtils.STORE);
@@ -837,9 +842,9 @@ public class AlfrescoRepositoryConnector
ResultSet resultSet = queryResult.getResultSet();
ResultSetRow[] resultSetRows = resultSet.getRows();
for (ResultSetRow resultSetRow : resultSetRows) {
- String childNodeId = resultSetRow.getNode().getId();
- activities.addDocumentReference(childNodeId, nodeId,
- RELATIONSHIP_CHILD);
+ NamedValue[] childProperties = resultSetRow.getColumns();
+ String childNodeReference = PropertiesUtils.getNodeReference(childProperties);
+ activities.addDocumentReference(childNodeReference, nodeReference, RELATIONSHIP_CHILD);
}
}
@@ -885,7 +890,7 @@ public class AlfrescoRepositoryConnector
session = null;
activities.recordActivity(new Long(startTime), ACTIVITY_READ,
- fileLength, nodeId, errorCode, errorDesc, null);
+ fileLength, nodeReference, errorCode, errorDesc, null);
}
}
@@ -912,20 +917,24 @@ public class AlfrescoRepositoryConnector
String[] rval = new String[documentIdentifiers.length];
int i = 0;
while (i < rval.length){
+ String nodeReference = documentIdentifiers[i];
+ String uuid = NodeUtils.getUuidFromNodeReference(nodeReference);
+
Reference reference = new Reference();
reference.setStore(SearchUtils.STORE);
- reference.setUuid(documentIdentifiers[i]);
+ reference.setUuid(uuid);
Predicate predicate = new Predicate();
predicate.setStore(SearchUtils.STORE);
predicate.setNodes(new Reference[]{reference});
Node node = NodeUtils.get(username, password, session, predicate);
- boolean isDocument = ContentModelUtils.isDocument(node.getProperties());
+ NamedValue[] properties = node.getProperties();
+ boolean isDocument = ContentModelUtils.isDocument(properties);
if(isDocument){
boolean isVersioned = NodeUtils.isVersioned(node.getAspects());
if(isVersioned){
- rval[i] = NodeUtils.getVersionLabel(node.getProperties());
+ rval[i] = NodeUtils.getVersionLabel(properties);
} else {
//a document that doesn't contain versioning information will always be processed
rval[i] = StringUtils.EMPTY;
Modified: incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/Constants.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/Constants.java?rev=1215099&r1=1215098&r2=1215099&view=diff
==============================================================================
--- incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/Constants.java (original)
+++ incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/Constants.java Fri Dec 16 11:49:28 2011
@@ -1,3 +1,6 @@
+/* $Id$ */
+
+
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -16,8 +19,12 @@
*/
package org.apache.manifoldcf.crawler.connectors.alfresco;
+
public class Constants extends org.alfresco.webservice.util.Constants {
public static final String PROP_VERSION_LABEL = createQNameString(NAMESPACE_CONTENT_MODEL, "versionLabel");
-
+ public static final String PROP_NODE_UUID = createQNameString(NAMESPACE_SYSTEM_MODEL, "node-uuid");
+ public static final String PROP_STORE_PROTOCOL = createQNameString(NAMESPACE_SYSTEM_MODEL, "store-protocol");
+ public static final String PROP_STORE_ID = createQNameString(NAMESPACE_SYSTEM_MODEL, "store-identifier");
+
}
Modified: incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/ContentModelUtils.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/ContentModelUtils.java?rev=1215099&r1=1215098&r2=1215099&view=diff
==============================================================================
--- incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/ContentModelUtils.java (original)
+++ incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/ContentModelUtils.java Fri Dec 16 11:49:28 2011
@@ -1,3 +1,5 @@
+/* $Id$ */
+
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
Modified: incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/ContentReader.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/ContentReader.java?rev=1215099&r1=1215098&r2=1215099&view=diff
==============================================================================
--- incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/ContentReader.java (original)
+++ incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/ContentReader.java Fri Dec 16 11:49:28 2011
@@ -1,3 +1,5 @@
+/* $Id$ */
+
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
Modified: incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/NodeUtils.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/NodeUtils.java?rev=1215099&r1=1215098&r2=1215099&view=diff
==============================================================================
--- incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/NodeUtils.java (original)
+++ incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/NodeUtils.java Fri Dec 16 11:49:28 2011
@@ -1,3 +1,5 @@
+/* $Id$ */
+
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -28,8 +30,25 @@ import org.alfresco.webservice.util.WebS
import org.apache.commons.lang.StringUtils;
import org.apache.manifoldcf.crawler.system.Logging;
+/**
+ *
+ * This is an utility class dedicated to the Alfresco Node Web Services API
+ *
+ */
public class NodeUtils {
+
+ /** the splitter character to split the node reference */
+ private static final String NODE_REFERENCE_SPLIT = "/";
+ /**
+ * Retrieve a specific instance of a content required in the predicate object
+ *
+ * @param username
+ * @param password
+ * @param session
+ * @param predicate
+ * @return the Node object instance of the current content
+ */
public static Node get(String username, String password, AuthenticationDetails session, Predicate predicate){
Node[] resultNodes = null;
try {
@@ -56,6 +75,11 @@ public class NodeUtils {
}
}
+ /**
+ *
+ * @param aspects
+ * @return TRUE if the current node is versioned, otherwise FALSE
+ */
public static boolean isVersioned(String[] aspects){
for (String aspect : aspects) {
if(Constants.ASPECT_VERSIONABLE.equals(aspect)){
@@ -65,6 +89,11 @@ public class NodeUtils {
return false;
}
+ /**
+ *
+ * @param properties
+ * @return the version label for the current node
+ */
public static String getVersionLabel(NamedValue[] properties){
for (NamedValue property : properties) {
if(property.getName().equals(Constants.PROP_VERSION_LABEL)){
@@ -74,4 +103,20 @@ public class NodeUtils {
return StringUtils.EMPTY;
}
+ /**
+ * Build the UUID starting from the Alfresco node reference
+ * @param nodeReference
+ * @return the UUID for the current node
+ */
+ public static String getUuidFromNodeReference(String nodeReference){
+ String uuid = StringUtils.EMPTY;
+ String[] nodeReferenceSplitted = StringUtils.split(nodeReference, NODE_REFERENCE_SPLIT);
+ if(nodeReferenceSplitted!=null
+ && nodeReferenceSplitted.length>2
+ && StringUtils.isNotEmpty(nodeReferenceSplitted[2])){
+ uuid = nodeReferenceSplitted[2];
+ }
+ return uuid;
+ }
+
}
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=1215099&r1=1215098&r2=1215099&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 Fri Dec 16 11:49:28 2011
@@ -1,3 +1,5 @@
+/* $Id$ */
+
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -80,7 +82,35 @@ public class PropertiesUtils {
}
}
return contentProperties;
-
+ }
+
+ /**
+ * Build the Alfresco node identifier
+ * @param properties
+ * @return the node reference for the current document
+ */
+ public static String getNodeReference(NamedValue[] properties){
+ String nodeReference = StringUtils.EMPTY;
+ String storeProtocol = StringUtils.EMPTY;
+ String storeId = StringUtils.EMPTY;
+ String uuid = StringUtils.EMPTY;
+ if(properties!=null){
+ for (NamedValue property : properties) {
+ if(Constants.PROP_STORE_PROTOCOL.equals(property.getName())){
+ storeProtocol = property.getValue();
+ } else if(Constants.PROP_STORE_ID.equals(property.getName())){
+ storeId = property.getValue();
+ } else if(Constants.PROP_NODE_UUID.equals(property.getName())){
+ uuid = property.getValue();
+ }
+ }
+ }
+ if(StringUtils.isNotEmpty(storeProtocol)
+ && StringUtils.isNotEmpty(storeId)
+ && StringUtils.isNotEmpty(uuid)) {
+ nodeReference = storeProtocol+"://"+storeId+"/"+uuid;
+ }
+ return nodeReference;
}
}
Modified: incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/SearchUtils.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/SearchUtils.java?rev=1215099&r1=1215098&r2=1215099&view=diff
==============================================================================
--- incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/SearchUtils.java (original)
+++ incubator/lcf/trunk/connectors/alfresco/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/alfresco/SearchUtils.java Fri Dec 16 11:49:28 2011
@@ -1,3 +1,5 @@
+/* $Id$ */
+
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with