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 2010/05/19 11:08:45 UTC

svn commit: r946090 - in /incubator/lcf/trunk/modules/connectors/solr: connector/org/apache/lcf/agents/output/solr/HttpPoster.java connector/org/apache/lcf/agents/output/solr/SolrConnector.java crawler-ui/output/solr/editconfig.jsp

Author: kwright
Date: Wed May 19 09:08:45 2010
New Revision: 946090

URL: http://svn.apache.org/viewvc?rev=946090&view=rev
Log:
Fix for ticket CONNECTORS-36.  Revamp the Solr connector argument handling to be completely general.

Modified:
    incubator/lcf/trunk/modules/connectors/solr/connector/org/apache/lcf/agents/output/solr/HttpPoster.java
    incubator/lcf/trunk/modules/connectors/solr/connector/org/apache/lcf/agents/output/solr/SolrConnector.java
    incubator/lcf/trunk/modules/connectors/solr/crawler-ui/output/solr/editconfig.jsp

Modified: incubator/lcf/trunk/modules/connectors/solr/connector/org/apache/lcf/agents/output/solr/HttpPoster.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/connectors/solr/connector/org/apache/lcf/agents/output/solr/HttpPoster.java?rev=946090&r1=946089&r2=946090&view=diff
==============================================================================
--- incubator/lcf/trunk/modules/connectors/solr/connector/org/apache/lcf/agents/output/solr/HttpPoster.java (original)
+++ incubator/lcf/trunk/modules/connectors/solr/connector/org/apache/lcf/agents/output/solr/HttpPoster.java Wed May 19 09:08:45 2010
@@ -164,7 +164,7 @@ public class HttpPoster
   * Post the input stream to ingest
   * @param documentURI is the document's uri.
   * @param document is the document structure to ingest.
-  * @param arguments are the configuration arguments to pass in the post.
+  * @param arguments are the configuration arguments to pass in the post.  Key is argument name, value is a list of the argument values.
   * @param authorityNameString is the name of the governing authority for this document's acls, or null if none.
   * @param activities is the activities object, so we can report what's happening.
   * @return true if the ingestion was successful, or false if the ingestion is illegal.
@@ -893,9 +893,6 @@ public class HttpPoster
 
       try
       {
-        // Build the URL in question.
-        // MHL
-
         // Do the operation!
         long fullStartTime = System.currentTimeMillis();
 
@@ -944,8 +941,13 @@ public class HttpPoster
                 while (iter.hasNext())
                 {
                   String name = (String)iter.next();
-                  String value = (String)arguments.get(name);
-                  totalLength += lengthField(name,value);
+                  List values = (List)arguments.get(name);
+                  int j = 0;
+                  while (j < values.size())
+                  {
+                    String value = (String)values.get(j++);
+                    totalLength += lengthField(name,value);
+                  }
                 }
                 // Count the metadata.
                 iter = document.getFields();
@@ -994,8 +996,13 @@ public class HttpPoster
                 while (iter.hasNext())
                 {
                   String name = (String)iter.next();
-                  String value = (String)arguments.get(name);
-                  writeField(out,name,value);
+                  List values = (List)arguments.get(name);
+                  int j = 0;
+                  while (j < values.size())
+                  {
+                    String value = (String)values.get(j++);
+                    writeField(out,name,value);
+                  }
                 }
 
                 // Write the metadata, each in a field by itself

Modified: incubator/lcf/trunk/modules/connectors/solr/connector/org/apache/lcf/agents/output/solr/SolrConnector.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/connectors/solr/connector/org/apache/lcf/agents/output/solr/SolrConnector.java?rev=946090&r1=946089&r2=946090&view=diff
==============================================================================
--- incubator/lcf/trunk/modules/connectors/solr/connector/org/apache/lcf/agents/output/solr/SolrConnector.java (original)
+++ incubator/lcf/trunk/modules/connectors/solr/connector/org/apache/lcf/agents/output/solr/SolrConnector.java Wed May 19 09:08:45 2010
@@ -174,7 +174,16 @@ public class SolrConnector extends org.a
     {
       ConfigNode node = params.getChild(i++);
       if (node.getType().equals(SolrConfig.NODE_ARGUMENT))
-        args.put(node.getAttributeValue(SolrConfig.ATTRIBUTE_NAME),node.getAttributeValue(SolrConfig.ATTRIBUTE_VALUE));
+      {
+        String attrName = node.getAttributeValue(SolrConfig.ATTRIBUTE_NAME);
+        ArrayList list = (ArrayList)args.get(attrName);
+        if (list == null)
+        {
+          list = new ArrayList();
+          args.put(attrName,list);
+        }
+        list.add(node.getAttributeValue(SolrConfig.ATTRIBUTE_VALUE));
+      }
     }
     
     String[] sortArray = new String[args.size()];
@@ -194,12 +203,17 @@ public class SolrConnector extends org.a
     while (i < sortArray.length)
     {
       String name = sortArray[i++];
-      String value = (String)args.get(name);
-      fixedList[0] = name;
-      fixedList[1] = value;
-      StringBuffer pairBuffer = new StringBuffer();
-      packFixedList(pairBuffer,fixedList,'=');
-      nameValues.add(pairBuffer.toString());
+      ArrayList values = (ArrayList)args.get(name);
+      int j = 0;
+      while (j < values.size())
+      {
+        String value = (String)values.get(j++);
+        fixedList[0] = name;
+        fixedList[1] = value;
+        StringBuffer pairBuffer = new StringBuffer();
+        packFixedList(pairBuffer,fixedList,'=');
+        nameValues.add(pairBuffer.toString());
+      }
     }
     
     StringBuffer sb = new StringBuffer();
@@ -233,7 +247,16 @@ public class SolrConnector extends org.a
     {
       ConfigNode node = params.getChild(i++);
       if (node.getType().equals(SolrConfig.NODE_ARGUMENT))
-        args.put(node.getAttributeValue(SolrConfig.ATTRIBUTE_NAME),node.getAttributeValue(SolrConfig.ATTRIBUTE_VALUE));
+      {
+        String attrName = node.getAttributeValue(SolrConfig.ATTRIBUTE_NAME);
+        ArrayList list = (ArrayList)args.get(attrName);
+        if (list == null)
+        {
+          list = new ArrayList();
+          args.put(attrName,list);
+        }
+        list.add(node.getAttributeValue(SolrConfig.ATTRIBUTE_VALUE));
+      }
     }
 
     // Establish a session

Modified: incubator/lcf/trunk/modules/connectors/solr/crawler-ui/output/solr/editconfig.jsp
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/connectors/solr/crawler-ui/output/solr/editconfig.jsp?rev=946090&r1=946089&r2=946090&view=diff
==============================================================================
--- incubator/lcf/trunk/modules/connectors/solr/crawler-ui/output/solr/editconfig.jsp (original)
+++ incubator/lcf/trunk/modules/connectors/solr/crawler-ui/output/solr/editconfig.jsp Wed May 19 09:08:45 2010
@@ -178,7 +178,13 @@
 		{
 			String name = sn.getAttributeValue(org.apache.lcf.agents.output.solr.SolrConfig.ATTRIBUTE_NAME);
 			String value = sn.getAttributeValue(org.apache.lcf.agents.output.solr.SolrConfig.ATTRIBUTE_VALUE);
-			argumentMap.put(name,value);
+			ArrayList values = (ArrayList)argumentMap.get(name);
+			if (values == null)
+			{
+				values = new ArrayList();
+				argumentMap.put(name,values);
+			}
+			values.add(value);
 		}
 	}
 	// "Arguments" tab
@@ -207,29 +213,34 @@
 				</tr>
 <%
 		i = 0;
-		while (i < sortArray.length)
+		int k = 0;
+		while (k < sortArray.length)
 		{
-			String name = sortArray[i];
-			String value = (String)argumentMap.get(name);
-			// It's prefix will be...
-			String prefix = "argument_" + Integer.toString(i);
+			String name = sortArray[k++];
+			ArrayList values = (ArrayList)argumentMap.get(name);
+			int j = 0;
+			while (j < values.size())
+			{
+				String value = (String)values.get(j++);
+				// Its prefix will be...
+				String prefix = "argument_" + Integer.toString(i);
 %>
 				<tr class='<%=((i % 2)==0)?"evenformrow":"oddformrow"%>'>
 					<td class="formcolumncell">
 						<a name='<%=prefix%>'><input type="button" value="Delete" alt='<%="Delete argument #"+Integer.toString(i+1)%>' onclick='<%="javascript:deleteArgument("+Integer.toString(i)+");"%>'/>
 						<input type="hidden" name='<%=prefix+"_op"%>' value="Continue"/>
 						<input type="hidden" name='<%=prefix+"_name"%>' value='<%=org.apache.lcf.ui.util.Encoder.attributeEscape(name)%>'/>
-						<input type="hidden" name='<%=prefix+"_value"%>' value='<%=org.apache.lcf.ui.util.Encoder.attributeEscape(value)%>'/>
 					</td>
 					<td class="formcolumncell">
 						<nobr><%=org.apache.lcf.ui.util.Encoder.bodyEscape(name)%></nobr>
 					</td>
 					<td class="formcolumncell">
-						<nobr><%=org.apache.lcf.ui.util.Encoder.bodyEscape(value)%></nobr>
+						<nobr><input type="text" size="30" name='<%=prefix+"_value"%>' value='<%=org.apache.lcf.ui.util.Encoder.attributeEscape(value)%>'</nobr>
 					</td>
 				</tr>
 <%
-			i++;
+				i++;
+			}
 		}
 		if (i == 0)
 		{
@@ -266,13 +277,19 @@
 		while (iter.hasNext())
 		{
 			String name = (String)iter.next();
-			String value = (String)argumentMap.get(name);
-			// It's prefix will be...
-			String prefix = "argument_" + Integer.toString(i++);
+			ArrayList values = (ArrayList)argumentMap.get(name);
+			int j = 0;
+			while (j < values.size())
+			{
+				String value = (String)values.get(j++);
+				// It's prefix will be...
+				String prefix = "argument_" + Integer.toString(i++);
 %>
 <input type="hidden" name='<%=prefix+"_name"%>' value='<%=org.apache.lcf.ui.util.Encoder.attributeEscape(name)%>'/>
 <input type="hidden" name='<%=prefix+"_value"%>' value='<%=org.apache.lcf.ui.util.Encoder.attributeEscape(value)%>'/>
 <%
+
+			}
 		}
 %>
 <input type="hidden" name="argument_count" value='<%=i%>'/>