Also, may want to use instanceof instead of == for class comparison, in case subclasses are used.

        Erik

On Jul 10, 2009, at 3:06 PM, Chris Hostetter wrote:


Dude .... you've got to at least run "ant test" before you commit ...
TestWriterPerf can't even compile now.

This breaks anyone that was explicitly passing null to the existing
getRequestHandler(String) method (like TestWriterPerf) ... but besides
that it also seems really weird to have a method that takes in a class and arbitrarily returns the first instance of that class found -- especially since it's iterating over the values in a Map, so if someone has multiple
instances of a handler they could get a different one each time this
method is called.

making a method that returns *all* the handlers of that type seems like a
better general feature for SolrCore/RequestHandlers, and then in this
specific use case of the replication JSP can be as arbitrary as it wants.


i've got a fix i'll commit as soon as my tests finish...



: Date: Fri, 10 Jul 2009 10:04:29 -0000
: From: no...@apache.org
: Reply-To: solr-dev@lucene.apache.org
: To: solr-comm...@lucene.apache.org
: Subject: svn commit: r792861 - in /lucene/solr/trunk/src:
:     java/org/apache/solr/core/RequestHandlers.java
: java/org/apache/solr/core/SolrCore.java webapp/web/admin/ index.jsp
:     webapp/web/admin/replication/header.jsp
:
: Author: noble
: Date: Fri Jul 10 10:04:29 2009
: New Revision: 792861
:
: URL: http://svn.apache.org/viewvc?rev=792861&view=rev
: Log:
: SOLR-1255 An attempt to visit the replication admin page when its not a defined handler should display an approp message
:
: Modified:
: lucene/solr/trunk/src/java/org/apache/solr/core/ RequestHandlers.java
:     lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java
:     lucene/solr/trunk/src/webapp/web/admin/index.jsp
:     lucene/solr/trunk/src/webapp/web/admin/replication/header.jsp
:
: Modified: lucene/solr/trunk/src/java/org/apache/solr/core/ RequestHandlers.java
: URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/core/RequestHandlers.java?rev=792861&r1=792860&r2=792861&view=diff
: = = = = = = = = ====================================================================== : --- lucene/solr/trunk/src/java/org/apache/solr/core/ RequestHandlers.java (original) : +++ lucene/solr/trunk/src/java/org/apache/solr/core/ RequestHandlers.java Fri Jul 10 10:04:29 2009
: @@ -66,7 +66,7 @@
:    public RequestHandlers(SolrCore core) {
:        this.core = core;
:    }
: -
: +
:    /**
:     * @return the RequestHandler registered at the given name
:     */
: @@ -74,6 +74,13 @@
:      return handlers.get(normalize(handlerName));
:    }
:
: +  public SolrRequestHandler get(Class clazz) {
: +    for (SolrRequestHandler requestHandler : handlers.values()) {
: +      if(requestHandler.getClass() == clazz) return requestHandler;
: +    }
: +    return null;
: +  }
: +
:    /**
: * Handlers must be initialized before calling this function. As soon as this is
:     * called, the handler can immediately accept requests.
:
: Modified: lucene/solr/trunk/src/java/org/apache/solr/core/ SolrCore.java
: URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java?rev=792861&r1=792860&r2=792861&view=diff
: = = = = = = = = ====================================================================== : --- lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java (original) : +++ lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java Fri Jul 10 10:04:29 2009
: @@ -767,6 +767,10 @@
:    public SolrRequestHandler getRequestHandler(String handlerName) {
:      return reqHandlers.get(handlerName);
:    }
: +
: +  public SolrRequestHandler getRequestHandler(Class clazz) {
: +    return reqHandlers.get(clazz);
: +  }
:
:    /**
: * Returns an unmodifieable Map containing the registered handlers
:
: Modified: lucene/solr/trunk/src/webapp/web/admin/index.jsp
: URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/web/admin/index.jsp?rev=792861&r1=792860&r2=792861&view=diff
: = = = = = = = = ======================================================================
: --- lucene/solr/trunk/src/webapp/web/admin/index.jsp (original)
: +++ lucene/solr/trunk/src/webapp/web/admin/index.jsp Fri Jul 10 10:04:29 2009
: @@ -24,11 +24,12 @@
:  <%@ page import="java.util.List" %>
:  <%@ page import="java.util.Collection" %>
:  <%@ page import="org.apache.solr.request.SolrRequestHandler"%>
: +<%@ page import="org.apache.solr.handler.ReplicationHandler" %>
:
:  <%-- jsp:include page="header.jsp"/ --%>
:  <%-- do a verbatim include so we can use the local vars --%>
:  <%...@include file="header.jsp" %>
: -<%SolrRequestHandler replicationhandler = core.getRequestHandler("/replication");%> : +<%SolrRequestHandler replicationhandler = core.getRequestHandler(ReplicationHandler.class);%>
:  <br clear="all">
:  <table>
:
:
: Modified: lucene/solr/trunk/src/webapp/web/admin/replication/ header.jsp
: URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/web/admin/replication/header.jsp?rev=792861&r1=792860&r2=792861&view=diff
: = = = = = = = = ====================================================================== : --- lucene/solr/trunk/src/webapp/web/admin/replication/header.jsp (original) : +++ lucene/solr/trunk/src/webapp/web/admin/replication/header.jsp Fri Jul 10 10:04:29 2009
: @@ -21,14 +21,14 @@
:                                org.apache.solr.request.LocalSolrQueryRequest,
:                                org.apache.solr.request.SolrQueryResponse,
:                                org.apache.solr.request.SolrRequestHandler"%>
: -
: -<html>
: -<head>
: -
: +<%@ page import="org.apache.solr.handler.ReplicationHandler" %>
:  <%
:  request.setCharacterEncoding("UTF-8");
:  %>
:
: +<html>
: +<head>
: +
:  <%...@include file="../_info.jsp" %>
:
:  <script>
: @@ -55,7 +55,11 @@
:  %>
:
:  <%
: -final SolrRequestHandler rh = core.getRequestHandler("/ replication"); : +final SolrRequestHandler rh = core.getRequestHandler(ReplicationHandler.class);
: +  if(rh == null){
: +    response.sendError( 404, "No ReplicationHandler registered" );
: +    return;
: +  }
:  NamedList namedlist = executeCommand("details",core,rh);
:  NamedList detailsMap = (NamedList)namedlist.get("details");
:  if(detailsMap != null)
:
:



-Hoss

Reply via email to