org.aspectj.asm.IRelationshipMap Maven / Gradle / Ivy
/* *******************************************************************
* Copyright (c) 2003 Contributors.
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Mik Kersten initial implementation
* ******************************************************************/
package org.aspectj.asm;
import java.io.Serializable;
import java.util.List;
import java.util.Set;
/**
* Maps from a program element handles to a list of relationships between that element and other program elements. Each element in
* the list or relationships is uniquely identified by a kind and a relationship name. For example, the advice affecting a
* particular shadow (e.g. method call) can be retrieved by calling get
on the handle for that method. Symmetrically
* the method call shadows that an advice affects can be retrieved.
*
*
*
* The elements can be stored and looked up as IProgramElement(s), in which cases the element corresponding to the handle is looked
* up in the containment hierarchy.
*
*
* put/get methods taking IProgramElement as a parameter are for convenience only. They work identically to calling their
* counterparts with IProgramElement.getIdentifierHandle()
*
* @author Mik Kersten
* @author Andy Clement
*/
public interface IRelationshipMap extends Serializable {
/**
* @return list of relationships or null if the source element has no relationships
*/
public List get(IProgramElement sourceProgramElement);
/**
* @return list of relationships or null if the source element has no relationships
*/
public List get(String sourceHandle);
/**
* Return a relationship matching the kind and name for the given element.
*
* @return null if the relationship is not found.
*/
public IRelationship get(IProgramElement source, IRelationship.Kind kind, String relationshipName, boolean runtimeTest,
boolean createIfMissing);
/**
* Return a relationship matching the kind and name for the given element.
*
* @return null if the relationship is not found.
*/
public IRelationship get(IProgramElement source, IRelationship.Kind kind, String relationshipName);
/**
* Return a relationship matching the kind and name for the given element. Creates the relationship if not found.
*
* @return null if the relationship is not found.
*/
public IRelationship get(String source, IRelationship.Kind kind, String relationshipName, boolean runtimeTest,
boolean createIfMissing);
public void put(IProgramElement source, IRelationship relationship);
public void put(String handle, IRelationship relationship);
public boolean remove(String handle, IRelationship relationship);
public void removeAll(String source);
/**
* Clear all of the relationships in the map.
*/
public void clear();
public Set getEntries();
}