diff --git a/src/main/java/org/redkale/convert/ArrayEncoder.java b/src/main/java/org/redkale/convert/ArrayEncoder.java index 018edc396..7c618da5f 100644 --- a/src/main/java/org/redkale/convert/ArrayEncoder.java +++ b/src/main/java/org/redkale/convert/ArrayEncoder.java @@ -48,6 +48,9 @@ public class ArrayEncoder implements Encodeable { } factory.register(type, this); this.componentEncoder = factory.loadEncoder(this.componentType); + if (componentEncoder == null) { + throw new ConvertException("ArrayEncoder init componentEncoder error, componentType = " + this.componentType); + } this.anyEncoder = factory.getAnyEncoder(); this.subTypeFinal = (this.componentType instanceof Class) && Modifier.isFinal(((Class) this.componentType).getModifiers()); } finally { @@ -84,13 +87,16 @@ public class ArrayEncoder implements Encodeable { e.printStackTrace(); } } + itemEncoder = this.componentEncoder; } } if (subTypeFinal) { if (out.writeArrayB(value.length, this, itemEncoder, value) < 0) { for (int i = 0;; i++) { writeMemberValue(out, member, itemEncoder, value[i], i); - if (i == iMax) break; + if (i == iMax) { + break; + } out.writeArrayMark(); } } @@ -100,7 +106,9 @@ public class ArrayEncoder implements Encodeable { for (int i = 0;; i++) { Object v = value[i]; writeMemberValue(out, member, ((v != null && (v.getClass() == comp || out.specify() == comp)) ? itemEncoder : anyEncoder), v, i); - if (i == iMax) break; + if (i == iMax) { + break; + } out.writeArrayMark(); } } diff --git a/src/main/java/org/redkale/net/http/HttpContext.java b/src/main/java/org/redkale/net/http/HttpContext.java index 6c2d02c88..0fe52fac4 100644 --- a/src/main/java/org/redkale/net/http/HttpContext.java +++ b/src/main/java/org/redkale/net/http/HttpContext.java @@ -5,14 +5,13 @@ */ package org.redkale.net.http; -import org.redkale.annotation.ConstructorParameters; -import org.redkale.asm.MethodDebugVisitor; import java.nio.channels.CompletionHandler; -import java.security.*; -import java.util.concurrent.*; -import org.redkale.asm.*; +import java.security.SecureRandom; +import java.util.concurrent.ConcurrentHashMap; +import org.redkale.annotation.ConstructorParameters; import static org.redkale.asm.Opcodes.*; -import org.redkale.net.*; +import org.redkale.asm.*; +import org.redkale.net.Context; import org.redkale.util.*; /** @@ -39,6 +38,7 @@ public class HttpContext extends Context { protected final AnyValue rpcAuthenticatorConfig; + //所有Servlet方法都不需要读取http-header,lazyHeaders=true protected boolean lazyHeaders; //存在动态改值 // protected RequestURINode[] uriCacheNodes; diff --git a/src/main/java/org/redkale/util/ByteArray.java b/src/main/java/org/redkale/util/ByteArray.java index a4656a86d..5b78ac04c 100644 --- a/src/main/java/org/redkale/util/ByteArray.java +++ b/src/main/java/org/redkale/util/ByteArray.java @@ -59,9 +59,15 @@ public final class ByteArray implements ByteTuple { */ public OutputStream newOutputStream() { return new OutputStream() { + @Override public void write(int b) throws IOException { - ByteArray.this.put((byte) b); + put((byte) b); + } + + @Override + public void write(byte b[], int off, int len) throws IOException { + put(b, off, len); } }; }