diff --git a/src/org/redkale/boot/Application.java b/src/org/redkale/boot/Application.java index f186eddf6..aa76007ea 100644 --- a/src/org/redkale/boot/Application.java +++ b/src/org/redkale/boot/Application.java @@ -32,7 +32,6 @@ import org.redkale.util.AnyValue.DefaultAnyValue; import org.redkale.util.*; import org.redkale.watch.*; import org.w3c.dom.*; -import sun.misc.Signal; /** * @@ -624,35 +623,35 @@ public final class Application { } } - private void signalHandle() { - //http://www.comptechdoc.org/os/linux/programming/linux_pgsignals.html - String[] sigs = new String[]{"HUP", "TERM", "INT", "QUIT", "KILL", "TSTP", "USR1", "USR2", "STOP"}; - List list = new ArrayList<>(); - for (String sig : sigs) { - try { - list.add(new sun.misc.Signal(sig)); - } catch (Exception e) { - } - } - sun.misc.SignalHandler handler = new sun.misc.SignalHandler() { - - private volatile boolean runed; - - @Override - public void handle(Signal sig) { - if (runed) return; - runed = true; - logger.info(Application.this.getClass().getSimpleName() + " stoped\r\n"); - System.exit(0); - } - }; - for (Signal sig : list) { - try { - Signal.handle(sig, handler); - } catch (Exception e) { - } - } - } +// private void signalHandle() { +// //http://www.comptechdoc.org/os/linux/programming/linux_pgsignals.html +// String[] sigs = new String[]{"HUP", "TERM", "INT", "QUIT", "KILL", "TSTP", "USR1", "USR2", "STOP"}; +// List list = new ArrayList<>(); +// for (String sig : sigs) { +// try { +// list.add(new sun.misc.Signal(sig)); +// } catch (Exception e) { +// } +// } +// sun.misc.SignalHandler handler = new sun.misc.SignalHandler() { +// +// private volatile boolean runed; +// +// @Override +// public void handle(Signal sig) { +// if (runed) return; +// runed = true; +// logger.info(Application.this.getClass().getSimpleName() + " stoped\r\n"); +// System.exit(0); +// } +// }; +// for (Signal sig : list) { +// try { +// Signal.handle(sig, handler); +// } catch (Exception e) { +// } +// } +// } @SuppressWarnings("unchecked") private void runServers(CountDownLatch timecd, final List serconfs) throws Exception { diff --git a/src/org/redkale/net/http/HttpRequest.java b/src/org/redkale/net/http/HttpRequest.java index ccfa3db17..8daa4ae88 100644 --- a/src/org/redkale/net/http/HttpRequest.java +++ b/src/org/redkale/net/http/HttpRequest.java @@ -10,6 +10,7 @@ import java.net.*; import java.nio.ByteBuffer; import java.nio.channels.Channels; import java.nio.charset.Charset; +import java.util.*; import org.redkale.convert.json.JsonConvert; import org.redkale.net.*; import org.redkale.util.*; @@ -897,6 +898,20 @@ public class HttpRequest extends Request { return header; } + /** + * 将请求Header转换成Map + * + * @param map Map + * + * @return Map + */ + public Map getHeadersToMap(Map map) { + if (map == null) map = new LinkedHashMap<>(); + final Map map0 = map; + header.forEach((k, v) -> map0.put(k, v)); + return map0; + } + /** * 获取所有的header名 * @@ -1105,6 +1120,20 @@ public class HttpRequest extends Request { return params; } + /** + * 将请求参数转换成Map + * + * @param map Map + * + * @return Map + */ + public Map getParametersToMap(Map map) { + if (map == null) map = new LinkedHashMap<>(); + final Map map0 = map; + getParameters().forEach((k, v) -> map0.put(k, v)); + return map0; + } + /** * 获取所有参数名 * diff --git a/src/org/redkale/util/AnyValue.java b/src/org/redkale/util/AnyValue.java index e9fed84ab..0b779b75a 100644 --- a/src/org/redkale/util/AnyValue.java +++ b/src/org/redkale/util/AnyValue.java @@ -7,7 +7,7 @@ package org.redkale.util; import java.lang.reflect.Array; import java.util.*; -import java.util.function.BiPredicate; +import java.util.function.*; /** * 该类提供类似JSONObject的数据结构,主要用于读取xml配置文件和http-header存储 @@ -190,6 +190,25 @@ public abstract class AnyValue { return this; } + @Override + public void forEach(BiConsumer stringConsumer) { + forEach(stringConsumer, null); + } + + @Override + public void forEach(BiConsumer stringConsumer, BiConsumer anyConsumer) { + if (stringConsumer != null) { + for (Entry en : stringEntrys) { + stringConsumer.accept(en.name, en.value); + } + } + if (anyConsumer != null) { + for (Entry en : (Entry[]) anyEntrys) { + anyConsumer.accept(en.name, en.value); + } + } + } + @Override public Entry[] getStringEntrys() { return stringEntrys; @@ -430,6 +449,10 @@ public abstract class AnyValue { return sb.toString(); } + public abstract void forEach(BiConsumer stringConsumer); + + public abstract void forEach(BiConsumer stringConsumer, BiConsumer anyConsumer); + public abstract Entry[] getStringEntrys(); public abstract Entry[] getAnyEntrys();