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 2014/01/15 03:04:24 UTC

svn commit: r1558266 - in /manifoldcf/trunk: ./ connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/ connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/ connectors/solr/connector/src/test/

Author: kwright
Date: Wed Jan 15 02:04:23 2014
New Revision: 1558266

URL: http://svn.apache.org/r1558266
Log:
Fix for CONNECTORS-840.  This does not include mock testing code also submitted as part of the patch, since that currently does not work under Ant.

Added:
    manifoldcf/trunk/connectors/solr/connector/src/test/
      - copied from r1558265, manifoldcf/branches/CONNECTORS-840-2/connectors/solr/connector/src/test/
Modified:
    manifoldcf/trunk/   (props changed)
    manifoldcf/trunk/CHANGES.txt
    manifoldcf/trunk/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/HttpPoster.java
    manifoldcf/trunk/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConfig.java
    manifoldcf/trunk/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConnector.java
    manifoldcf/trunk/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_en_US.properties
    manifoldcf/trunk/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_ja_JP.properties

Propchange: manifoldcf/trunk/
------------------------------------------------------------------------------
  Merged /manifoldcf/branches/CONNECTORS-840:r1556412-1557896
  Merged /manifoldcf/branches/CONNECTORS-840-2:r1557897-1558265

Modified: manifoldcf/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/CHANGES.txt?rev=1558266&r1=1558265&r2=1558266&view=diff
==============================================================================
--- manifoldcf/trunk/CHANGES.txt (original)
+++ manifoldcf/trunk/CHANGES.txt Wed Jan 15 02:04:23 2014
@@ -3,6 +3,10 @@ $Id$
 
 ======================= 1.5-dev =====================
 
+CONNECTORS-840: Add ability to suppress all non-specified metadata
+fields in Solr connector.
+(Alessandro Benedetti, Karl Wright)
+
 CONNECTORS-754: Add claim space selection for SharePoint native
 authority, so that it works with Claim Space servers.
 (Will Parkinson, Karl Wright)

Modified: manifoldcf/trunk/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/HttpPoster.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/HttpPoster.java?rev=1558266&r1=1558265&r2=1558266&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/HttpPoster.java (original)
+++ manifoldcf/trunk/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/HttpPoster.java Wed Jan 15 02:04:23 2014
@@ -19,8 +19,6 @@
 package org.apache.manifoldcf.agents.output.solr;
 
 import org.apache.manifoldcf.core.interfaces.*;
-import org.apache.manifoldcf.core.common.Base64;
-import org.apache.manifoldcf.core.common.XMLDoc;
 import org.apache.manifoldcf.core.common.DateParser;
 import org.apache.manifoldcf.agents.interfaces.*;
 import org.apache.manifoldcf.agents.system.*;
@@ -28,31 +26,21 @@ import org.apache.manifoldcf.agents.syst
 import java.io.*;
 import java.net.*;
 import java.util.*;
-import javax.net.*;
-import javax.net.ssl.*;
 import java.util.regex.*;
 
-import org.apache.log4j.*;
-
-import java.util.concurrent.TimeUnit;
-
 import org.apache.http.auth.AuthScope;
 import org.apache.http.auth.Credentials;
 import org.apache.http.auth.UsernamePasswordCredentials;
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.http.impl.conn.PoolingClientConnectionManager;
-import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.params.HttpParams;
 import org.apache.http.params.BasicHttpParams;
 import org.apache.http.params.CoreConnectionPNames;
 import org.apache.http.params.CoreProtocolPNames;
 import org.apache.http.client.params.ClientPNames;
-import org.apache.http.client.params.HttpClientParams;
 import org.apache.http.conn.ClientConnectionManager;
 import org.apache.http.conn.scheme.Scheme;
 import org.apache.http.conn.ssl.SSLSocketFactory;
 import org.apache.http.conn.ssl.AllowAllHostnameVerifier;
-import org.apache.http.conn.params.ConnRoutePNames;
 import org.apache.http.client.HttpRequestRetryHandler;
 import org.apache.http.protocol.HttpContext;
 
@@ -483,17 +471,18 @@ 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.  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.
+  *
+   * @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.  Key is argument name, value is a list of the argument values.
+   * @param keepAllMetadata
+   *@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.
   * @throws ManifoldCFException, ServiceInterruption
   */
   public boolean indexPost(String documentURI,
     RepositoryDocument document, Map arguments, Map<String, List<String>> sourceTargets,
-    String authorityNameString, IOutputAddActivity activities)
+    boolean keepAllMetadata, String authorityNameString, IOutputAddActivity activities)
     throws ManifoldCFException, ServiceInterruption
   {
     if (Logging.ingest.isDebugEnabled())
@@ -515,7 +504,7 @@ public class HttpPoster
     
     try
     {
-      IngestThread t = new IngestThread(documentURI,document,arguments,sourceTargets,shareAcls,shareDenyAcls,acls,denyAcls,commitWithin);
+      IngestThread t = new IngestThread(documentURI,document,arguments,keepAllMetadata,sourceTargets,shareAcls,shareDenyAcls,acls,denyAcls,commitWithin);
       try
       {
         t.start();
@@ -765,15 +754,16 @@ public class HttpPoster
   */
   protected class IngestThread extends java.lang.Thread
   {
-    protected String documentURI;
-    protected RepositoryDocument document;
-    protected Map<String,List<String>> arguments;
-    protected Map<String,List<String>> sourceTargets;
-    protected String[] shareAcls;
-    protected String[] shareDenyAcls;
-    protected String[] acls;
-    protected String[] denyAcls;
-    protected String commitWithin;
+    protected final String documentURI;
+    protected final RepositoryDocument document;
+    protected final Map<String,List<String>> arguments;
+    protected final Map<String,List<String>> sourceTargets;
+    protected final String[] shareAcls;
+    protected final String[] shareDenyAcls;
+    protected final String[] acls;
+    protected final String[] denyAcls;
+    protected final String commitWithin;
+    protected final boolean keepAllMetadata;
     
     protected Long activityStart = null;
     protected Long activityBytes = null;
@@ -784,7 +774,7 @@ public class HttpPoster
     protected boolean rval = false;
 
     public IngestThread(String documentURI, RepositoryDocument document,
-      Map<String,List<String>> arguments, Map<String, List<String>> sourceTargets,
+      Map<String, List<String>> arguments, boolean keepAllMetadata, Map<String, List<String>> sourceTargets,
       String[] shareAcls, String[] shareDenyAcls, String[] acls, String[] denyAcls, String commitWithin)
     {
       super();
@@ -798,6 +788,7 @@ public class HttpPoster
       this.denyAcls = denyAcls;
       this.sourceTargets = sourceTargets;
       this.commitWithin = commitWithin;
+      this.keepAllMetadata=keepAllMetadata;
     }
 
     public void run()
@@ -868,32 +859,7 @@ public class HttpPoster
           }
 
           // Write the metadata, each in a field by itself
-          Iterator<String> iter = document.getFields();
-          while (iter.hasNext())
-          {
-            String fieldName = iter.next();
-            List<String> mapping = sourceTargets.get(fieldName);
-            if(mapping != null) {
-              for(String newFieldName : mapping) {
-                if(newFieldName != null && !newFieldName.isEmpty()) {
-                  if (newFieldName.toLowerCase(Locale.ROOT).equals(idAttributeName.toLowerCase(Locale.ROOT))) {
-                    newFieldName = ID_METADATA;
-                  }
-                  String[] values = document.getFieldAsStrings(fieldName);
-                  writeField(out,LITERAL+newFieldName,values);
-                }
-              }
-            } else {
-              String newFieldName = fieldName;
-              if (!newFieldName.isEmpty()) {
-                if (newFieldName.toLowerCase(Locale.ROOT).equals(idAttributeName.toLowerCase(Locale.ROOT))) {
-                  newFieldName = ID_METADATA;
-                }
-                String[] values = document.getFieldAsStrings(fieldName);
-                writeField(out,LITERAL+newFieldName,values);
-              }
-            }
-          }
+           buildSolrParamsFromMetadata(out);
              
           // These are unnecessary now in the case of non-solrcloud setups, because we overrode the SolrJ posting method to use multipart.
           //writeField(out,LITERAL+"stream_size",String.valueOf(length));
@@ -983,6 +949,52 @@ public class HttpPoster
       }
     }
 
+    /**
+      * builds the solr parameter maps for the update request.
+      * For each mapping expressed is applied the renaming for the metadata field name.
+      * If we set to keep all the metadata, the metadata non present in the mapping will be kept with their original names.
+      * In the other case ignored
+      * @param out
+      * @throws IOException
+      */
+    private void buildSolrParamsFromMetadata(ModifiableSolrParams out) throws IOException
+    {
+      if (this.keepAllMetadata)
+      {
+        Iterator<String> iter = document.getFields();
+        while (iter.hasNext())
+        {
+          String fieldName = iter.next();
+          List<String> mappings = sourceTargets.get(fieldName);
+          if (mappings != null)
+            for (String newFieldName : mappings)
+              applySingleMapping(fieldName, out, newFieldName);
+          else // the fields not mentioned in the mapping are added only if we have set the keep all metadata=true.
+            applySingleMapping(fieldName, out, fieldName);
+        }
+      }
+      else
+      {
+        //don't keep all the metadata but only the ones in sourceTargets
+        for (String originalFieldName : sourceTargets.keySet())
+        {
+          List<String> mapping = sourceTargets.get(originalFieldName);
+          for (String newFieldName : mapping)
+            applySingleMapping(originalFieldName, out, newFieldName);
+        }
+      }
+    }
+
+    private void applySingleMapping(String originalFieldName, ModifiableSolrParams out, String newFieldName) throws IOException {
+      if(newFieldName != null && !newFieldName.isEmpty()) {
+        if (newFieldName.toLowerCase(Locale.ROOT).equals(idAttributeName.toLowerCase(Locale.ROOT))) {
+          newFieldName = ID_METADATA;
+        }
+        String[] values = document.getFieldAsStrings(originalFieldName);
+        writeField(out,LITERAL+newFieldName,values);
+      }
+    }
+
     public Throwable getException()
     {
       return exception;

Modified: manifoldcf/trunk/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConfig.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConfig.java?rev=1558266&r1=1558265&r2=1558266&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConfig.java (original)
+++ manifoldcf/trunk/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConfig.java Wed Jan 15 02:04:23 2014
@@ -126,5 +126,10 @@ public class SolrConfig
   public static final String ATTRIBUTE_SOURCE = "source";
   /** Attribute describing a target field name */
   public static final String ATTRIBUTE_TARGET = "target";
+  
+  /**
+   * Node describing the keep metadata 
+   */
+  public static final String NODE_KEEPMETADATA = "keepAllMetadata";
 
 }

Modified: manifoldcf/trunk/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConnector.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConnector.java?rev=1558266&r1=1558265&r2=1558266&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConnector.java (original)
+++ manifoldcf/trunk/connectors/solr/connector/src/main/java/org/apache/manifoldcf/agents/output/solr/SolrConnector.java Wed Jan 15 02:04:23 2014
@@ -18,11 +18,31 @@
 */
 package org.apache.manifoldcf.agents.output.solr;
 
-import org.apache.manifoldcf.core.interfaces.*;
-import org.apache.manifoldcf.agents.interfaces.*;
-
-import java.util.*;
-import java.io.*;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.manifoldcf.agents.interfaces.IOutputAddActivity;
+import org.apache.manifoldcf.agents.interfaces.IOutputNotifyActivity;
+import org.apache.manifoldcf.agents.interfaces.IOutputRemoveActivity;
+import org.apache.manifoldcf.agents.interfaces.OutputSpecification;
+import org.apache.manifoldcf.agents.interfaces.RepositoryDocument;
+import org.apache.manifoldcf.agents.interfaces.ServiceInterruption;
+import org.apache.manifoldcf.core.interfaces.ConfigNode;
+import org.apache.manifoldcf.core.interfaces.ConfigParams;
+import org.apache.manifoldcf.core.interfaces.ConfigurationNode;
+import org.apache.manifoldcf.core.interfaces.IDFactory;
+import org.apache.manifoldcf.core.interfaces.IHTTPOutput;
+import org.apache.manifoldcf.core.interfaces.IKeystoreManager;
+import org.apache.manifoldcf.core.interfaces.IPostParameters;
+import org.apache.manifoldcf.core.interfaces.IThreadContext;
+import org.apache.manifoldcf.core.interfaces.KeystoreManagerFactory;
+import org.apache.manifoldcf.core.interfaces.ManifoldCFException;
+import org.apache.manifoldcf.core.interfaces.SpecificationNode;
 
 
 /** This is the output connector for SOLR.  Currently, no frills.
@@ -493,11 +513,17 @@ public class SolrConnector extends org.a
     // Do the source/target pairs
     i = 0;
     Map<String, List<String>> sourceTargets = new HashMap<String, List<String>>();
+    boolean keepAllMetadata = true;
     while (i < spec.getChildCount()) {
       SpecificationNode sn = spec.getChild(i++);
-      if (sn.getType().equals(SolrConfig.NODE_FIELDMAP)) {
+      
+      if(sn.getType().equals(SolrConfig.NODE_KEEPMETADATA)) {
+        String value = sn.getAttributeValue(SolrConfig.ATTRIBUTE_VALUE);
+        keepAllMetadata = Boolean.parseBoolean(value);
+      } else if (sn.getType().equals(SolrConfig.NODE_FIELDMAP)) {
         String source = sn.getAttributeValue(SolrConfig.ATTRIBUTE_SOURCE);
         String target = sn.getAttributeValue(SolrConfig.ATTRIBUTE_TARGET);
+        
         if (target == null) {
           target = "";
         }
@@ -537,6 +563,12 @@ public class SolrConnector extends org.a
     
     packList(sb,sourceTargetsList,'+');
 
+    // Keep all metadata flag
+    if (keepAllMetadata)
+      sb.append('+');
+    else
+      sb.append('-');
+
     // Here, append things which we have no intention of unpacking.  This includes stuff that comes from
     // the configuration information, for instance.
     
@@ -629,6 +661,8 @@ public class SolrConnector extends org.a
     index = unpackList(nameValues,outputDescription,index,'+');
     ArrayList sts = new ArrayList();
     index = unpackList(sts,outputDescription,index,'+');
+    ArrayList metadataExtraParams = new ArrayList();
+    index = unpackList(metadataExtraParams, outputDescription, index, '+');
     String[] fixedBuffer = new String[2];
     
     // Do the name/value pairs
@@ -662,11 +696,18 @@ public class SolrConnector extends org.a
       list.add(target);
     }
 
+    // extract keep all metadata Flag
+    boolean keepAllMetadata = true;
+    if (index < outputDescription.length())
+    {
+      keepAllMetadata = (outputDescription.charAt(index++) == '+');
+    }
+    
     // Establish a session
     getSession();
 
     // Now, go off and call the ingest API.
-    if (poster.indexPost(documentURI,document,args,sourceTargets,authorityNameString,activities))
+    if (poster.indexPost(documentURI,document,args,sourceTargets,keepAllMetadata,authorityNameString,activities))
       return DOCUMENTSTATUS_ACCEPTED;
     return DOCUMENTSTATUS_REJECTED;
   }
@@ -782,7 +823,7 @@ public class SolrConnector extends org.a
 "  }\n"+
 "  if (editconnection.core.value != \"\" && editconnection.core.value.indexOf(\"/\") != -1)\n"+
 "  {\n"+
-"    alert(\""+Messages.getBodyJavascriptString(locale,"SolrConnector.CoreNameCannotHaveCharacter")+"\");\n"+
+"    alert(\""+Messages.getBodyJavascriptString(locale,"SolrConnector.CoreNameCannotHaveCharacters")+"\");\n"+
 "    editconnection.core.focus();\n"+
 "    return false;\n"+
 "  }\n"+
@@ -2289,6 +2330,7 @@ public class SolrConnector extends org.a
 
       int fieldCounter = 0;
       i = 0;
+      boolean keepMetadata = true;
       while (i < os.getChildCount()) {
         SpecificationNode sn = os.getChild(i++);
         if (sn.getType().equals(SolrConfig.NODE_FIELDMAP)) {
@@ -2325,6 +2367,9 @@ public class SolrConnector extends org.a
           );
           fieldCounter++;
         }
+        else if(sn.getType().equals(SolrConfig.NODE_KEEPMETADATA)) {
+          keepMetadata = Boolean.parseBoolean(sn.getAttributeValue(SolrConfig.ATTRIBUTE_VALUE));
+        }
       }
       
       if (fieldCounter == 0)
@@ -2333,6 +2378,13 @@ public class SolrConnector extends org.a
 "        <tr class=\"formrow\"><td class=\"formmessage\" colspan=\"3\">" + Messages.getBodyString(locale,"SolrConnector.NoFieldMappingSpecified") + "</td></tr>\n"
         );
       }
+      
+      String keepMetadataValue;
+      if (keepMetadata)
+        keepMetadataValue = " checked=\"true\"";
+      else
+        keepMetadataValue = "";
+
       out.print(
 "        <tr class=\"formrow\"><td class=\"formseparator\" colspan=\"3\"><hr/></td></tr>\n"+
 "        <tr class=\"formrow\">\n"+
@@ -2353,6 +2405,13 @@ public class SolrConnector extends org.a
 "      </table>\n"+
 "    </td>\n"+
 "  </tr>\n"+
+"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"+
+"  <tr>\n"+
+"    <td class=\"description\"><nobr>"+Messages.getBodyString(locale,"SolrConnector.KeepAllMetadata")+"</nobr></td>\n"+
+"    <td class=\"value\">\n"+
+"       <input type=\"checkbox\""+keepMetadataValue+" name=\"solr_keepallmetadata\" value=\"true\"/>\n"+
+"    </td>\n"+
+"  </tr>\n"+
 "</table>\n"
       );
     }
@@ -2361,6 +2420,7 @@ public class SolrConnector extends org.a
       // Hiddens for field mapping
       i = 0;
       int fieldCounter = 0;
+      String keepMetadataValue = "true";
       while (i < os.getChildCount()) {
         SpecificationNode sn = os.getChild(i++);
         if (sn.getType().equals(SolrConfig.NODE_FIELDMAP)) {
@@ -2376,8 +2436,15 @@ public class SolrConnector extends org.a
           );
           fieldCounter++;
         }
+        else if(sn.getType().equals(SolrConfig.NODE_KEEPMETADATA))
+        {
+          keepMetadataValue = sn.getAttributeValue(SolrConfig.ATTRIBUTE_VALUE);
+        }
       }
       out.print(
+"<input type=\"hidden\" name=\"solr_keepallmetadata\" value=\""+keepMetadataValue+"\"/>\n"
+      );
+      out.print(
 "<input type=\"hidden\" name=\"solr_fieldmapping_count\" value=\""+Integer.toString(fieldCounter)+"\"/>\n"
       );
     }
@@ -2404,7 +2471,7 @@ public class SolrConnector extends org.a
       while (i < os.getChildCount())
       {
         SpecificationNode node = os.getChild(i);
-        if (node.getType().equals(SolrConfig.NODE_FIELDMAP))
+        if (node.getType().equals(SolrConfig.NODE_FIELDMAP) || node.getType().equals(SolrConfig.NODE_KEEPMETADATA))
           os.removeChild(i);
         else
           i++;
@@ -2429,6 +2496,7 @@ public class SolrConnector extends org.a
         }
         i++;
       }
+      
       String addop = variableContext.getParameter("solr_fieldmapping_op");
       if (addop != null && addop.equals("Add"))
       {
@@ -2441,6 +2509,19 @@ public class SolrConnector extends org.a
         node.setAttribute(SolrConfig.ATTRIBUTE_TARGET,target);
         os.addChild(os.getChildCount(),node);
       }
+      
+      // Gather the keep all metadata parameter to be the last one
+      SpecificationNode node = new SpecificationNode(SolrConfig.NODE_KEEPMETADATA);
+      String keepAll = variableContext.getParameter("solr_keepallmetadata");
+      if (keepAll != null) {
+        node.setAttribute(SolrConfig.ATTRIBUTE_VALUE, keepAll);
+      }
+      else {
+        node.setAttribute(SolrConfig.ATTRIBUTE_VALUE, "false");
+      }
+      // Add the new keepallmetadata config parameter 
+      os.addChild(os.getChildCount(), node);
+          
     }
     return null;
   }
@@ -2475,6 +2556,7 @@ public class SolrConnector extends org.a
 
     int fieldCounter = 0;
     i = 0;
+    String keepAllMetadataValue = "true";
     while (i < os.getChildCount()) {
       SpecificationNode sn = os.getChild(i++);
       if (sn.getType().equals(SolrConfig.NODE_FIELDMAP)) {
@@ -2498,6 +2580,10 @@ public class SolrConnector extends org.a
         );
         fieldCounter++;
       }
+      else if (sn.getType().equals(SolrConfig.NODE_KEEPMETADATA))
+      {
+        keepAllMetadataValue = sn.getAttributeValue(SolrConfig.ATTRIBUTE_VALUE);
+      }
     }
     
     if (fieldCounter == 0)
@@ -2510,6 +2596,11 @@ public class SolrConnector extends org.a
 "      </table>\n"+
 "    </td>\n"+
 "  </tr>\n"+
+"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"+
+"  <tr>\n"+
+"    <td class=\"description\"><nobr>" + Messages.getBodyString(locale,"SolrConnector.KeepAllMetadata") + "</nobr></td>\n"+
+"    <td class=\"value\"><nobr>" + keepAllMetadataValue + "</nobr></td>\n"+
+"  </tr>\n"+
 "</table>\n"
     );
 

Modified: manifoldcf/trunk/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_en_US.properties
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_en_US.properties?rev=1558266&r1=1558265&r2=1558266&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_en_US.properties (original)
+++ manifoldcf/trunk/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_en_US.properties Wed Jan 15 02:04:23 2014
@@ -14,6 +14,7 @@
 # limitations under the License.
 
 SolrConnector.Arguments=Arguments
+SolrConnector.KeepAllMetadata=Keep all metadata:
 SolrConnector.Arguments2=Arguments:
 SolrConnector.Commits=Commits
 SolrConnector.Documents=Documents
@@ -27,11 +28,10 @@ SolrConnector.SingleServer=Single server
 SolrConnector.SolrCloud=SolrCloud
 SolrConnector.ZookeeperHosts=ZooKeeper hosts:
 SolrConnector.Host=Host
-SolrConnector.Port=Port
+SolrConnector.Port=Port:
 SolrConnector.ZnodePath=Znode path:
 SolrConnector.Protocol=Protocol:
 SolrConnector.ServerName=Server name:
-SolrConnector.Port=Port:
 SolrConnector.WebApplicationName=Web application name:
 SolrConnector.CoreName=Core/Collection name:
 SolrConnector.CollectionName=Collection name:
@@ -83,7 +83,7 @@ SolrConnector.ZnodePathMustStartWithACha
 SolrConnector.PleaseSupplyAValidSolrServerName=Please supply a valid Solr server name
 SolrConnector.SolrServerPortMustBeAValidInteger=Solr server port must be a valid integer
 SolrConnector.WebApplicationNameCannotHaveCharacters=Web application name cannot have '/' characters
-SolrConnector.CoreNameCannotHaveCharacter=Core name cannot have '/' characters
+SolrConnector.CoreNameCannotHaveCharacters=Core name cannot have '/' characters
 SolrConnector.WebApplicationMustBeSpecifiedIfCoreIsSpecified=Web application must be specified if core is specified
 SolrConnector.ConnectionTimeoutMustBeInteger=Connection timeout must be an integer
 SolrConnector.SocketTimeoutMustBeInteger=Socket timeout must be an integer
@@ -92,16 +92,7 @@ SolrConnector.RemovePathMustStartWAChara
 SolrConnector.StatusPathMustStartWACharacter=Status path must start with a  '/' character
 SolrConnector.MaximumDocumentLengthMustBAnInteger=Maximum document length must be an integer
 SolrConnector.CommitWithinValueMustBeAnInteger=Commit-within value must be an integer
-SolrConnector.PleaseSupplyAValidSolrServerName=Please supply a valid Solr server name
-SolrConnector.SolrServerPortMustBeAValidInteger=Solr server port must be a valid integer
-SolrConnector.WebApplicationNameCannotHaveCharacters=Web application name cannot have '/' characters
-SolrConnector.CoreNameCannotHaveCharacters=Core name cannot have '/' characters
-SolrConnector.WebApplicationMustBeSpecifiedIfCoreIsSpecified=Web application must be specified if core is specified
-SolrConnector.UpdatePathMustStartWithACharacter=Update path must start with a  '/' character
-SolrConnector.RemovePathMustStartWithACharacter=Remove path must start with a  '/' character
-SolrConnector.StatusPathMustStartWithACharacter=Status path must start with a  '/' character
 SolrConnector.MaximumDocumentLengthMustBeAnInteger=Maximum document length must be an integer
-SolrConnector.CommitWithinValueMustBeAnInteger=Commit-within value must be an integer
 SolrConnector.ArgumentNameCannotBeAnEmptyString=Argument name cannot be an empty string
 SolrConnector.DeleteCert=Delete cert 
 SolrConnector.Delete=Delete

Modified: manifoldcf/trunk/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_ja_JP.properties
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_ja_JP.properties?rev=1558266&r1=1558265&r2=1558266&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_ja_JP.properties (original)
+++ manifoldcf/trunk/connectors/solr/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/solr/common_ja_JP.properties Wed Jan 15 02:04:23 2014
@@ -14,6 +14,7 @@
 # limitations under the License.
 
 SolrConnector.Arguments=引数
+SolrConnector.KeepAllMetadata=Keep all metadata:
 SolrConnector.Arguments2=引数:
 SolrConnector.Commits=コミット
 SolrConnector.Documents=コンテンツ
@@ -27,11 +28,10 @@ SolrConnector.SingleServer=シン�
 SolrConnector.SolrCloud=SolrCloud
 SolrConnector.ZookeeperHosts=ZooKeeperホスト:
 SolrConnector.Host=ホスト
-SolrConnector.Port=ポート
+SolrConnector.Port=ポート:
 SolrConnector.ZnodePath=Znodeパス:
 SolrConnector.Protocol=プロトコル:
 SolrConnector.ServerName=サーバ名:
-SolrConnector.Port=ポート:
 SolrConnector.WebApplicationName=Webアプリケーション名:
 SolrConnector.CoreName=コア/コレクション名:
 SolrConnector.CollectionName=コレクション名:
@@ -75,15 +75,15 @@ SolrConnector.SolrFieldName=Solrフã
 SolrConnector.NoFieldMappingSpecified=フィールドマッピングの指定がありません
 SolrConnector.NoZookeeperHostsSpecified=ZooKeeperホストの指定がありません
 SolrConnector.AddFieldMapping=フィールドマッピングを追加
+SolrConnector.ChooseACertificateFile=証明書ファイルを選択してください
 SolrConnector.ZookeeperHostCannotBeNull=ZooKeeperホストはNullにできません
 SolrConnector.ZookeeperPortCannotBeNull=ZooKeeperポートはNullにできません
 SolrConnector.ZookeeperPortMustBeAnInteger=ZooKeeperポートには整数を入力してください
 SolrConnector.ZnodePathMustStartWithACharacter=Znodeパスは「/」から始めてください
-SolrConnector.ChooseACertificateFile=証明書ファイルを選択してください
 SolrConnector.PleaseSupplyAValidSolrServerName=正しいSolrサーバ名を入力してください
 SolrConnector.SolrServerPortMustBeAValidInteger=Solrサーバポート番号には整数を入力してください
 SolrConnector.WebApplicationNameCannotHaveCharacters=Webアプリケーション名には文字「/」は使えません
-SolrConnector.CoreNameCannotHaveCharacter=コア名には文字「/」は使えません
+SolrConnector.CoreNameCannotHaveCharacters=コア名には文字「/」は使えません
 SolrConnector.WebApplicationMustBeSpecifiedIfCoreIsSpecified=コアを指定する場合はWebアプリケーションも指定してください
 SolrConnector.ConnectionTimeoutMustBeInteger=コネクションタイムアウトには整数を入力してください
 SolrConnector.SocketTimeoutMustBeInteger=ソケットタイムアウト値には整数を入力してください
@@ -92,16 +92,7 @@ SolrConnector.RemovePathMustStartWAChara
 SolrConnector.StatusPathMustStartWACharacter=状態パスは文字「/」から始めてください
 SolrConnector.MaximumDocumentLengthMustBAnInteger=コンテンツの最大長さには整数を入力してください
 SolrConnector.CommitWithinValueMustBeAnInteger=Commit-within値には整数を入力してください
-SolrConnector.PleaseSupplyAValidSolrServerName=正しいSolrサーバ名を入力してください
-SolrConnector.SolrServerPortMustBeAValidInteger=Solrサーバポートには整数を入力してください
-SolrConnector.WebApplicationNameCannotHaveCharacters=Webアプリケーション名には文字「/」は使わないでください
-SolrConnector.CoreNameCannotHaveCharacters=コア名には文字「/」は使わないでください
-SolrConnector.WebApplicationMustBeSpecifiedIfCoreIsSpecified=コアを指定する場合はWebアプリケーションも指定してください
-SolrConnector.UpdatePathMustStartWithACharacter=更新パスは「/」から始めてください
-SolrConnector.RemovePathMustStartWithACharacter=削除パスは「/」から始めてください
-SolrConnector.StatusPathMustStartWithACharacter=状態パスは「/」から始めてください
 SolrConnector.MaximumDocumentLengthMustBeAnInteger=最大コンテンツ長さには整数を入力してください
-SolrConnector.CommitWithinValueMustBeAnInteger=Commit-withinの値には整数を入力してください
 SolrConnector.ArgumentNameCannotBeAnEmptyString=引数名を入力してください
 SolrConnector.DeleteCert=証明書を削除 
 SolrConnector.Delete=削除