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 2017/02/08 16:49:36 UTC
svn commit: r1782217 - in /manifoldcf/trunk: CHANGES.txt
framework/agents/src/main/java/org/apache/manifoldcf/agents/interfaces/RepositoryDocument.java
Author: kwright
Date: Wed Feb 8 16:49:35 2017
New Revision: 1782217
URL: http://svn.apache.org/viewvc?rev=1782217&view=rev
Log:
Fix for CONNECTORS-1372.
Modified:
manifoldcf/trunk/CHANGES.txt
manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/interfaces/RepositoryDocument.java
Modified: manifoldcf/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/CHANGES.txt?rev=1782217&r1=1782216&r2=1782217&view=diff
==============================================================================
--- manifoldcf/trunk/CHANGES.txt (original)
+++ manifoldcf/trunk/CHANGES.txt Wed Feb 8 16:49:35 2017
@@ -3,6 +3,11 @@ $Id$
======================= 2.7-dev =====================
+CONNECTORS-1372: Bizarre errors while reading data out of a RepositoryDocument
+in some cases. This was due to the implicit conversion of Readers to
+Strings.
+(Karl Wright)
+
CONNECTORS-1375: Add email attachment support, done as separate
documents.
(Cihad Guzel, Karl Wright)
Modified: manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/interfaces/RepositoryDocument.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/interfaces/RepositoryDocument.java?rev=1782217&r1=1782216&r2=1782217&view=diff
==============================================================================
--- manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/interfaces/RepositoryDocument.java (original)
+++ manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/interfaces/RepositoryDocument.java Wed Feb 8 16:49:35 2017
@@ -46,6 +46,7 @@ public class RepositoryDocument
// Member variables.
protected InputStream binaryFieldData = null;
protected long binaryLength = 0;
+ protected final Set<String> fieldSet = new HashSet<String>(); // MUST be independent of fields map because we iterate over this and may change fields
protected final Map<String,Object> fields = new HashMap<String,Object>();
protected final Map<String,String[]> stringFields = new HashMap<String,String[]>();
protected final Map<String,Reader[]> readerFields = new HashMap<String,Reader[]>();
@@ -81,6 +82,10 @@ public class RepositoryDocument
rval.modifiedDate = modifiedDate;
rval.indexingDate = indexingDate;
rval.originalSize = originalSize;
+ for (String key : fieldSet)
+ {
+ rval.fieldSet.add(key);
+ }
for (String key : fields.keySet())
{
rval.fields.put(key,fields.get(key));
@@ -332,6 +337,7 @@ public class RepositoryDocument
*/
public void removeField(String fieldName)
{
+ fieldSet.remove(fieldName);
fields.remove(fieldName);
stringFields.remove(fieldName);
readerFields.remove(fieldName);
@@ -348,6 +354,7 @@ public class RepositoryDocument
{
if (fieldData == null)
{
+ fieldSet.remove(fieldName);
fields.remove(fieldName);
stringFields.remove(fieldName);
readerFields.remove(fieldName);
@@ -355,6 +362,7 @@ public class RepositoryDocument
}
else
{
+ fieldSet.add(fieldName);
fields.put(fieldName,fieldData);
stringFields.remove(fieldName);
readerFields.remove(fieldName);
@@ -388,6 +396,7 @@ public class RepositoryDocument
{
if (fieldData == null)
{
+ fieldSet.remove(fieldName);
fields.remove(fieldName);
stringFields.remove(fieldName);
readerFields.remove(fieldName);
@@ -395,6 +404,7 @@ public class RepositoryDocument
}
else
{
+ fieldSet.add(fieldName);
fields.put(fieldName,fieldData);
stringFields.remove(fieldName);
readerFields.put(fieldName,fieldData);
@@ -428,6 +438,7 @@ public class RepositoryDocument
{
if (fieldData == null)
{
+ fieldSet.remove(fieldName);
fields.remove(fieldName);
stringFields.remove(fieldName);
readerFields.remove(fieldName);
@@ -435,6 +446,7 @@ public class RepositoryDocument
}
else
{
+ fieldSet.add(fieldName);
fields.put(fieldName,fieldData);
readerFields.remove(fieldName);
stringFields.put(fieldName,fieldData);
@@ -568,14 +580,14 @@ public class RepositoryDocument
*/
public int fieldCount()
{
- return fields.size();
+ return fieldSet.size();
}
/** Iterate through the field name Strings.
*/
public Iterator<String> getFields()
{
- return fields.keySet().iterator();
+ return fieldSet.iterator();
}
/** This class describes allow and deny tokens for a specific security class. */