/* Licensed 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.activiti.engine.test.cfg.multitenant;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.activiti.engine.impl.cfg.multitenant.TenantInfoHolder;
import org.activiti.engine.impl.identity.Authentication;
/**
* @author Joram Barrez
*/
public class DummyTenantInfoHolder implements TenantInfoHolder {
protected Map<String, List<String>> tenantToUserMapping = new HashMap<String, List<String>>();
protected Map<String, String> userToTenantMapping = new HashMap<String, String>();
protected ThreadLocal<String> currentUserId = new ThreadLocal<String>();
protected ThreadLocal<String> currentTenantId = new ThreadLocal<String>();
public Collection<String> getAllTenants() {
return tenantToUserMapping.keySet();
}
public void setCurrentUserId(String userId) {
currentUserId.set(userId);
currentTenantId.set(userToTenantMapping.get(userId));
Authentication.setAuthenticatedUserId(userId); // Activiti engine
}
public String getCurrentUserId() {
return currentUserId.get();
}
public void clearCurrentUserId() {
currentTenantId.set(null);
}
public void setCurrentTenantId(String tenantid) {
currentTenantId.set(tenantid);
}
public String getCurrentTenantId() {
return currentTenantId.get();
}
public void clearCurrentTenantId() {
currentTenantId.set(null);
}
public void addTenant(String tenantId) {
tenantToUserMapping.put(tenantId, new ArrayList<String>());
updateUserMap();
}
public void addUser(String tenantId, String userId) {
tenantToUserMapping.get(tenantId).add(userId);
updateUserMap();
}
protected void updateUserMap() {
userToTenantMapping.clear();
for (String tenantId : tenantToUserMapping.keySet()) {
List<String> userIds = tenantToUserMapping.get(tenantId);
for (String tenantUserId : userIds) {
userToTenantMapping.put(tenantUserId, tenantId);
}
}
}
}