org.picketlink.idm.IdentityCache Maven / Gradle / Ivy
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* 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.picketlink.idm;
import org.picketlink.idm.model.IdentityType;
import org.picketlink.idm.model.Partition;
import org.picketlink.idm.model.basic.Agent;
import org.picketlink.idm.model.basic.Group;
import org.picketlink.idm.model.basic.Realm;
import org.picketlink.idm.model.basic.Role;
import org.picketlink.idm.model.basic.User;
/**
* Storage for User, Group and Role instances to enable quick resolution of identity memberships.
*
* TODO: dicuss if we can have only two methods here. put(IdentityType) and lookup/get(IdentityType).
* TODO: dicuss if we need cache capabilities when using stores like the the JPA that usually have its own cache mechanisms (eg.: hibernate second level cache).
*
* @author Shane Bryzak
*/
public interface IdentityCache {
/**
* Returns the cached User object for the specified id, in the specified Realm. If the User has
* not previously been cached, returns null.
*
* @param realm
* @param loginName
* @return
*/
User lookupUser(Realm realm, String loginName);
/**
* Returns the cached Group object with the specified group id, in the specified partition. If the
* Group has not previously been cached, returns null.
*
* @param partition
* @param groupPath
* @return
*/
Group lookupGroup(Partition partition, String groupPath);
/**
* Returns the cached Role object with the specified name, in the specified partition. If the
* Role has not previously been cached, returns null.
*
* @param partition
* @param name
* @return
*/
Role lookupRole(Partition partition, String name);
/**
* Inserts the specified user into the cache, for the specified Realm.
*
* @param realm
* @param user
*/
void putUser(Realm realm, User user);
/**
* Inserts the specified group into the cache, within the specified Partition.
*
* @param partition
* @param group
*/
void putGroup(Partition partition, Group group);
/**
* Inserts the specified role into the cache, within the specified Partition.
*
* @param partition
* @param role
*/
void putRole(Partition partition, Role role);
/**
* Returns the cached {@link Agent} object for the specified id, in the specified Realm. If the {@link Agent} has
* not previously been cached, returns null.
*
* @param realm
* @param loginName
* @return
*/
Agent lookupAgent(Realm realm, String loginName);
/**
* Inserts the specified {@link Agent} into the cache, within the specified Partition.
*
* @param partition
* @param role
*/
void putAgent(Realm realm, Agent agent);
/**
*
* @param identity
*/
void invalidate(Partition partition, IdentityType identity);
}