javax.slee.profile.ProfileFacility Maven / Gradle / Ivy
package javax.slee.profile;
import java.util.Collection;
import javax.slee.TransactionRolledbackLocalException;
import javax.slee.facilities.FacilityException;
/**
* The Profile Facility allows SBB entities to interrogate the profile database to find
* profiles that match a selection criteria.
*
* An SBB obtains access to a ProfileFacility
object via its JNDI
* environment. The Profile Facility is bound into JNDI using the name specified
* by {@link #JNDI_NAME}.
*/
public interface ProfileFacility {
/**
* Constant declaring the JNDI name where a ProfileFacility
object
* is bound into an SBB's JNDI environment.
*
* The value of this constant is "java:comp/env/slee/facilities/profile".
* @since SLEE 1.1
*/
public static final String JNDI_NAME = "java:comp/env/slee/facilities/profile";
/**
* Get a collection of ProfileID
objects that identify all the profiles
* contained in the specified profile table. The collection returned is immutable. Any
* attempt to modify it, either directly or indirectly, will result in a
* java.lang.UnsupportedOperationException
being thrown.
*
* Note: A profile identifier for the profile table's default profile will not be
* included in the collection returned by this method as the default profile has no such
* identifier.
*
* This method is a required transactional method.
* @param profileTableName the name of the profile table.
* @return a read-only collection of {@link ProfileID} objects identifying the profiles
* contained in the specified profile table.
* @throws NullPointerException if profileTableName
is null
.
* @throws UnrecognizedProfileTableNameException if a profile table with the specified
* name does not exist.
* @throws TransactionRolledbackLocalException if this method was invoked without
* a valid transaction context and the transaction started by this method
* failed to commit.
* @throws FacilityException if the profile identifies could not be obtained due to a
* system-level failure.
* @deprecated Replaced with {@link #getProfileTable getProfileTable(profileTableName)}.{@link ProfileTable#findAll findAll()}
,
* which returns a collection of Profile Local Interface objects that can be
* used to interact with the profiles directly, rather than a collection of
* profile identifiers which require a secondary lookup via a get-profile-CMP
* method.
*/
public Collection getProfiles(String profileTableName)
throws NullPointerException, UnrecognizedProfileTableNameException,
TransactionRolledbackLocalException, FacilityException;
/**
* Get a collection of ProfileID
objects that identify the profiles contained
* in the specified profile table where the specified profile attribute is set to the specified
* value. In the case of a profile attribute of an array type, the type of the specified
* value must be the base component type of the array, not the array type itself, and the SLEE
* will return the profile identifier of any profile that contains the value within the array.
*
* The collection returned is immutable. Any attempt to modify it, either directly or indirectly,
* will result in a java.lang.UnsupportedOperationException
being thrown.
*
* Note: The profile table's default profile is not considered when determining
* matching profiles as it has no profile identifier that can be included in the collection
* returned by this method.
*
* This method is a required transactional method.
*
* This method can only be invoked against profile tables created from SLEE 1.0 profile
* specifications. Attempting to invoke it on a profile table created from a SLEE 1.1
* profile specification causes a FacilityException
to be thrown.
* @param profileTableName the name of the profile table.
* @param attributeName the name of the profile's attribute to check.
* @param attributeValue the value to compare the attribute with.
* @return a read-only collection of {@link ProfileID} objects identifying the profiles
* contained in the specified profile table, where the specified attribute of each profile
* equals the specified value.
* @throws NullPointerException if any argument is null
.
* @throws UnrecognizedProfileTableNameException if a profile table with the specified
* name does not exist.
* @throws UnrecognizedAttributeException if an attribute with the specified name is
* not defined in the profile specification for the specified profile table.
* @throws AttributeNotIndexedException if the specified attribute is not indexed
* in the profile specification for the specified profile table.
* @throws AttributeTypeMismatchException if the type of the supplied attribute value does not
* match the type of the specified indexed attribute.
* @throws TransactionRolledbackLocalException if this method was invoked without
* a valid transaction context and the transaction started by this method
* failed to commit.
* @throws FacilityException if the profile identifiers could not be obtained due to a
* system-level failure.
* @deprecated Replaced with {@link #getProfileTable getProfileTable(profileTableName)}.{@link ProfileTable#findProfilesByAttribute findProfilesByAttribute(attributeName, attributeValue)}
,
* which returns a collection of Profile Local Interface objects that can be
* used to interact with the profiles directly, rather than a collection of
* profile identifiers which require a secondary lookup via a get-profile-CMP
* method.
*/
public Collection getProfilesByIndexedAttribute(String profileTableName, String attributeName, Object attributeValue)
throws NullPointerException, UnrecognizedProfileTableNameException,
UnrecognizedAttributeException, AttributeNotIndexedException,
AttributeTypeMismatchException, TransactionRolledbackLocalException,
FacilityException;
/**
* Get a ProfileID
object that identifies the profile contained in the specified
* profile table, where the specified profile attribute is set to the specified value.
* In the case of a profile attribute of an array type, the type of the specified value must
* be the base component type of the array, not the array type itself, and the SLEE will
* return the profile identifier of any profile that contains the value within the array.
*
* Note: The profile table's default profile is not considered when determining
* matching profiles as it has no profile identifier that can be returned by this method.
*
* This method is a required transactional method.
*
* This method can only be invoked against profile tables created from SLEE 1.0 profile
* specifications. Attempting to invoke it on a profile table created from a SLEE 1.1
* profile specification causes a FacilityException
to be thrown.
* @param profileTableName the name of the profile table.
* @param attributeName the name of the profile's attribute to check.
* @param attributeValue the value to compare the attribute with.
* @return the {@link ProfileID profile identifier} for the first matching profile, or
* null
if no matching profile was found.
* @throws NullPointerException if any attribute is null
.
* @throws UnrecognizedProfileTableNameException if a profile table with the specified
* name does not exist.
* @throws UnrecognizedAttributeException if an attribute with the specified name is
* not defined in the profile specification for the specified profile table.
* @throws AttributeNotIndexedException if the specified attribute is not indexed
* in the profile specification for the specified profile table.
* @throws AttributeTypeMismatchException if the type of the supplied attribute value does not
* match the type of the specified indexed attribute.
* @throws TransactionRolledbackLocalException if this method was invoked without
* a valid transaction context and the transaction started by this method
* failed to commit.
* @throws FacilityException if the profile identifier could not be obtained due to a
* system-level failure.
* @deprecated Replaced with {@link #getProfileTable getProfileTable(profileTableName)}.{@link ProfileTable#findProfileByAttribute findProfileByAttribute(attributeName, attributeValue)}
,
* which returns a Profile Local Interface object that can be used to interact
* with the profile directly, rather than a profile identifier which requires a
* secondary lookup via a get-profile-CMP method.
*/
public ProfileID getProfileByIndexedAttribute(String profileTableName, String attributeName, Object attributeValue)
throws NullPointerException, UnrecognizedProfileTableNameException,
UnrecognizedAttributeException, AttributeNotIndexedException,
AttributeTypeMismatchException, TransactionRolledbackLocalException,
FacilityException;
/**
* Get a ProfileTableActivity
object for a profile table.
*
* This method is a required transactional method.
* @param profileTableName the name of the profile table.
* @return a {@link ProfileTableActivity} object for the profile table.
* @throws NullPointerException if profileTableName
is null
.
* @throws UnrecognizedProfileTableNameException if a profile table with the specified
* name does not exist.
* @throws TransactionRolledbackLocalException if this method was invoked without
* a valid transaction context and the transaction started by this method
* failed to commit.
* @throws FacilityException if the activity could not be obtained due to a system-level
* failure. This exception is also thrown if the method is invoked on a
* ProfileFacility
object provided to a resource adaptor via its
* {@link javax.slee.resource.ResourceAdaptorContext}.
*/
public ProfileTableActivity getProfileTableActivity(String profileTableName)
throws NullPointerException, UnrecognizedProfileTableNameException,
TransactionRolledbackLocalException, FacilityException;
/**
* Get a ProfileTable
object for a profile table. The object returned
* by this method may be safely typecast to the Profile Table Interface defined
* by the profile specification of the profile table if the SBB has the appropriate
* classes in its classloader to do so, for example by declaring a profile-spec-ref
* in its deployment descriptor for the profile specification of the Profile Table.
*
* This method is a non-transactional method.
* @since SLEE 1.1
* @param profileTableName the name of the profile table.
* @return a {@link ProfileTable} object for the profile table.
* @throws NullPointerException if profileTableName
is null
.
* @throws UnrecognizedProfileTableNameException if a profile table with the specified
* name does not exist.
* @throws FacilityException if the ProfileTable
object could not be
* obtained due to a system-level-failure.
*/
public ProfileTable getProfileTable(String profileTableName)
throws NullPointerException, UnrecognizedProfileTableNameException,
FacilityException;
}