package org.etk.core.rest.impl.header;
import java.util.Locale;
import javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate;
public class LocaleHeaderDelegate extends AbstractHeaderDelegate<Locale> {
/**
* {@inheritDoc}
*/
@Override
public Class<Locale> support() {
return Locale.class;
}
/**
* {@inheritDoc}
*/
public Locale fromString(String header) {
if (header == null)
throw new IllegalArgumentException();
header = HeaderHelper.removeWhitespaces(header);
int p;
// Can be set multiple content language, the take first one
if ((p = header.indexOf(',')) > 0)
header = header.substring(0, p);
p = header.indexOf('-');
if (p != -1 && p < header.length() - 1)
return new Locale(header.substring(0, p), header.substring(p + 1));
else
return new Locale(header);
}
/**
* {@inheritDoc}
*/
public String toString(Locale locale) {
String lan = locale.getLanguage();
// For output if language does not set correctly then ignore it.
if ("".equals(lan) || "*".equals(lan))
return null;
String con = locale.getCountry();
if ("".equals(lan))
return lan.toLowerCase();
return lan.toLowerCase() + "-" + con.toLowerCase();
}
}