3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
11 package eu
.etaxonomy
.cdm
.remote
.controller
.interceptor
;
13 import java
.util
.regex
.Matcher
;
14 import java
.util
.regex
.Pattern
;
16 import javax
.servlet
.http
.HttpServletRequest
;
17 import javax
.servlet
.http
.HttpServletResponse
;
19 import org
.apache
.log4j
.Logger
;
20 import org
.springframework
.web
.servlet
.handler
.HandlerInterceptorAdapter
;
22 import eu
.etaxonomy
.cdm
.database
.NamedContextHolder
;
25 * @author a.kohlbecker
28 public class DatasourceContextHandlerInterceptor
extends HandlerInterceptorAdapter
{
29 private static final Logger logger
= Logger
.getLogger(DatasourceContextHandlerInterceptor
.class);
31 private final static Pattern basepathPattern
= Pattern
.compile("^/([^/]+)/.*");
34 public boolean preHandle(HttpServletRequest request
, HttpServletResponse response
, Object handler
) throws Exception
{
35 Matcher matcher
= basepathPattern
.matcher(request
.getServletPath());
36 if (matcher
.matches())
38 String basepath
= matcher
.group(1);
39 NamedContextHolder
.setContextKey(basepath
);
40 logger
.info("datasource context set to: " + basepath
);
48 public void afterCompletion(HttpServletRequest request
, HttpServletResponse response
, Object handler
, Exception ex
) throws Exception
{
49 NamedContextHolder
.clearContextKey();
50 logger
.info("datasource context cleared");