+++ /dev/null
-package de.juplo.accelerator.examples.spring;
-
-import de.juplo.accelerator.annotations.CacheSeconds;
-import de.juplo.accelerator.annotations.Cacheable;
-import de.juplo.accelerator.annotations.LastModified;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TreeMap;
-import javax.servlet.http.HttpServletRequest;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.servlet.ModelAndView;
-
-
-/**
- * Simple Spring-MVC Controller
- * @author kai
- */
-@Controller
-@Cacheable(eager=true)
-public class SpringController
-{
- public static final String ACCESS_TIME = SpringController.class.getCanonicalName() + ".ACCESS_TIME";
- public static final Integer DEFAULT_MAX_AGE = 60;
-
- private Date lastModified = new Date();
- private Map<Date,String> requests = new TreeMap<Date,String>();
- private Map<String,Date> accessTimes = new HashMap<String,Date>();
-
-
- @CacheSeconds
- public int cacheSeconds(HttpServletRequest request) {
- String maxAge = request.getParameter("max-age");
- if (maxAge != null && maxAge.matches("^\\s*\\d+\\s*$"))
- return Integer.parseInt(maxAge);
- else
- return DEFAULT_MAX_AGE;
- }
-
- @LastModified
- public long lastModified(HttpServletRequest request) {
- String query = request.getQueryString();
- query = query == null ? "" : query;
- Date accessTime = accessTimes.get(query);
- if (accessTime == null || !accessTime.equals(lastModified))
- /** Neuer Zugriff! */
- accessTime = new Date();
- request.setAttribute(ACCESS_TIME, accessTime);
- return accessTime.getTime();
- }
-
- @RequestMapping("/spring-controller.html")
- public ModelAndView process(HttpServletRequest request)
- {
- lastModified = (Date)request.getAttribute(ACCESS_TIME);
- String query = request.getQueryString();
- query = query == null ? "" : query;
- requests.put(lastModified, query);
- accessTimes.put(query, lastModified);
- ModelAndView mav = new ModelAndView("controller-view");
- mav.addObject("requests", requests);
- return mav;
- }
-}
\ No newline at end of file