You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2011/02/27 18:14:46 UTC

svn commit: r1075089 - in /lucene/dev/trunk/solr: contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/ src/common/org/apache/solr/common/util/ src/java/org/apache/solr/core/ src/java/org/apache/solr/handler/ src/java/org/apache/s...

Author: uschindler
Date: Sun Feb 27 17:14:45 2011
New Revision: 1075089

URL: http://svn.apache.org/viewvc?rev=1075089&view=rev
Log:
SOLR-2388: Log XML warnings and errors to slf4j

Added:
    lucene/dev/trunk/solr/src/common/org/apache/solr/common/util/XMLErrorLogger.java   (with props)
Modified:
    lucene/dev/trunk/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
    lucene/dev/trunk/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/XPathEntityProcessor.java
    lucene/dev/trunk/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/XPathRecordReader.java
    lucene/dev/trunk/solr/src/java/org/apache/solr/core/Config.java
    lucene/dev/trunk/solr/src/java/org/apache/solr/handler/DocumentAnalysisRequestHandler.java
    lucene/dev/trunk/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java
    lucene/dev/trunk/solr/src/java/org/apache/solr/util/xslt/TransformerProvider.java
    lucene/dev/trunk/solr/src/solrj/org/apache/solr/client/solrj/impl/XMLResponseParser.java

Modified: lucene/dev/trunk/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java?rev=1075089&r1=1075088&r2=1075089&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java (original)
+++ lucene/dev/trunk/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java Sun Feb 27 17:14:45 2011
@@ -25,6 +25,7 @@ import org.apache.solr.schema.SchemaFiel
 import org.apache.solr.common.util.ContentStream;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.SystemIdResolver;
+import org.apache.solr.common.util.XMLErrorLogger;
 
 import static org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow;
 import static org.apache.solr.handler.dataimport.DataImportHandlerException.SEVERE;
@@ -60,6 +61,7 @@ public class DataImporter {
   }
 
   private static final Logger LOG = LoggerFactory.getLogger(DataImporter.class);
+  private static final XMLErrorLogger XMLLOG = new XMLErrorLogger(LOG);
 
   private Status status = Status.IDLE;
 
@@ -188,6 +190,7 @@ public class DataImporter {
       DocumentBuilder builder = dbf.newDocumentBuilder();
       if (core != null)
         builder.setEntityResolver(new SystemIdResolver(core.getResourceLoader()));
+      builder.setErrorHandler(XMLLOG);
       Document document;
       try {
         document = builder.parse(configFile);

Modified: lucene/dev/trunk/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/XPathEntityProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/XPathEntityProcessor.java?rev=1075089&r1=1075088&r2=1075089&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/XPathEntityProcessor.java (original)
+++ lucene/dev/trunk/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/XPathEntityProcessor.java Sun Feb 27 17:14:45 2011
@@ -21,6 +21,7 @@ import static org.apache.solr.handler.da
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.common.ResourceLoader;
 import org.apache.solr.common.util.SystemIdResolver;
+import org.apache.solr.common.util.XMLErrorLogger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.commons.io.IOUtils;
@@ -54,6 +55,7 @@ import java.util.concurrent.atomic.Atomi
  */
 public class XPathEntityProcessor extends EntityProcessorBase {
   private static final Logger LOG = LoggerFactory.getLogger(XPathEntityProcessor.class);
+  private static final XMLErrorLogger xmllog = new XMLErrorLogger(LOG);
 
   private static final Map<String, Object> END_MARKER = new HashMap<String, Object>();
   
@@ -124,6 +126,7 @@ public class XPathEntityProcessor extend
           // fallback for tests
           xsltSource = new StreamSource(xslt);
         }
+        transFact.setErrorListener(xmllog);
         try {
           xslTransformer = transFact.newTransformer(xsltSource);
         } finally {

Modified: lucene/dev/trunk/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/XPathRecordReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/XPathRecordReader.java?rev=1075089&r1=1075088&r2=1075089&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/XPathRecordReader.java (original)
+++ lucene/dev/trunk/solr/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/XPathRecordReader.java Sun Feb 27 17:14:45 2011
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.handler.dataimport;
 
+import org.apache.solr.common.util.XMLErrorLogger;
 import javax.xml.stream.XMLInputFactory;
 import static javax.xml.stream.XMLStreamConstants.*;
 import javax.xml.stream.XMLStreamException;
@@ -25,6 +26,8 @@ import java.io.Reader;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * <p>
@@ -54,6 +57,9 @@ import java.util.regex.Pattern;
  * @since solr 1.3
  */
 public class XPathRecordReader {
+  private static final Logger LOG = LoggerFactory.getLogger(XPathRecordReader.class);
+  private static final XMLErrorLogger XMLLOG = new XMLErrorLogger(LOG);
+
   private Node rootNode = new Node("/", null);
 
   /** 
@@ -622,6 +628,7 @@ public class XPathRecordReader {
   static{
     factory.setProperty(XMLInputFactory.IS_VALIDATING , Boolean.FALSE); 
     factory.setProperty(XMLInputFactory.SUPPORT_DTD , Boolean.FALSE);
+    factory.setXMLReporter(XMLLOG);
   }
 
   /**Implement this interface to stream records as and when one is found.

Added: lucene/dev/trunk/solr/src/common/org/apache/solr/common/util/XMLErrorLogger.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/common/org/apache/solr/common/util/XMLErrorLogger.java?rev=1075089&view=auto
==============================================================================
--- lucene/dev/trunk/solr/src/common/org/apache/solr/common/util/XMLErrorLogger.java (added)
+++ lucene/dev/trunk/solr/src/common/org/apache/solr/common/util/XMLErrorLogger.java Sun Feb 27 17:14:45 2011
@@ -0,0 +1,72 @@
+/**
+ * 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.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.solr.common.util;
+
+import org.slf4j.Logger;
+
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import javax.xml.transform.ErrorListener;
+import javax.xml.transform.TransformerException;
+import javax.xml.stream.Location;
+import javax.xml.stream.XMLReporter;
+
+public final class XMLErrorLogger implements ErrorHandler,ErrorListener,XMLReporter {
+  
+  private final Logger log;
+
+  public XMLErrorLogger(Logger log) {
+    this.log = log;
+  }
+  
+  // ErrorHandler
+  
+	public void warning(SAXParseException e) {
+		log.warn("XML parse warning in \""+e.getSystemId()+"\", line "+e.getLineNumber()+", column "+e.getColumnNumber()+": "+e.getMessage());
+	}
+
+	public void error(SAXParseException e) throws SAXException {
+		throw e;
+	}
+
+	public void fatalError(SAXParseException e) throws SAXException {
+		throw e;
+	}
+  
+  // ErrorListener
+  
+	public void warning(TransformerException e) {
+		log.warn(e.getMessageAndLocation());
+	}
+
+	public void error(TransformerException e) throws TransformerException {
+		throw e;
+	}
+
+	public void fatalError(TransformerException e) throws TransformerException {
+		throw e;
+	}
+  
+  // XMLReporter
+  
+  public void report(String message, String errorType, Object relatedInformation, Location loc) {
+		log.warn("XML parse warning in \""+loc.getSystemId()+"\", line "+loc.getLineNumber()+", column "+loc.getColumnNumber()+": "+message);
+  }
+  
+}

Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/core/Config.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/core/Config.java?rev=1075089&r1=1075088&r2=1075089&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/core/Config.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/core/Config.java Sun Feb 27 17:14:45 2011
@@ -21,6 +21,7 @@ import org.apache.lucene.util.Version;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.util.DOMUtil;
 import org.apache.solr.common.util.SystemIdResolver;
+import org.apache.solr.common.util.XMLErrorLogger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
@@ -49,6 +50,7 @@ import java.util.concurrent.atomic.Atomi
  */
 public class Config {
   public static final Logger log = LoggerFactory.getLogger(Config.class);
+  private static final XMLErrorLogger xmllog = new XMLErrorLogger(log);
 
   static final XPathFactory xpathFactory = XPathFactory.newInstance();
 
@@ -117,6 +119,7 @@ public class Config {
       
       final DocumentBuilder db = dbf.newDocumentBuilder();
       db.setEntityResolver(new SystemIdResolver(loader));
+      db.setErrorHandler(xmllog);
       try {
         doc = db.parse(is);
       } finally {

Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/handler/DocumentAnalysisRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/handler/DocumentAnalysisRequestHandler.java?rev=1075089&r1=1075088&r2=1075089&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/handler/DocumentAnalysisRequestHandler.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/handler/DocumentAnalysisRequestHandler.java Sun Feb 27 17:14:45 2011
@@ -30,6 +30,7 @@ import org.apache.solr.common.util.Conte
 import org.apache.solr.common.util.ContentStreamBase;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.common.util.XMLErrorLogger;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.IndexSchema;
@@ -78,6 +79,7 @@ import java.util.*;
 public class DocumentAnalysisRequestHandler extends AnalysisRequestHandlerBase {
 
   public static final Logger log = LoggerFactory.getLogger(DocumentAnalysisRequestHandler.class);
+  private static final XMLErrorLogger xmllog = new XMLErrorLogger(log);
 
   private static final float DEFAULT_BOOST = 1.0f;
 
@@ -101,6 +103,7 @@ public class DocumentAnalysisRequestHand
       // isimplementation specific.
       log.debug("Unable to set the 'reuse-instance' property for the input factory: " + inputFactory);
     }
+    inputFactory.setXMLReporter(xmllog);
   }
 
   /**

Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java?rev=1075089&r1=1075088&r2=1075089&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java Sun Feb 27 17:14:45 2011
@@ -20,6 +20,7 @@ package org.apache.solr.handler;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.XML;
+import org.apache.solr.common.util.XMLErrorLogger;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequest;
@@ -40,6 +41,7 @@ import java.util.HashMap;
  */
 public class XmlUpdateRequestHandler extends ContentStreamHandlerBase {
   public static Logger log = LoggerFactory.getLogger(XmlUpdateRequestHandler.class);
+  private static final XMLErrorLogger xmllog = new XMLErrorLogger(log);
 
   public static final String UPDATE_PROCESSOR = "update.processor";
 
@@ -78,6 +80,7 @@ public class XmlUpdateRequestHandler ext
       // isimplementation specific.
       log.debug("Unable to set the 'reuse-instance' property for the input chain: " + inputFactory);
     }
+    inputFactory.setXMLReporter(xmllog);
   }
 
   @Override

Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/util/xslt/TransformerProvider.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/util/xslt/TransformerProvider.java?rev=1075089&r1=1075088&r2=1075089&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/util/xslt/TransformerProvider.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/util/xslt/TransformerProvider.java Sun Feb 27 17:14:45 2011
@@ -31,6 +31,7 @@ import javax.xml.transform.stream.Stream
 
 import org.apache.solr.common.ResourceLoader;
 import org.apache.solr.common.util.SystemIdResolver;
+import org.apache.solr.common.util.XMLErrorLogger;
 import org.apache.solr.core.SolrConfig;
 
 /** Singleton that creates a Transformer for the XSLTServletFilter.
@@ -42,18 +43,17 @@ import org.apache.solr.core.SolrConfig;
  */
 
 public class TransformerProvider {
-  public static TransformerProvider instance = new TransformerProvider();
-
   private String lastFilename;
   private Templates lastTemplates = null;
   private long cacheExpires = 0;
   
-  private static Logger log;
+  private static final Logger log = LoggerFactory.getLogger(TransformerProvider.class.getName());
+  private static final XMLErrorLogger xmllog = new XMLErrorLogger(log);
   
+  public static TransformerProvider instance = new TransformerProvider();
+
   /** singleton */
   private TransformerProvider() {
-    log = LoggerFactory.getLogger(TransformerProvider.class.getName());
-    
     // tell'em: currently, we only cache the last used XSLT transform, and blindly recompile it
     // once cacheLifetimeSeconds expires
     log.warn(
@@ -103,6 +103,7 @@ public class TransformerProvider {
       final String fn = "xslt/" + filename;
       final TransformerFactory tFactory = TransformerFactory.newInstance();
       tFactory.setURIResolver(new SystemIdResolver(loader).asURIResolver());
+      tFactory.setErrorListener(xmllog);
       final StreamSource src = new StreamSource(loader.openResource(fn),
         SystemIdResolver.createSystemIdFromResourceName(fn));
       try {

Modified: lucene/dev/trunk/solr/src/solrj/org/apache/solr/client/solrj/impl/XMLResponseParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/solrj/org/apache/solr/client/solrj/impl/XMLResponseParser.java?rev=1075089&r1=1075088&r2=1075089&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/solrj/org/apache/solr/client/solrj/impl/XMLResponseParser.java (original)
+++ lucene/dev/trunk/solr/src/solrj/org/apache/solr/client/solrj/impl/XMLResponseParser.java Sun Feb 27 17:14:45 2011
@@ -39,6 +39,7 @@ import org.apache.solr.common.SolrDocume
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.common.util.XMLErrorLogger;
 
 /**
  * 
@@ -48,6 +49,7 @@ import org.apache.solr.common.util.Simpl
 public class XMLResponseParser extends ResponseParser
 {
   public static Logger log = LoggerFactory.getLogger(XMLResponseParser.class);
+  private static final XMLErrorLogger xmllog = new XMLErrorLogger(log);
 
   // reuse the factory among all parser instances so things like string caches
   // won't be duplicated
@@ -68,6 +70,7 @@ public class XMLResponseParser extends R
       // isimplementation specific.
       log.debug( "Unable to set the 'reuse-instance' property for the input factory: "+factory );
     }
+    factory.setXMLReporter(xmllog);
   }
 
   public XMLResponseParser() {}