From 2db80e7db1e3ff1b1672df9fedc60a150f350717 Mon Sep 17 00:00:00 2001 From: Erik Hatcher Date: Mon, 12 Feb 2007 00:21:36 +0000 Subject: [PATCH] SOLR-157: Fixed NPE caused by index fields which do not appear on schema.xml. (contributed by Ryan McKinley) Also relocated package from request package to handler package, and removed experimental warning. git-svn-id: https://svn.apache.org/repos/asf/lucene/solr/trunk@506187 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 2 + .../IndexInfoRequestHandler.java | 59 ++++++++----------- 2 files changed, 26 insertions(+), 35 deletions(-) rename src/java/org/apache/solr/{request => handler}/IndexInfoRequestHandler.java (73%) diff --git a/CHANGES.txt b/CHANGES.txt index fc541a016c4..674c428244e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -80,6 +80,8 @@ New Features (in ms), using 10000. (Ryan McKinley via klaas). +10. SOLR-116: IndexInfoRequestHandler added. (Erik Hatcher) + Changes in runtime behavior 1. Highlighting using DisMax will only pick up terms from the main user query, not boost or filter queries (klaas). diff --git a/src/java/org/apache/solr/request/IndexInfoRequestHandler.java b/src/java/org/apache/solr/handler/IndexInfoRequestHandler.java similarity index 73% rename from src/java/org/apache/solr/request/IndexInfoRequestHandler.java rename to src/java/org/apache/solr/handler/IndexInfoRequestHandler.java index faad653dc60..87483571440 100644 --- a/src/java/org/apache/solr/request/IndexInfoRequestHandler.java +++ b/src/java/org/apache/solr/handler/IndexInfoRequestHandler.java @@ -15,55 +15,57 @@ * limitations under the License. */ -package org.apache.solr.request; +package org.apache.solr.handler; import org.apache.lucene.index.IndexReader; import org.apache.solr.core.SolrCore; import org.apache.solr.core.SolrException; -import org.apache.solr.core.SolrInfoMBean; -import org.apache.solr.util.NamedList; -import org.apache.solr.util.SimpleOrderedMap; +import org.apache.solr.handler.RequestHandlerBase; import org.apache.solr.schema.IndexSchema; import org.apache.solr.schema.FieldType; +import org.apache.solr.schema.SchemaField; import org.apache.solr.search.SolrIndexSearcher; +import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryResponse; -import java.net.URL; import java.util.Collection; import java.util.Map; import java.util.HashMap; -public class IndexInfoRequestHandler implements SolrRequestHandler, SolrInfoMBean { - public void init(NamedList args) { +public class IndexInfoRequestHandler extends RequestHandlerBase { - } - - public void handleRequest(SolrQueryRequest req, SolrQueryResponse rsp) { + public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) { try { SolrIndexSearcher searcher = req.getSearcher(); IndexReader reader = searcher.getReader(); Collection fieldNames = reader.getFieldNames(IndexReader.FieldOption.ALL); - Map fields = new HashMap(); + Map fields = new HashMap(); IndexSchema schema = req.getSchema(); for (String fieldName : fieldNames) { - Map fieldInfo = new HashMap(); + Map fieldInfo = new HashMap(); FieldType fieldType = schema.getFieldTypeNoEx(fieldName); - fieldInfo.put("type", fieldType.getTypeName()); + if( fieldType != null ) { + fieldInfo.put("type", fieldType.getTypeName()); + } + else { + // This can happen if you change the schema + fieldInfo.put("type", null ); // "[unknown]"? nothing? + } fields.put(fieldName, fieldInfo); } rsp.add("fields", fields); - Map indexInfo = new HashMap(); + Map indexInfo = new HashMap(); indexInfo.put("numDocs", reader.numDocs()); indexInfo.put("maxDoc", reader.maxDoc()); indexInfo.put("version", reader.getVersion()); // indexInfo.put("age", ); // computed from SolrIndexSearcher.openedAt? rsp.add("index", indexInfo); - - rsp.add("NOTICE","This interface is experimental and may be changing"); + } catch (SolrException e) { rsp.setException(e); return; @@ -76,37 +78,24 @@ public class IndexInfoRequestHandler implements SolrRequestHandler, SolrInfoMBea //////////////////////// SolrInfoMBeans methods ////////////////////// - - public String getName() { - return IndexInfoRequestHandler.class.getName(); - } - - public String getVersion() { - return SolrCore.version; - } - + @Override public String getDescription() { return "The structure Solr request handler"; } - public Category getCategory() { - return Category.QUERYHANDLER; + @Override + public String getVersion() { + return "$Revision: 501512 $"; } + @Override public String getSourceId() { return "$Id: IndexInfoRequestHandler.java 487199 2006-12-14 13:03:40Z bdelacretaz $"; } + @Override public String getSource() { return "$URL: https://svn.apache.org/repos/asf/lucene/solr/trunk/src/java/org/apache/solr/request/IndexInfoRequestHandler.java $"; } - - public URL[] getDocs() { - return null; - } - - public NamedList getStatistics() { - return new SimpleOrderedMap(); - } }