SLING-7258 - org.apache.sling.starter.startup.impl.StartupFilter should return 503 when Sling is starting
* optimised the reading of the embedded HTML page
diff --git a/pom.xml b/pom.xml
index abae456..c4c6121 100644
--- a/pom.xml
+++ b/pom.xml
@@ -80,9 +80,8 @@
<version>1.0.0</version>
</dependency>
<dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.5</version>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
diff --git a/src/main/java/org/apache/sling/starter/startup/impl/StartupFilter.java b/src/main/java/org/apache/sling/starter/startup/impl/StartupFilter.java
index 9b361f8..9a92990 100644
--- a/src/main/java/org/apache/sling/starter/startup/impl/StartupFilter.java
+++ b/src/main/java/org/apache/sling/starter/startup/impl/StartupFilter.java
@@ -16,9 +16,13 @@
*/
package org.apache.sling.starter.startup.impl;
+import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
+import java.util.stream.Collectors;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
@@ -27,12 +31,39 @@
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class StartupFilter implements Filter {
+ private static final Logger LOG = LoggerFactory.getLogger(StartupFilter.class);
+
private String content;
+ StartupFilter() {
+ if (content == null) {
+ InputStream is = StartupFilter.class.getClassLoader().getResourceAsStream("index.html");
+ if (is != null) {
+ BufferedReader buffer = null;
+ try {
+ buffer = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+ content = buffer.lines().collect(Collectors.joining(System.lineSeparator()));
+ } catch (UnsupportedEncodingException e) {
+ LOG.error("Cannot read embedded HTML page.", e);
+ } finally {
+ if (buffer != null) {
+ try {
+ buffer.close();
+ } catch (IOException e) {
+ LOG.error("Unable to release resource.", e);
+ }
+ }
+ }
+ }
+
+ }
+ }
+
@Override
public void init(final FilterConfig filterConfig) {
// nothing to do
@@ -40,12 +71,7 @@
@Override
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException {
- InputStream is;
- if (content == null) {
- is = StartupFilter.class.getClassLoader().getResourceAsStream("index.html");
- content = IOUtils.toString(is, "UTF-8");
- IOUtils.closeQuietly(is);
- }
+
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setContentType("text/html");
httpResponse.setCharacterEncoding("utf-8");