Этот код:
if (ConverterUtil.convertToString(param).matches("\\d{4}-\\d{2}-\\d{2}"))
будет работать только с одним из доступных представлений даты. В спецификации WSDL вы обнаружите, что 2011-03-21+05:30
также является правильным представлением даты, оно просто включает часовой пояс как +5 часов и смещение на 30 минут по UTC.
По умолчанию Axis2 генерирует даты с часовым поясом, но должна работать с другими форматами даты.
Чтобы проверить, начинается ли строка с YYYY-MM-DD
даты, вы можете использовать такой код:
if (! sd.matches("\\d{4}-\\d{2}-\\d{2}.*"))
throw new ParseException("Something is terribly wrong with date: " + sd, 0);
else
{
sd = sd.substring(0, 10);
System.out.println("ok: '" + sd + "'");
}
PS Вы избегаете \d
как \\d
?
PPS Почему вы бросаете RuntimeException
? Есть много «лучших» исключений, таких как ParseException
(используется методами анализа дат JDK) или IllegalArgumentException
(используется библиотекой времени joda)