Skip to content
This repository was archived by the owner on Dec 15, 2018. It is now read-only.

Commit 9d77c0c

Browse files
committed
Converted anonymous classes to inner classes in ViewableWriter
1 parent ea727c0 commit 9d77c0c

File tree

1 file changed

+55
-32
lines changed

1 file changed

+55
-32
lines changed

core/src/main/java/org/mvcspec/ozark/core/ViewableWriter.java

Lines changed: 55 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import org.mvcspec.ozark.event.AfterProcessViewEventImpl;
2121
import org.mvcspec.ozark.event.BeforeProcessViewEventImpl;
2222
import org.mvcspec.ozark.cdi.OzarkCdiExtension;
23-
import org.mvcspec.ozark.util.PathUtils;
2423

2524
import javax.enterprise.event.Event;
2625
import javax.enterprise.inject.Instance;
@@ -33,12 +32,9 @@
3332
import javax.mvc.event.AfterProcessViewEvent;
3433
import javax.mvc.event.BeforeProcessViewEvent;
3534
import javax.mvc.event.MvcEvent;
36-
import javax.servlet.RequestDispatcher;
37-
import javax.servlet.ServletException;
3835
import javax.servlet.ServletOutputStream;
3936
import javax.servlet.WriteListener;
4037
import javax.servlet.http.HttpServletRequest;
41-
import javax.servlet.http.HttpServletRequestWrapper;
4238
import javax.servlet.http.HttpServletResponse;
4339
import javax.servlet.http.HttpServletResponseWrapper;
4440
import javax.ws.rs.Produces;
@@ -137,35 +133,9 @@ public void writeTo(Viewable viewable, Class<?> aClass, Type type, Annotation[]
137133
}
138134

139135
// Create wrapper for response
140-
final ServletOutputStream responseStream = new ServletOutputStream() {
141-
@Override
142-
public void write(final int b) throws IOException {
143-
out.write(b);
144-
}
145-
146-
@Override
147-
public boolean isReady() {
148-
return false;
149-
}
150-
151-
@Override
152-
public void setWriteListener(WriteListener writeListener) {
153-
throw new UnsupportedOperationException("Not supported");
154-
}
155-
};
136+
final ServletOutputStream responseStream = new DelegatingServletOutputStream(out);
156137
final PrintWriter responseWriter = new PrintWriter(new OutputStreamWriter(responseStream, getCharset(headers)));
157-
final HttpServletResponse responseWrapper = new HttpServletResponseWrapper(response) {
158-
159-
@Override
160-
public ServletOutputStream getOutputStream() throws IOException {
161-
return responseStream;
162-
}
163-
164-
@Override
165-
public PrintWriter getWriter() throws IOException {
166-
return responseWriter;
167-
}
168-
};
138+
final HttpServletResponse responseWrapper = new MvcHttpServletResponse(response, responseStream, responseWriter);
169139

170140
// Pass request to view engine
171141
try {
@@ -238,4 +208,57 @@ private MediaType getMediaTypeFromHeaders(MultivaluedMap<String, Object> headers
238208

239209
}
240210

211+
/**
212+
* Implementation of {@link ServletOutputStream} which delegate all write operations
213+
* to an underlying {@link OutputStream} provided by JAX-RS.
214+
*/
215+
private static class DelegatingServletOutputStream extends ServletOutputStream {
216+
217+
private final OutputStream out;
218+
219+
public DelegatingServletOutputStream(OutputStream out) {
220+
this.out = out;
221+
}
222+
223+
@Override
224+
public void write(final int b) throws IOException {
225+
out.write(b);
226+
}
227+
228+
@Override
229+
public boolean isReady() {
230+
return false;
231+
}
232+
233+
@Override
234+
public void setWriteListener(WriteListener writeListener) {
235+
throw new UnsupportedOperationException("Not supported");
236+
}
237+
}
238+
239+
/**
240+
* Implementation of {@link HttpServletResponseWrapper} which returns custom
241+
* output streams and writers.
242+
*/
243+
private static class MvcHttpServletResponse extends HttpServletResponseWrapper {
244+
245+
private final ServletOutputStream responseStream;
246+
private final PrintWriter responseWriter;
247+
248+
public MvcHttpServletResponse(HttpServletResponse response, ServletOutputStream responseStream, PrintWriter responseWriter) {
249+
super(response);
250+
this.responseStream = responseStream;
251+
this.responseWriter = responseWriter;
252+
}
253+
254+
@Override
255+
public ServletOutputStream getOutputStream() throws IOException {
256+
return responseStream;
257+
}
258+
259+
@Override
260+
public PrintWriter getWriter() throws IOException {
261+
return responseWriter;
262+
}
263+
}
241264
}

0 commit comments

Comments
 (0)