blob: c1f847c3e7121ac26158a5e93b2d1e9a44e5aaa2 [file] [log] [blame]
Stuart McCulloch39cc9ac2012-07-16 13:43:38 +00001package aQute.bnd.osgi;
Stuart McCullochbb014372012-06-07 21:57:32 +00002
3import java.io.*;
4
5public class PreprocessResource extends AbstractResource {
Stuart McCulloch2286f232012-06-15 13:27:53 +00006 final Resource resource;
7 final Processor processor;
Stuart McCullochbb014372012-06-07 21:57:32 +00008
Stuart McCulloch2286f232012-06-15 13:27:53 +00009 public PreprocessResource(Processor processor, Resource r) {
10 super(r.lastModified());
11 this.processor = processor;
12 this.resource = r;
13 setExtra(resource.getExtra());
14 }
Stuart McCullochbb014372012-06-07 21:57:32 +000015
Stuart McCulloch55d4dfe2012-08-07 10:57:21 +000016 @Override
Stuart McCulloch2286f232012-06-15 13:27:53 +000017 protected byte[] getBytes() throws Exception {
18 ByteArrayOutputStream bout = new ByteArrayOutputStream(2000);
19 OutputStreamWriter osw = new OutputStreamWriter(bout, Constants.DEFAULT_CHARSET);
20 PrintWriter pw = new PrintWriter(osw);
21 InputStream in = null;
22 BufferedReader rdr = null;
23 try {
Stuart McCullochbb014372012-06-07 21:57:32 +000024 in = resource.openInputStream();
Stuart McCulloch2286f232012-06-15 13:27:53 +000025 rdr = new BufferedReader(new InputStreamReader(in, "UTF8"));
26 String line = rdr.readLine();
27 while (line != null) {
28 line = processor.getReplacer().process(line);
29 pw.println(line);
30 line = rdr.readLine();
31 }
32 pw.flush();
33 byte[] data = bout.toByteArray();
34 return data;
35
36 }
37 finally {
Stuart McCullochbb014372012-06-07 21:57:32 +000038 if (rdr != null) {
39 rdr.close();
40 }
41 if (in != null) {
42 in.close();
43 }
Stuart McCulloch2286f232012-06-15 13:27:53 +000044 }
45 }
Stuart McCullochbb014372012-06-07 21:57:32 +000046}