1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.example.demo;
21
22 import org.apache.commons.io.IOUtils;
23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory;
25
26 import javax.faces.context.ExternalContext;
27 import javax.faces.context.FacesContext;
28 import java.io.IOException;
29 import java.io.InputStream;
30 import java.lang.invoke.MethodHandles;
31 import java.nio.charset.StandardCharsets;
32
33 public abstract class SourceFileReader {
34
35 private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
36
37 public String getSource(final String filename) {
38 final FacesContext facesContext = FacesContext.getCurrentInstance();
39 final ExternalContext externalContext = facesContext.getExternalContext();
40 final String viewId = facesContext.getViewRoot().getViewId();
41 final String file = viewId.substring(0, viewId.lastIndexOf("/")) + "/" + filename;
42 try (final InputStream resourceAsStream = externalContext.getResourceAsStream(file)) {
43 if (resourceAsStream != null) {
44 return IOUtils.toString(resourceAsStream, StandardCharsets.UTF_8);
45 }
46 } catch (final IOException e) {
47 LOG.error("", e);
48 }
49 return null;
50 }
51 }