blob: 299de8ed244a5d1817e34e698a4f0593b6c1a132 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.chemistry.opencmis.server.impl.webservices;
import java.util.HashMap;
import java.util.Map;
import org.apache.chemistry.opencmis.commons.server.CallContext;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor;
import org.apache.cxf.phase.Phase;
/**
* Base class for all interceptors that add data to the call context.
*/
public abstract class AbstractCallContextInterceptor extends AbstractSoapInterceptor {
public AbstractCallContextInterceptor() {
super(Phase.PRE_INVOKE);
}
/**
* Returns the current call context map.
*
* @return the call context map or {@code null} if there isn't one
*/
@SuppressWarnings("unchecked")
protected Map<String, String> getCurrentCallContextMap(SoapMessage message) {
Object callContextMapObject = message.getExchange().getInMessage().get(AbstractService.CALL_CONTEXT_MAP);
if (callContextMapObject instanceof Map) {
return (Map<String, String>) callContextMapObject;
}
return null;
}
/**
* Sets a new call context map.
*/
protected void setCallContextMap(SoapMessage message, Map<String, String> callContextMap) {
message.getExchange().getInMessage().put(AbstractService.CALL_CONTEXT_MAP, callContextMap);
}
/**
* Returns the current user.
*/
protected String getCurrentUser(SoapMessage message) {
Map<String, String> callContextMap = getCurrentCallContextMap(message);
if (callContextMap != null) {
return callContextMap.get(CallContext.USERNAME);
}
return null;
}
/**
* Adds data to the current call context map.
*/
protected void addToCurrentCallContextMap(SoapMessage message, Map<String, String> callContextMapAdditions) {
Map<String, String> callContextMap = getCurrentCallContextMap(message);
if (callContextMap == null) {
callContextMap = new HashMap<String, String>();
}
callContextMap.putAll(callContextMapAdditions);
setCallContextMap(message, callContextMap);
}
/**
* Adds a user and a password to the current call context map.
*/
protected void setUserAndPassword(SoapMessage message, String user, String password) {
Map<String, String> callContextMap = getCurrentCallContextMap(message);
if (callContextMap == null) {
callContextMap = new HashMap<String, String>();
}
callContextMap.put(CallContext.USERNAME, user);
callContextMap.put(CallContext.PASSWORD, password);
setCallContextMap(message, callContextMap);
}
/**
* Adds just a user to the current call context map.
*/
protected void setUser(SoapMessage message, String user) {
Map<String, String> callContextMap = getCurrentCallContextMap(message);
if (callContextMap == null) {
callContextMap = new HashMap<String, String>();
}
callContextMap.put(CallContext.USERNAME, user);
setCallContextMap(message, callContextMap);
}
}