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

hazendaz / displaytag / 1753

12 Feb 2026 03:17AM UTC coverage: 77.321% (-0.01%) from 77.334%
1753

push

github

web-flow
Merge pull request #1102 from hazendaz/renovate/javax-support-logback-monorepo

Update dependency ch.qos.logback:logback-classic to v1.5.29 (javax-support)

1438 of 2003 branches covered (71.79%)

Branch coverage included in aggregate %.

4034 of 5074 relevant lines covered (79.5%)

0.8 hits per line

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

65.88
/displaytag/src/main/java/org/displaytag/util/PostHref.java
1
/*
2
 * SPDX-License-Identifier: MIT
3
 * See LICENSE file for details.
4
 *
5
 * Copyright 2002-2026 Fabrizio Giustina, the Displaytag team
6
 */
7
package org.displaytag.util;
8

9
import java.net.URLDecoder;
10
import java.nio.charset.StandardCharsets;
11
import java.util.Iterator;
12
import java.util.Map;
13
import java.util.Map.Entry;
14
import java.util.Set;
15

16
import org.apache.commons.lang3.StringUtils;
17
import org.apache.commons.lang3.Strings;
18

19
/**
20
 * The Class PostHref.
21
 */
22
public class PostHref implements Href {
23

24
    /**
25
     * Serial ID.
26
     */
27
    private static final long serialVersionUID = 899149338534L;
28

29
    /** The parent. */
30
    private Href parent;
31

32
    /** The form. */
33
    private final String form;
34

35
    /**
36
     * Instantiates a new post href.
37
     *
38
     * @param parent
39
     *            the parent
40
     * @param form
41
     *            the form
42
     */
43
    public PostHref(final Href parent, final String form) {
1✔
44
        this.parent = parent;
1✔
45
        this.form = form;
1✔
46
    }
1✔
47

48
    /**
49
     * Adds the parameter.
50
     *
51
     * @param name
52
     *            the name
53
     * @param value
54
     *            the value
55
     *
56
     * @return the href
57
     *
58
     * @see org.displaytag.util.Href#addParameter(java.lang.String, java.lang.Object)
59
     */
60
    @Override
61
    public Href addParameter(final String name, final Object value) {
62
        this.parent.addParameter(name, value);
1✔
63
        return this;
1✔
64
    }
65

66
    /**
67
     * Adds the parameter.
68
     *
69
     * @param name
70
     *            the name
71
     * @param value
72
     *            the value
73
     *
74
     * @return the href
75
     *
76
     * @see org.displaytag.util.Href#addParameter(java.lang.String, int)
77
     */
78
    @Override
79
    public Href addParameter(final String name, final int value) {
80
        this.parent.addParameter(name, value);
×
81
        return this;
×
82
    }
83

84
    /**
85
     * Adds the parameter map.
86
     *
87
     * @param parametersMap
88
     *            the parameters map
89
     *
90
     * @see org.displaytag.util.Href#addParameterMap(java.util.Map)
91
     */
92
    @Override
93
    public void addParameterMap(final Map<String, String[]> parametersMap) {
94
        this.parent.addParameterMap(parametersMap);
×
95
    }
×
96

97
    /**
98
     * Equals.
99
     *
100
     * @param object
101
     *            the object
102
     *
103
     * @return true, if successful
104
     *
105
     * @see org.displaytag.util.Href#equals(java.lang.Object)
106
     */
107
    @Override
108
    public boolean equals(final Object object) {
109
        return this.parent.equals(object);
×
110
    }
111

112
    /**
113
     * Gets the anchor.
114
     *
115
     * @return the anchor
116
     *
117
     * @see org.displaytag.util.Href#getAnchor()
118
     */
119
    @Override
120
    public String getAnchor() {
121
        return this.parent.getAnchor();
×
122
    }
123

124
    /**
125
     * Gets the base url.
126
     *
127
     * @return the base url
128
     *
129
     * @see org.displaytag.util.Href#getBaseUrl()
130
     */
131
    @Override
132
    public String getBaseUrl() {
133
        return this.parent.getBaseUrl();
×
134
    }
135

136
    /**
137
     * Gets the parameter map.
138
     *
139
     * @return the parameter map
140
     *
141
     * @see org.displaytag.util.Href#getParameterMap()
142
     */
143
    @Override
144
    public Map<String, String[]> getParameterMap() {
145
        return this.parent.getParameterMap();
1✔
146
    }
147

148
    /**
149
     * Removes the parameter.
150
     *
151
     * @param name
152
     *            the name
153
     *
154
     * @see org.displaytag.util.Href#removeParameter(java.lang.String)
155
     */
156
    @Override
157
    public void removeParameter(final String name) {
158
        this.parent.removeParameter(name);
×
159
    }
×
160

161
    /**
162
     * Sets the anchor.
163
     *
164
     * @param name
165
     *            the new anchor
166
     *
167
     * @see org.displaytag.util.Href#setAnchor(java.lang.String)
168
     */
169
    @Override
170
    public void setAnchor(final String name) {
171
        this.parent.setAnchor(name);
×
172
    }
×
173

174
    /**
175
     * Sets the full url.
176
     *
177
     * @param url
178
     *            the new full url
179
     *
180
     * @see org.displaytag.util.Href#setFullUrl(java.lang.String)
181
     */
182
    @Override
183
    public void setFullUrl(final String url) {
184
        this.parent.setFullUrl(url);
×
185
    }
×
186

187
    /**
188
     * Sets the parameter map.
189
     *
190
     * @param parametersMap
191
     *            the parameters map
192
     *
193
     * @see org.displaytag.util.Href#setParameterMap(java.util.Map)
194
     */
195
    @Override
196
    public void setParameterMap(final Map<String, String[]> parametersMap) {
197
        this.parent.setParameterMap(parametersMap);
×
198
    }
×
199

200
    /**
201
     * To string.
202
     *
203
     * @return the string
204
     *
205
     * @see org.displaytag.util.Href#toString()
206
     */
207
    @Override
208
    public String toString() {
209

210
        final StringBuilder buffer = new StringBuilder(30);
1✔
211

212
        buffer.append("javascript:displaytagform('");
1✔
213
        buffer.append(this.form);
1✔
214
        buffer.append("',[");
1✔
215

216
        final Map<String, String[]> parameters = this.getParameterMap();
1✔
217

218
        final Set<Entry<String, String[]>> parameterSet = parameters.entrySet();
1✔
219

220
        final Iterator<Entry<String, String[]>> iterator = parameterSet.iterator();
1✔
221

222
        while (iterator.hasNext()) {
1✔
223
            // {f:'param1',v:'1'},
224
            final Entry<String, String[]> entry = iterator.next();
1✔
225

226
            final Object key = entry.getKey();
1✔
227
            final Object value = entry.getValue();
1✔
228

229
            buffer.append("{f:'");
1✔
230
            buffer.append(this.esc(key));
1✔
231
            buffer.append("',v:");
1✔
232

233
            if (value != null && value.getClass().isArray()) {
1!
234
                final Object[] values = (Object[]) value;
1✔
235

236
                if (values.length > 1) {
1!
237
                    buffer.append("[");
×
238
                }
239
                for (int i = 0; i < values.length; i++) {
1✔
240
                    if (i > 0) {
1!
241
                        buffer.append(",");
×
242
                    }
243

244
                    buffer.append("'");
1✔
245
                    buffer.append(this.esc(values[i]));
1✔
246
                    buffer.append("'");
1✔
247
                }
248
                if (values.length > 1) {
1!
249
                    buffer.append("]");
×
250
                }
251
            } else {
1✔
252
                buffer.append("'");
×
253
                buffer.append(this.esc(value));
×
254
                buffer.append("'");
×
255
            }
256

257
            buffer.append("}");
1✔
258

259
            if (iterator.hasNext()) {
1✔
260
                buffer.append(",");
1✔
261
            }
262
        }
1✔
263

264
        buffer.append("])");
1✔
265
        return buffer.toString();
1✔
266
    }
267

268
    /**
269
     * Esc.
270
     *
271
     * @param value
272
     *            the value
273
     *
274
     * @return the string
275
     */
276
    private String esc(final Object value) {
277
        String param = URLDecoder.decode(value != null ? value.toString() : StringUtils.EMPTY, StandardCharsets.UTF_8);
1!
278
        param = Strings.CS.replace(param, "'", "\\'");
1✔
279
        return Strings.CS.replace(param, "\"", "%22");
1✔
280
    }
281

282
    /**
283
     * Clone.
284
     *
285
     * @return the object
286
     *
287
     * @see java.lang.Object#clone()
288
     */
289
    @Override
290
    public Object clone() {
291
        final PostHref href;
292
        try {
293
            href = (PostHref) super.clone();
1✔
294
        } catch (final CloneNotSupportedException e) {
×
295
            throw new RuntimeException(e);
×
296
        }
1✔
297
        href.parent = (Href) this.parent.clone();
1✔
298

299
        return href;
1✔
300
    }
301

302
}
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