001package org.apache.archiva.redback.rest.services.interceptors; 002/* 003 * Licensed to the Apache Software Foundation (ASF) under one 004 * or more contributor license agreements. See the NOTICE file 005 * distributed with this work for additional information 006 * regarding copyright ownership. The ASF licenses this file 007 * to you under the Apache License, Version 2.0 (the 008 * "License"); you may not use this file except in compliance 009 * with the License. You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, 014 * software distributed under the License is distributed on an 015 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 016 * KIND, either express or implied. See the License for the 017 * specific language governing permissions and limitations 018 * under the License. 019 */ 020 021 022import org.apache.archiva.redback.rest.services.RedbackAuthenticationThreadLocal; 023import org.slf4j.Logger; 024import org.slf4j.LoggerFactory; 025import org.springframework.stereotype.Service; 026 027import javax.annotation.Priority; 028import javax.ws.rs.container.ContainerRequestContext; 029import javax.ws.rs.container.ContainerRequestFilter; 030import javax.ws.rs.container.ContainerResponseContext; 031import javax.ws.rs.container.ContainerResponseFilter; 032import javax.ws.rs.container.PreMatching; 033import javax.ws.rs.ext.Provider; 034import java.io.IOException; 035 036/** 037 * @author Olivier Lamy 038 * @since 1.4 039 */ 040@Service( "threadLocalUserCleaner#rest" ) 041@Provider 042@PreMatching 043@Priority( Priorities.INITIALIZE ) 044public class ThreadLocalUserCleaner 045 implements ContainerResponseFilter 046{ 047 private final Logger log = LoggerFactory.getLogger( getClass() ); 048 049 050 public ThreadLocalUserCleaner() 051 { 052 } 053 054 private void cleanup() 055 { 056 RedbackAuthenticationThreadLocal.set( null ); 057 } 058 059 @Override 060 public void filter( ContainerRequestContext requestContext, ContainerResponseContext responseContext ) throws IOException 061 { 062 log.debug( "ThreadLocalUserCleaner cleanup" ); 063 cleanup(); 064 } 065}