You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jd...@apache.org on 2014/05/01 22:13:29 UTC

svn commit: r1591762 - in /lucene/dev/branches/lucene5376_2/lucene/server/src/java/org/apache/lucene/server: Server.java handlers/HelpHandler.java

Author: jdyer
Date: Thu May  1 20:13:29 2014
New Revision: 1591762

URL: http://svn.apache.org/r1591762
Log:
LUCENE-5376: add HelpHandler to aid new users and provide quick reference

Added:
    lucene/dev/branches/lucene5376_2/lucene/server/src/java/org/apache/lucene/server/handlers/HelpHandler.java   (with props)
Modified:
    lucene/dev/branches/lucene5376_2/lucene/server/src/java/org/apache/lucene/server/Server.java

Modified: lucene/dev/branches/lucene5376_2/lucene/server/src/java/org/apache/lucene/server/Server.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/lucene/server/src/java/org/apache/lucene/server/Server.java?rev=1591762&r1=1591761&r2=1591762&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376_2/lucene/server/src/java/org/apache/lucene/server/Server.java (original)
+++ lucene/dev/branches/lucene5376_2/lucene/server/src/java/org/apache/lucene/server/Server.java Thu May  1 20:13:29 2014
@@ -27,7 +27,9 @@ import java.io.StringWriter;
 import java.io.Writer;
 import java.net.InetSocketAddress;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -73,12 +75,12 @@ import org.jboss.netty.handler.codec.htt
 import org.jboss.netty.handler.codec.http.HttpVersion;
 import org.jboss.netty.handler.codec.http.QueryStringDecoder;
 import org.jboss.netty.util.CharsetUtil;
+
 import net.minidev.json.JSONObject;
 import net.minidev.json.JSONStyleIdent;
 import net.minidev.json.parser.ContainerFactory;
 import net.minidev.json.parser.JSONParser;
 import net.minidev.json.parser.ParseException;
-
 import static org.jboss.netty.handler.codec.http.HttpVersion.HTTP_1_1;
 
 //import static org.jboss.netty.handler.codec.http.HttpHeaders.*;
@@ -302,7 +304,9 @@ public class Server {
         try {
           handler = globalState.getHandler(command);
         } catch (IllegalArgumentException iae) {
-          throw new IllegalArgumentException("unrecognized method \"" + command + "\"");
+          params = new HashMap<String, List<String>>(params);
+          params.put("message", Arrays.asList(new String[] { iae.getMessage() }));
+          handler = globalState.getHandler("help");
         }
 
         if (handler.doStream()) {
@@ -636,6 +640,7 @@ public class Server {
       globalState.addHandler("deleteAllDocuments", new DeleteAllDocumentsHandler(globalState));
       globalState.addHandler("deleteIndex", new DeleteIndexHandler(globalState));
       globalState.addHandler("deleteDocuments", new DeleteDocumentsHandler(globalState));
+      globalState.addHandler("help", new HelpHandler(globalState));
       globalState.addHandler("liveSettings", new LiveSettingsHandler(globalState));
       globalState.addHandler("liveValues", new LiveValuesHandler(globalState));
       globalState.addHandler("registerFields", new RegisterFieldHandler(globalState));

Added: lucene/dev/branches/lucene5376_2/lucene/server/src/java/org/apache/lucene/server/handlers/HelpHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376_2/lucene/server/src/java/org/apache/lucene/server/handlers/HelpHandler.java?rev=1591762&view=auto
==============================================================================
--- lucene/dev/branches/lucene5376_2/lucene/server/src/java/org/apache/lucene/server/handlers/HelpHandler.java (added)
+++ lucene/dev/branches/lucene5376_2/lucene/server/src/java/org/apache/lucene/server/handlers/HelpHandler.java Thu May  1 20:13:29 2014
@@ -0,0 +1,93 @@
+package org.apache.lucene.server.handlers;
+
+import java.io.IOException;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import net.minidev.json.JSONObject;
+import net.minidev.json.JSONStyle;
+import net.minidev.json.JSONStyleIdent;
+
+import org.apache.lucene.server.FinishRequest;
+import org.apache.lucene.server.GlobalState;
+import org.apache.lucene.server.IndexState;
+import org.apache.lucene.server.params.Param;
+import org.apache.lucene.server.params.Request;
+import org.apache.lucene.server.params.StringType;
+import org.apache.lucene.server.params.StructType;
+
+/*
+ * 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.
+ */
+
+public class HelpHandler extends Handler {
+  
+  /** The parameters this handler accepts. */
+  public final static StructType TYPE =
+    new StructType(
+        new Param("message", "Optional message to tell user why Help was invoked.", new StringType())
+    );
+    
+  /** Sole constructor. */
+  public HelpHandler(GlobalState globalState) {
+    super(globalState);
+    requiresIndexName = false;
+  }
+
+  @Override
+  public FinishRequest handle(IndexState state, Request request,
+      Map<String,List<String>> params) throws Exception {
+    final JSONObject result = new JSONObject();
+    if(params.get("message")!=null) {
+      result.put("message", params.get("message"));
+    }
+    Map<String,JSONObject> handlerInfo = new LinkedHashMap<String,JSONObject>();
+    for(Map.Entry<String,Handler> entry : globalState.getHandlers().entrySet()) {
+      String handlerName = entry.getKey();
+      Handler handler = entry.getValue();
+      String handlerDesc = handler.getTopDoc();
+      Map<String,String> paramInfo = new LinkedHashMap<String,String>();
+      for(Map.Entry<String,Param> paramEntry : handler.getType().params.entrySet()) {
+        Param param = paramEntry.getValue();
+        paramInfo.put(paramEntry.getKey(), param.name + " (" + param.type.getClass().getSimpleName() + ")");
+      }
+      JSONObject handlerJson = new JSONObject();
+      handlerJson.put("description", handlerDesc);
+      handlerJson.put("parameters", paramInfo);
+      handlerInfo.put(handlerName, handlerJson);
+    }
+    result.put("Available Handlers", handlerInfo);
+        
+    return new FinishRequest() {
+      @Override
+      public String finish() {
+        return result.toString(new JSONStyleIdent());
+      }
+    };
+  }
+    
+  @Override
+  public StructType getType() {
+    return TYPE;
+  }
+  
+  @Override
+  public String getTopDoc() {
+    return "Display help on server usage.";
+  }
+  
+}