/** * Licensed to Apereo under one or more contributor license agreements. See the NOTICE file * distributed with this work for additional information regarding copyright ownership. Apereo * 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 the * following location: * * <p>http://www.apache.org/licenses/LICENSE-2.0 * * <p>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.apereo.portal.groups; import java.util.Iterator; import javax.naming.Name; import org.apereo.portal.EntityIdentifier; /** * Defines an api for discovering entry points into a composite groups system consisting of * component group services. These entry points are represented by <code>IGroupMembers</code>. The * role of the <code>IGroupMember</code>is somewhat analogous to that of an <code>InitialContext * </code> in JNDI. Once a client gets an <code>IGroupMember</code>, subsequent requests for * navigating the system or maintaining groups go thru the <code>IGroupMember</code> api and are * serviced by the individual component services. * */ public interface ICompositeGroupService extends IComponentGroupService { public static final Class<IEntityGroup> GROUP_ENTITY_TYPE = IEntityGroup.class; public static final Class<IEntity> LEAF_ENTITY_TYPE = IEntity.class; /** * Returns the groups that contain the <code>IGroupMember</code>. * * @param gm IGroupMember */ public Iterator findParentGroups(IGroupMember gm) throws GroupsException; /** Returns a pre-existing <code>IEntityGroup</code> or null if it does not exist. */ public IEntityGroup findGroup(String key) throws GroupsException; /** Returns a pre-existing <code>IEntityGroup</code> or null if it does not exist. */ public ILockableEntityGroup findGroupWithLock(String key, String owner) throws GroupsException; /** * Returns an <code>IEntity</code> representing a portal entity. This does not guarantee that * the entity actually exists. */ public IEntity getEntity(String key, Class type) throws GroupsException; /** * Returns an <code>IEntity</code> representing a portal entity. This does not guarantee that * the entity actually exists. */ public IEntity getEntity(String key, Class type, String service) throws GroupsException; /** * Returns an <code>IGroupMember</code> representing either a group or a portal entity. If the * parm <code>type</code> is the group type, the <code>IGroupMember</code> is an <code> * IEntityGroup</code>. Otherwise it is an <code>IEntity</code>. */ public IGroupMember getGroupMember(String key, Class type) throws GroupsException; /** * Returns a new <code>IEntityGroup</code> for the given Class with an unused key from the named * service. */ public IEntityGroup newGroup(Class type, Name serviceName) throws GroupsException; /** * Find EntityIdentifiers for entities whose name matches the query string according to the * specified method and is of the specified type */ public EntityIdentifier[] searchForEntities(String query, int method, Class type) throws GroupsException; /** * Find EntityIdentifiers for entities whose name matches the query string according to the * specified method, is of the specified type and descends from the specified group */ public EntityIdentifier[] searchForEntities( String query, int method, Class type, IEntityGroup ancestor) throws GroupsException; /** * Find EntityIdentifiers for groups whose name matches the query string according to the * specified method and matches the provided leaf type */ public EntityIdentifier[] searchForGroups(String query, int method, Class leaftype) throws GroupsException; /** * Find EntityIdentifiers for groups whose name matches the query string according to the * specified method, has the provided leaf type and descends from the specified group */ public EntityIdentifier[] searchForGroups( String query, int method, Class leaftype, IEntityGroup ancestor) throws GroupsException; }