You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Hong-Thai Nguyen <Ho...@polyspot.com> on 2010/11/30 12:10:58 UTC

RE: BasicHelloRequestHandler plugin - class path changed

Hi,
I found the problem:
The class name has been changed to 1.4.1:
From: import org.apache.solr.response.SolrQueryResponse;
To: import org.apache.solr.request.SolrQueryResponse;

Best,
-------------------
Hong-Thai

-----Message d'origine-----
De : Hong-Thai Nguyen [mailto:Hong-Thai.Nguyen@polyspot.com] 
Envoyé : lundi 29 novembre 2010 16:41
À : solr-user@lucene.apache.org
Objet : BasicHelloRequestHandler plugin

Hi,

Thank for helping us.

I’m creating a ‘helloword’ plugin in Solr 1.4 in BasicHelloRequestHandler.java

In solrconfig.xml, I added:

 

    <requestHandler name="hello" class="com.polyspot.mercury.handler.BasicHelloRequestHandler" >

    <!-- default values for query parameters -->

     <lst name="defaults">

               <str name="message">Default message</str>     

               <int name="anumber">-10</int>     

     </lst>

  </requestHandler>

 

I verified ‘hello’ plugin is figured well at: http://localhost:8983/solr/admin/plugins

 

When I executed: http://localhost:8983/solr/select?qt=hello, the java.lang.AbstractMethodError raised:

type Rapport d'état

message null java.lang.AbstractMethodError at org.apache.solr.core.SolrCore.execute(SolrCore.java:1316) at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:338) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Thread.java:595) 

I supposed that handleRequest in the BasicHelloRequestHandler isn’t called.

Here’s BasicHelloRequestHandler .java code:

import com.polyspot.mercury.common.params.HelloParams;

import org.apache.solr.common.SolrException;

import org.apache.solr.common.params.SolrParams;

import org.apache.solr.common.util.NamedList;

import org.apache.solr.common.util.SimpleOrderedMap;

import org.apache.solr.request.SolrQueryRequest;

import org.apache.solr.request.SolrRequestHandler;

import org.apache.solr.response.SolrQueryResponse;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

 

import java.net.URL;

 

 

/**

 * User: nguyenht

 * Date: 26 nov. 2010

 */

public class BasicHelloRequestHandler implements SolrRequestHandler {

 

  protected static Logger log = LoggerFactory.getLogger(BasicHelloRequestHandler.class);

 

  protected NamedList initArgs = null;

  protected SolrParams defaults;

 

 

  /**

   * <code>init</code> will be called just once, immediately after creation.

   * <p>The args are user-level initialization parameters that

   * may be specified when declaring a request handler in

   * solrconfig.xml

   */

  public void init(NamedList args) {

    log.info("initializing BasicHelloRequestHandler: " + args);

 

    initArgs = args;

 

    if (args != null) {

      Object o = args.get("defaults");

      if (o != null && o instanceof NamedList) {

        defaults = SolrParams.toSolrParams((NamedList) o);

      }

    }

 

  }

 

  /**

   * Handles a query request, this method must be thread safe.

   * <p/>

   * Information about the request may be obtained from <code>req</code> and

   * response information may be set using <code>rsp</code>.

   * <p/>

   * There are no mandatory actions that handleRequest must perform.

   * An empty handleRequest implementation would fulfill

   * all interface obligations.

   */

  public void handleRequest(SolrQueryRequest solrQueryRequest, SolrQueryResponse solrQueryResponse) {

 

    log.info("handling request for BasicHelloRequestHandler: ");

 

    //get request params

    SolrParams params = solrQueryRequest.getParams();

    String message = params.get(HelloParams.MESSAGE);

 

    if (message == null)

    {         

      throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "message is mandatory");

    }

 

 

    log.info("get anumber ");

 

    Integer anumber = params.getInt(HelloParams.ANUMBER);

    if (anumber == null)

    {

      anumber = defaults.getInt(HelloParams.ANUMBER);

    }

    

 

 

    int messageLength = message.length();

 

 

    //write response

    solrQueryResponse.add("yousaid", message);

    solrQueryResponse.add("message length", messageLength);

    solrQueryResponse.add("optionalNumber", anumber);

 

 

  }

 

  /*

  methods below are for JMX info

   */

 

 public String getName() {

    return this.getClass().getName();

  }

 

  public String getVersion() {

    return "1";  //TODO implement this

  }

 

  public String getDescription() {

    return "hello";  //TODO implement this

  }

 

  public Category getCategory() {

    return Category.OTHER;  //TODO implement this

  }

 

  public String getSourceId() {

    return "some hello source id from " + BasicHelloRequestHandler.class.getCanonicalName();

  }

 

  public String getSource() {

    return "some hello source ";  //TODO implement this

  }

 

  public URL[] getDocs() {

    return null;  //TODO implement this

  }

 

  public NamedList getStatistics() {

    return new SimpleOrderedMap();

  }

}

)