users@jersey.java.net

[Jersey] handling dates as both java epoch longs and as ISO 8601 strings

From: phil swenson <phil.swenson_at_gmail.com>
Date: Fri, 11 Jul 2014 16:37:08 -0600

I want to make my date params work with either ISO 8601 or java longs…

Here’s a sample bit of code. I pass in all date params as strings and I
have a method (normalizeRestDateParam) that detects if the param is an ISO
date or a long and processes accordingly…. my question - is there a way to
use an annotation or convention to have that parameter intercepted and
processed so I don’t have to manually execute this code for all date/time
parameters?

Thanks!


@GET
    @Path("/ProcessMetrics")
    public ProcessMetrics
getProcessMetricData(@QueryParam("processModelId") String modelId,
                                                  @QueryParam("startTime")
String startTime, @QueryParam("endTime") String endTime, @NotNull
@QueryParam("statsInterval") long statsInterval) {
        try {
            //translate old style data class to new
            ProcessMetricData processMetricData =
getGlueProcessAnalyticsService().getProcessMetricData(modelId,
normalizeRestDateParam(startTime), normalizeRestDateParam(startTime),
statsInterval);
            ProcessMetrics processMetrics = new
ProcessMetrics(processMetricData.getVolumeStarted(),
processMetricData.getVolumeCompleted(),
processMetricData.getVolumeInProgress(),
                    processMetricData.getCycleTime(),
processMetricData.getCycleTimeMax(), processMetricData.getCycleTimeMax(),
                    processMetricData.getCycleTimeStandardDeviation(),
processMetricData.getCycleTimeMean(), processMetricData.getRuleViolations(),
                    processMetricData.getRuleViolationsOpen(),
processMetricData.getStartTime(), processMetricData.getEndTime());
            return processMetrics;
        } catch (Exception e) {
            throw new RuntimeExceptionAdapter(e);
        }
    }