• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

hazendaz / sitemesh2 / 59

22 Mar 2026 02:30AM UTC coverage: 40.347%. Remained the same
59

push

github

hazendaz
[mvn] Update maven wrapper

698 of 1891 branches covered (36.91%)

Branch coverage included in aggregate %.

1555 of 3693 relevant lines covered (42.11%)

0.42 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/main/java/com/opensymphony/module/sitemesh/filter/Buffer.java
1
/*
2
 * SPDX-License-Identifier: Apache-2.0
3
 * Copyright 2011-2026 Hazendaz
4
 */
5
/* This software is published under the terms of the OpenSymphony Software
6
 * License version 1.1, of which a copy has been included with this
7
 * distribution in the LICENSE.txt file. */
8
package com.opensymphony.module.sitemesh.filter;
9

10
import com.opensymphony.module.sitemesh.DefaultSitemeshBuffer;
11
import com.opensymphony.module.sitemesh.Page;
12
import com.opensymphony.module.sitemesh.PageParser;
13
import com.opensymphony.module.sitemesh.SitemeshBuffer;
14
import com.opensymphony.module.sitemesh.SitemeshBufferWriter;
15
import com.opensymphony.module.sitemesh.util.FastByteArrayOutputStream;
16

17
import jakarta.servlet.ServletOutputStream;
18
import jakarta.servlet.WriteListener;
19

20
import java.io.IOException;
21
import java.io.PrintWriter;
22

23
/**
24
 * When SiteMesh is activated for a request, the contents of the response are stored in this buffer, where they can
25
 * later be accessed as a parsed Page object.
26
 *
27
 * @author Joe Walnes
28
 */
29
public class Buffer {
30

31
    /** The page parser. */
32
    private final PageParser pageParser;
33

34
    /** The encoding. */
35
    private final String encoding;
36

37
    /** The Constant TEXT_ENCODER. */
38
    private static final TextEncoder TEXT_ENCODER = new TextEncoder();
×
39

40
    /** The buffered writer. */
41
    private SitemeshBufferWriter bufferedWriter;
42

43
    /** The buffered stream. */
44
    private FastByteArrayOutputStream bufferedStream;
45

46
    /** The exposed writer. */
47
    private PrintWriter exposedWriter;
48

49
    /** The exposed stream. */
50
    private ServletOutputStream exposedStream;
51

52
    /**
53
     * Instantiates a new buffer.
54
     *
55
     * @param pageParser
56
     *            the page parser
57
     * @param encoding
58
     *            the encoding
59
     */
60
    public Buffer(PageParser pageParser, String encoding) {
×
61
        this.pageParser = pageParser;
×
62
        this.encoding = encoding;
×
63
    }
×
64

65
    /**
66
     * Gets the contents.
67
     *
68
     * @return the contents
69
     *
70
     * @throws IOException
71
     *             Signals that an I/O exception has occurred.
72
     */
73
    public SitemeshBuffer getContents() throws IOException {
74
        if (bufferedWriter != null) {
×
75
            return bufferedWriter.getSitemeshBuffer();
×
76
        }
77
        if (bufferedStream != null) {
×
78
            return new DefaultSitemeshBuffer(TEXT_ENCODER.encode(bufferedStream.toByteArray(), encoding));
×
79
        } else {
80
            return new DefaultSitemeshBuffer(new char[0]);
×
81
        }
82
    }
83

84
    /**
85
     * Parses the.
86
     *
87
     * @return the page
88
     *
89
     * @throws IOException
90
     *             Signals that an I/O exception has occurred.
91
     */
92
    public Page parse() throws IOException {
93
        return pageParser.parse(getContents());
×
94
    }
95

96
    /**
97
     * Gets the writer.
98
     *
99
     * @return the writer
100
     */
101
    public PrintWriter getWriter() {
102
        if (bufferedWriter == null) {
×
103
            if (bufferedStream != null) {
×
104
                throw new IllegalStateException("response.getWriter() called after response.getOutputStream()");
×
105
            }
106
            bufferedWriter = new SitemeshBufferWriter(128);
×
107
            exposedWriter = new SitemeshPrintWriter(bufferedWriter);
×
108
        }
109
        return exposedWriter;
×
110
    }
111

112
    /**
113
     * Gets the output stream.
114
     *
115
     * @return the output stream
116
     */
117
    public ServletOutputStream getOutputStream() {
118
        if (bufferedStream == null) {
×
119
            if (bufferedWriter != null) {
×
120
                throw new IllegalStateException("response.getOutputStream() called after response.getWriter()");
×
121
            }
122
            bufferedStream = new FastByteArrayOutputStream();
×
123
            exposedStream = new ServletOutputStream() {
×
124
                @Override
125
                public void write(int b) {
126
                    bufferedStream.write(b);
×
127
                }
×
128

129
                @Override
130
                public boolean isReady() {
131
                    return false;
×
132
                }
133

134
                @Override
135
                public void setWriteListener(WriteListener writeListener) {
136
                    // TODO Not implemented
137
                }
×
138
            };
139
        }
140
        return exposedStream;
×
141
    }
142

143
    /**
144
     * Checks if is using stream.
145
     *
146
     * @return true, if is using stream
147
     */
148
    public boolean isUsingStream() {
149
        return bufferedStream != null;
×
150
    }
151
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc