You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by rh...@apache.org on 2015/03/13 09:26:02 UTC
svn commit: r1666371 - in
/manifoldcf/branches/CONNECTORS-1168/connectors/searchblox: ./
connector/src/main/java/org/apache/manifoldcf/agents/output/searchblox/
connector/src/test/java/org/apache/manifoldcf/agents/output/searchblox/tests/
Author: rharo
Date: Fri Mar 13 08:26:02 2015
New Revision: 1666371
URL: http://svn.apache.org/r1666371
Log:
Updated SearchBlox Document Test and Fixed Bug for deletion
Modified:
manifoldcf/branches/CONNECTORS-1168/connectors/searchblox/connector/src/main/java/org/apache/manifoldcf/agents/output/searchblox/SearchBloxDocument.java
manifoldcf/branches/CONNECTORS-1168/connectors/searchblox/connector/src/test/java/org/apache/manifoldcf/agents/output/searchblox/tests/SearchBloxDocumentTest.java
manifoldcf/branches/CONNECTORS-1168/connectors/searchblox/pom.xml
Modified: manifoldcf/branches/CONNECTORS-1168/connectors/searchblox/connector/src/main/java/org/apache/manifoldcf/agents/output/searchblox/SearchBloxDocument.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1168/connectors/searchblox/connector/src/main/java/org/apache/manifoldcf/agents/output/searchblox/SearchBloxDocument.java?rev=1666371&r1=1666370&r2=1666371&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1168/connectors/searchblox/connector/src/main/java/org/apache/manifoldcf/agents/output/searchblox/SearchBloxDocument.java (original)
+++ manifoldcf/branches/CONNECTORS-1168/connectors/searchblox/connector/src/main/java/org/apache/manifoldcf/agents/output/searchblox/SearchBloxDocument.java Fri Mar 13 08:26:02 2015
@@ -60,14 +60,13 @@ public class SearchBloxDocument {
ADD_UPDATE, DELETE, STATUS, CREATE, CLEAR
}
static final List<String> xmlElements= Lists.newArrayList("searchblox","document","url","title","keywords","content","description","lastmodified","size",
- "alpha","contenttype","category","meta","acl","uid");
+ "alpha","contenttype","category","meta","uid");
static final String COLNAME_ATTRIBUTE = "colname";
static final String APIKEY_ATTRIBUTE = "apikey";
static final String NAME_ATTRIBUTE = "name";
- static final String LOCATION_ATTRIBUTE = "location";
+ static final String UID_ATTRIBUTE = "uid";
static final String BOOST_ATTRIBUTE = "boost";
- static final String ACL_TYPE_ATTRIBUTE = "boost";
private Multimap<String, Object> data_fields = HashMultimap.create();
@@ -151,21 +150,20 @@ public class SearchBloxDocument {
+ name, e);
}
}
- data_fields.put(xmlElements.get(12), metadata);
- // ACLS
- Multimap<String, String> acls = HashMultimap.create();
+ // ACLS must be stored as metadata, as Searchblox use that construct to index custom named fields
+ //the approach has been implemented and tested live
Iterator<String> aclTypes = rd.securityTypesIterator();
while (aclTypes.hasNext()) {
String aclType = aclTypes.next();
- String[] tokens = rd.getSecurityACL(aclType);
- for (String token : tokens)
- acls.put(aclType, token);
- tokens = rd.getSecurityDenyACL(aclType);
- for (String token : tokens)
- acls.put(aclType, token);
+ String[] allow_tokens = rd.getSecurityACL(aclType);
+ for (String token : allow_tokens)
+ metadata.put(aclType+"_allow", token);
+ String[] deny_tokens = rd.getSecurityDenyACL(aclType);
+ for (String token : deny_tokens)
+ metadata.put(aclType+"_deny", token);
}
- data_fields.put(xmlElements.get(13), acls);
+ data_fields.put(xmlElements.get(12), metadata);
}
/**
@@ -208,26 +206,20 @@ public class SearchBloxDocument {
throw new SearchBloxException(
"The Collection Name of the SearchBlox Server CAN'T be NULL");
document.setAttribute(COLNAME_ATTRIBUTE, colName);
+ if(action == DocumentAction.DELETE)
+ document.setAttribute(UID_ATTRIBUTE,uid);
root.appendChild(document);
- // Uid
- if (uid != null && !uid.isEmpty()) {
- Element uidElement = doc.createElement(xmlElements.get(14));
- uidElement.setTextContent(uid);
- document.appendChild(uidElement);
- }
-
if (action == DocumentAction.ADD_UPDATE) {
- // Location
- Collection<Object> location = data_fields.get(LOCATION_ATTRIBUTE);
- if (location != null && !location.isEmpty()) {
- document.setAttribute(LOCATION_ATTRIBUTE, (String) location.iterator().next());
- }else{
- document.setAttribute(LOCATION_ATTRIBUTE, "");
- }
-
+ // Uid
+ if (uid != null && !uid.isEmpty()) {
+ Element uidElement = doc.createElement(xmlElements.get(13));
+ uidElement.setTextContent(uid);
+ document.appendChild(uidElement);
+ }
+
for(String element:xmlElements){
- if (!element.equals(xmlElements.get(12)) && !element.equals(xmlElements.get(13)) ) {
+ if (!element.equals(xmlElements.get(12))) {
Collection<Object> values = data_fields.get(element);
if (values!=null && values.size()>0) {
Object next = values.iterator()
@@ -252,12 +244,10 @@ public class SearchBloxDocument {
}
}
-
// Metadata
Collection<Object> metadataSet = data_fields
.get(xmlElements.get(12));
if(metadataSet!=null && metadataSet.size()>0){
- @SuppressWarnings("unchecked")
Multimap<String, String> metadata = (Multimap<String, String>) metadataSet.iterator().next();
if (metadata != null && !metadata.isEmpty()) {
for (String name : metadata.keySet())
@@ -268,22 +258,6 @@ public class SearchBloxDocument {
document.appendChild(metaElement);
}
} }
-
- // ACL
- Collection<Object> aclSet = data_fields
- .get(xmlElements.get(13));
- if(aclSet!=null &&aclSet.size()>0){
- @SuppressWarnings("unchecked")
- Multimap<String, String> acls = (Multimap<String, String>) aclSet.iterator().next();
- if (acls != null && !acls.isEmpty()) {
- for (String type : acls.keySet())
- for (String value : acls.get(type)) {
- Element aclElement = doc.createElement(xmlElements.get(13));
- aclElement.setAttribute(ACL_TYPE_ATTRIBUTE, type);
- aclElement.setTextContent(value);
- document.appendChild(aclElement);
- }
- } }
}
return getStringFromDocument(doc);
Modified: manifoldcf/branches/CONNECTORS-1168/connectors/searchblox/connector/src/test/java/org/apache/manifoldcf/agents/output/searchblox/tests/SearchBloxDocumentTest.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1168/connectors/searchblox/connector/src/test/java/org/apache/manifoldcf/agents/output/searchblox/tests/SearchBloxDocumentTest.java?rev=1666371&r1=1666370&r2=1666371&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1168/connectors/searchblox/connector/src/test/java/org/apache/manifoldcf/agents/output/searchblox/tests/SearchBloxDocumentTest.java (original)
+++ manifoldcf/branches/CONNECTORS-1168/connectors/searchblox/connector/src/test/java/org/apache/manifoldcf/agents/output/searchblox/tests/SearchBloxDocumentTest.java Fri Mar 13 08:26:02 2015
@@ -26,6 +26,7 @@ import org.apache.manifoldcf.agents.outp
import org.apache.manifoldcf.agents.output.searchblox.SearchBloxDocument.DocumentAction;
import org.apache.manifoldcf.agents.output.searchblox.SearchBloxDocument.IndexingFormat;
import org.apache.manifoldcf.agents.output.searchblox.SearchBloxException;
+import org.junit.Test;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
@@ -72,14 +73,41 @@ public class SearchBloxDocumentTest exte
realRepoDoc.addField("content","I am a nice content in english!");
realRepoDoc.addField("description","I am a little tiny description");
realRepoDoc.addField("meta1","I am META1!");
+ realRepoDoc.addField("meta2","I am META2!");
realRepoDoc.setMimeType("html");
realRepoDoc.setBinary(stream,100);
realRepoDoc.setCreatedDate(new Date(System.currentTimeMillis()));
+ realRepoDoc.setSecurityACL(RepositoryDocument.SECURITY_TYPE_SHARE,new String[]{"user1","user2","user3"});
+ realRepoDoc.setSecurityACL(RepositoryDocument.SECURITY_TYPE_DOCUMENT,new String[]{"user12","user22","user33"});
+ realRepoDoc.setSecurityDenyACL(RepositoryDocument.SECURITY_TYPE_SHARE, new String[]{"user4", "user5"});
+ realRepoDoc.setSecurityDenyACL(RepositoryDocument.SECURITY_TYPE_DOCUMENT, new String[]{"user42", "user52"});
+ //allowAttributeName + aclType
return realRepoDoc;
}
- public void testXmlString() throws SearchBloxException {
+ @Test
+ public void testUpdateXmlString() throws SearchBloxException {
String xmlGenerated=toTest.toString(IndexingFormat.XML, DocumentAction.ADD_UPDATE);
+ System.out.println(xmlGenerated);
+ String xmlExpected="<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
+ "<searchblox apikey=\"apikey\"><document colname=\"collection1\">" +
+ "<uid>URI</uid><title boost=\"1\">I am a nice title</title><content boost=\"2\">I am a nice content in english!</content>" +
+ "<description boost=\"4\">I am a little tiny description</description><size>100</size><contenttype>html</contenttype>" +
+ "<meta name=\"meta2\">I am META2!</meta><meta name=\"share_allow\">user3</meta>" +
+ "<meta name=\"share_allow\">user2</meta><meta name=\"share_allow\">user1</meta>" +
+ "<meta name=\"meta1\">I am META1!</meta><meta name=\"share_deny\">user4</meta>" +
+ "<meta name=\"share_deny\">user5</meta><meta name=\"document_deny\">user52</meta>" +
+ "<meta name=\"document_deny\">user42</meta><meta name=\"document_allow\">user22</meta>" +
+ "<meta name=\"document_allow\">user12</meta><meta name=\"document_allow\">user33</meta></document></searchblox>";
+ assertEquals(xmlExpected,xmlGenerated);
+ }
+
+ @Test
+ public void testDeleteXmlString() throws SearchBloxException {
+ String xmlGenerated=toTest.toString(IndexingFormat.XML, DocumentAction.DELETE);
+ System.out.println(xmlGenerated);
+ String xmlExpected="<?xml version=\"1.0\" encoding=\"UTF-8\"?><searchblox apikey=\"apikey\"><document colname=\"collection1\" uid=\"URI\"/></searchblox>";
+ assertEquals(xmlExpected,xmlGenerated);
}
}
Modified: manifoldcf/branches/CONNECTORS-1168/connectors/searchblox/pom.xml
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1168/connectors/searchblox/pom.xml?rev=1666371&r1=1666370&r2=1666371&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1168/connectors/searchblox/pom.xml (original)
+++ manifoldcf/branches/CONNECTORS-1168/connectors/searchblox/pom.xml Fri Mar 13 08:26:02 2015
@@ -6,7 +6,7 @@
<parent>
<groupId>org.apache.manifoldcf</groupId>
<artifactId>mcf-connectors</artifactId>
- <version>2.1-SNAPSHOT</version>
+ <version>2.0.2</version>
</parent>
<artifactId>mcf-searchblox-connector</artifactId>
@@ -298,6 +298,13 @@
<artifactId>guava</artifactId>
<version>15.0</version>
</dependency>
+
+ <dependency>
+ <!-- jsoup HTML parser library @ http://jsoup.org/ -->
+ <groupId>org.jsoup</groupId>
+ <artifactId>jsoup</artifactId>
+ <version>1.8.1</version>
+ </dependency>
<!-- Testing dependencies -->
@@ -454,11 +461,5 @@
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
</dependency>
- <dependency>
- <!-- jsoup HTML parser library @ http://jsoup.org/ -->
- <groupId>org.jsoup</groupId>
- <artifactId>jsoup</artifactId>
- <version>1.8.1</version>
- </dependency>
</dependencies>
</project>