summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorMax Romanov <max.romanov@nginx.com>2020-10-14 16:18:34 +0300
committerMax Romanov <max.romanov@nginx.com>2020-10-14 16:18:34 +0300
commit9dcb7ec4b791f542a81e552dbb7a1cfa43430dd4 (patch)
tree1ebd454f809acb7ee078536d84aea6ff8f9fb920 /src
parent90b2c9f7d62a1f1f9cee11fba0ca47821de9faa7 (diff)
downloadunit-9dcb7ec4b791f542a81e552dbb7a1cfa43430dd4.tar.gz
unit-9dcb7ec4b791f542a81e552dbb7a1cfa43430dd4.tar.bz2
Java: response locale methods implemented.
This closes #479 issue on GitHub.
Diffstat (limited to 'src')
-rw-r--r--src/java/nginx/unit/Response.java21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/java/nginx/unit/Response.java b/src/java/nginx/unit/Response.java
index 099d7f15..268b359d 100644
--- a/src/java/nginx/unit/Response.java
+++ b/src/java/nginx/unit/Response.java
@@ -40,11 +40,13 @@ public class Response implements HttpServletResponse {
private String characterEncoding = defaultCharacterEncoding;
private String contentType = null;
private String contentTypeHeader = null;
+ private Locale locale = null;
private static final Charset ISO_8859_1 = StandardCharsets.ISO_8859_1;
private static final Charset UTF_8 = StandardCharsets.UTF_8;
private static final String CONTENT_TYPE = "Content-Type";
+ private static final byte[] CONTENT_LANGUAGE_BYTES = "Content-Language".getBytes(ISO_8859_1);
private static final byte[] SET_COOKIE_BYTES = "Set-Cookie".getBytes(ISO_8859_1);
private static final byte[] EXPIRES_BYTES = "Expires".getBytes(ISO_8859_1);
@@ -590,9 +592,13 @@ public class Response implements HttpServletResponse {
@Override
public Locale getLocale()
{
- log("getLocale");
+ trace("getLocale");
- return null;
+ if (locale == null) {
+ return Locale.getDefault();
+ }
+
+ return locale;
}
@Override
@@ -795,7 +801,16 @@ public class Response implements HttpServletResponse {
@Override
public void setLocale(Locale loc)
{
- log("setLocale: " + loc);
+ trace("setLocale: " + loc);
+
+ if (loc == null || isCommitted()) {
+ return;
+ }
+
+ locale = loc;
+ String lang = locale.toString().replace('_', '-');
+
+ setHeader(req_info_ptr, CONTENT_LANGUAGE_BYTES, lang.getBytes(ISO_8859_1));
}
private void log(String msg)