AnyValue增加forEach方法

This commit is contained in:
Redkale
2017-11-11 13:39:08 +08:00
parent 6e70f2043e
commit 98a6c3ef79
3 changed files with 82 additions and 31 deletions

View File

@@ -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 {

View File

@@ -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;
}
/** /**
* 获取所有参数名 * 获取所有参数名
* *

View File

@@ -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();