1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.mycore.common.xsl;
20
21 import java.io.IOException;
22 import java.io.InputStream;
23 import java.util.Optional;
24
25 import javax.xml.transform.stream.StreamSource;
26
27 import org.mycore.common.MCRException;
28
29
30
31
32
33
34 public class MCRLazyStreamSource extends StreamSource {
35
36 private InputStreamSupplier inputStreamSupplier;
37
38 public MCRLazyStreamSource(InputStreamSupplier inputStreamSupplier, String systemId) {
39 super(systemId);
40 this.inputStreamSupplier = Optional.ofNullable(inputStreamSupplier).orElse(() -> null);
41 }
42
43 @Override
44 public void setInputStream(InputStream inputStream) {
45 inputStreamSupplier = () -> inputStream;
46 }
47
48 @Override
49 public InputStream getInputStream() {
50 try {
51 return inputStreamSupplier.get();
52 } catch (IOException e) {
53 throw new MCRException(e);
54 }
55 }
56
57 @FunctionalInterface
58 public interface InputStreamSupplier {
59 InputStream get() throws IOException;
60 }
61
62 }