package javax.slee.profile; import javax.slee.InvalidStateException; import javax.slee.management.ManagementException; /** * This interface is implemented by a Profile MBean Class generated by the * SLEE for a profile specification. This interface contains essential operations * for managaing the life-cycle of Profile MBean objects. * <p> * The base JMX Object Name of a <code>ProfileMBean</code> object is specified by the * {@link #BASE_OBJECT_NAME} constant. The {@link #PROFILE_TABLE_NAME_KEY} and * {@link #PROFILE_NAME_KEY} constants define additional Object Name properties that * uniquely identify a profile. The complete Object Name for a Profile MBean can * be obtained by a management client via various methods in the * {@link javax.slee.management.ProfileProvisioningMBean} interface. */ public interface ProfileMBean { /** * The base JMX Object Name string of all SLEE Profile MBeans. This string is * equal to "javax.slee.profile:type=Profile" and the string <code>BASE_OBJECT_NAME + ",*"</code> * defines a JMX Object Name property pattern which matches with all Profile MBeans * that are registered with the MBean Server. A Profile MBean is registered with * the MBean Server using this base name in conjunction with properties whose keys * are specified by the {@link #PROFILE_TABLE_NAME_KEY} and {@link #PROFILE_NAME_KEY} * constants. * @since SLEE 1.1 */ public static final String BASE_OBJECT_NAME = "javax.slee.profile:type=Profile"; /** * The JMX Object Name property key that identifies a Profile MBean as representing * a profile belonging to the profile table specified by the value of this key in * the Object Name. This key is equal to the string "profileTableName". * @see #BASE_OBJECT_NAME * @see #PROFILE_NAME_KEY * @since SLEE 1.1 */ public static final String PROFILE_TABLE_NAME_KEY = "profileTableName"; /** * The JMX Object Name property key that identifies a Profile MBean as representing * the profile specified by the value of this key in the Object Name. This key * is equal to the string "profileName". * @see #BASE_OBJECT_NAME * @see #PROFILE_TABLE_NAME_KEY * @since SLEE 1.1 */ public static final String PROFILE_NAME_KEY = "profileName"; /** * Request that the client be granted read/write access to the profile * so that it may be updated. If the client already has read/write access * to the profile, this method returns silently. * @throws ManagementException if the profile could not be opened in * read/write mode due to a system-level failure. */ public void editProfile() throws ManagementException; /** * Request that changes made to a profile be committed by the SLEE. * If this method returns successfully, the SLEE must again permit the * client read-only access to the profile. * @throws InvalidStateException if the client does not have read/write * access to the profile, ie {@link #isProfileWriteable()} returns <code>false</code>. * @throws ProfileVerificationException if thrown by the {@link Profile#profileVerify} * callback method in the profile's Management Profile Abstract Class. This exception * can also be thrown by the profile MBean if the deployment descriptor for the profile * specification documents an indexed attribute as requiring unique values and a * non-unique value has been supplied in the profile. * @throws ManagementException if the commit operation could not be successfully * completed due to a system-level failure. */ public void commitProfile() throws InvalidStateException, ProfileVerificationException, ManagementException; /** * Request that changes made to profile should be discarded by the SLEE. * This method is typically invoked by a management client, but may also be * invoked by the SLEE if a client session times out. * If this method returns successfully, the SLEE must again permit the * client read-only access to the profile. * @throws InvalidStateException if the client does not have read/write * access to the profile, ie {@link #isProfileWriteable()} returns <code>false</code>. * @throws ManagementException if the restore operation could not be successfully * completed due to a system-level failure. */ public void restoreProfile() throws InvalidStateException, ManagementException; /** * Notify the SLEE that the profile is no longer required by the management * client. As the SLEE may subsequently deregister the profile from the MBean * server if no other client is currently accessing the profile, a client that * invokes this method should assume that the Object Name they had for the profile * is no longer valid once this method returns. * @throws InvalidStateException if the profile is in read-write mode and contains * uncommitted changes. * @throws ManagementException if the profile could not be closed by the SLEE due * to a system-level failure. */ public void closeProfile() throws InvalidStateException, ManagementException; /** * Determine if the profile has been modified since the request to edit the profile. * @return <code>true</code> if the profile has been modified in the current * editing session, <code>false</code> if the profile hasn't been modified or * the profile is read-only to the client. * @throws ManagementException if it could not be determined if the profile has * been modified due to a system-level failure. */ public boolean isProfileDirty() throws ManagementException; /** * Get the current read-write status of the profile. * @return <code>true</code> if the profile MBean may be changed by the management * client, ie. {@link #editProfile()} has been successfully invoked, * <code>false</code> otherwise. * @throws ManagementException if the read-write status of the profile could not * be interrogated due to a system-level failure. */ public boolean isProfileWriteable() throws ManagementException; }