package org.nutz.mock.servlet.multipart; import java.io.IOException; import org.nutz.mock.servlet.multipart.inputing.Inputing; import org.nutz.mock.servlet.multipart.inputing.InputingHelper; import org.nutz.mock.servlet.multipart.inputing.VoidInputing; public abstract class MultipartItem { public MultipartItem(InputingHelper helper, String boundary) { inputs = new Inputing[7]; last = 0; index = 0; addInputing(helper.boundary(boundary)); } private Inputing[] inputs; private int last; private int index; private Inputing current; protected void addInputing(Inputing in) { inputs[last++] = in; } public long size() { long re = 0; for (int i = 0; i < last; i++) { re += inputs[i].size(); } return re; } public int read() throws IOException { int d = current.read(); while (d == -1) { if (index >= (last - 1)) return d; current = inputs[++index]; d = current.read(); } return d; } public void init() throws IOException { for (int i = 0; i < last; i++) inputs[i].init(); current = inputs.length > 0 ? inputs[0] : new VoidInputing(); } public void close() throws IOException { for (int i = 0; i < last; i++) inputs[i].close(); current = null; } }