package com.guokr.protocol.xcf; import java.io.IOException; import java.io.InputStream; import java.io.SequenceInputStream; import java.net.URL; import java.net.URLConnection; import java.util.Collections; import java.util.List; public abstract class XcfConnection extends URLConnection { private final URL base; private final URL url; private List<InputStream> bottoms; public XcfConnection(URL base, URL url) { super(url); this.base = base; this.url = url; } public abstract List<InputStream> list(URL base, String find, String pattern) throws IOException; @Override public void connect() throws IOException { bottoms = list(base, url.getPath(), url.getRef()); } @Override public InputStream getInputStream() throws IOException { if (bottoms == null) { connect(); } return new SequenceInputStream(Collections.enumeration(bottoms)); } }