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.";
+ }
+
+}