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