public abstract class Profile
extends java.lang.Object
A profile specifies a set of beans to define, a name, and a set of properties with which to configure the beans. A profile can be created with or without a URL:
The Audit framework manages a set of predefined profiles that are registered with Audit by extensions using the Audit profile hook, and which are explicitly documented and always available to the user. These are created with an id in addition to a URL. The id is used by the Audit framework to maintain the association of the file as it evolves over time with the named profile known to the user.
Constructor and Description |
---|
Profile() |
Modifier and Type | Method and Description |
---|---|
abstract void |
addChangeListener(javax.swing.event.ChangeListener listener)
Adds a change listener to be notified when changes are applied to this profile.
|
abstract void |
applyChanges(ProfileTransaction transaction)
Apply the changes in a transaction to this profile.
|
abstract ExtensionBean |
createBean(BeanDefinition definition, boolean force, java.util.Map<java.lang.String,ExtensionBean> context)
Creates an instance of a bean in this profile.
|
abstract java.util.Map<java.lang.String,ExtensionBean> |
createBeans(boolean force)
Creates instances of all beans in this profile.
|
abstract ProfileTransaction |
createTransaction()
Creates a transaction for this profile.
|
abstract ValueHandle |
getChangedValue(java.lang.String id, java.lang.String propertyName)
Gets the value of a property of a bean of this profile changed from its default value, null if not changed.
|
abstract MultiMap<java.lang.String,ValueHandle> |
getChangedValues()
Gets the properties of beans of this profile changed from their default values.
|
abstract java.util.Collection<ValueHandle> |
getChangedValues(java.lang.String id)
Gets the properties of a bean of this profile changed from their default values, or null if none.
|
abstract java.lang.Object |
getDefaultValue(BeanDefinition definition, java.lang.String propertyName)
Gets the default value of a property of a bean of this profile.
|
abstract ProfileDefinition |
getDefinition()
Gets the definition of this profile, or null if not a predefined profile.
|
abstract BeanDefinition |
getDefinition(java.lang.String id)
Gets the definition of a specified bean in this profile, or null if none.
|
abstract java.util.Collection<BeanDefinition> |
getDefinitions()
Gets the definitions of all beans in this profile.
|
abstract java.lang.String |
getId()
Gets the id of this profile, or null if not a predefined profile.
|
abstract java.lang.String |
getName()
Gets the name of this profile.
|
abstract java.net.URL |
getURL()
Gets the URL from which to load properties of this profile, or null if this profile is not associated with a file.
|
abstract boolean |
isEnabled(java.lang.String id)
Gets whether a bean in this profile is enabled.
|
abstract boolean |
isSealed()
Gets whether this profile is sealed.
|
abstract void |
removeChangeListener(javax.swing.event.ChangeListener listener)
Adds a change listener to be notified when changes are applied to this profile.
|
abstract void |
save(java.net.URL url)
Saves this profile.
|
public abstract ProfileDefinition getDefinition()
public abstract java.lang.String getId()
public abstract java.lang.String getName()
public abstract java.net.URL getURL()
public abstract java.util.Collection<BeanDefinition> getDefinitions()
public abstract BeanDefinition getDefinition(java.lang.String id)
id
- the id of the bean.public abstract boolean isSealed()
public abstract java.util.Map<java.lang.String,ExtensionBean> createBeans(boolean force)
When force is true, loading classes is first tried with the Audit class loader before an unloaded extension is loaded.
force
- Whether to load the extension defining this bean if needed.java.lang.IllegalStateException
- if profile properties are not configured.public abstract ExtensionBean createBean(BeanDefinition definition, boolean force, java.util.Map<java.lang.String,ExtensionBean> context)
When force is true, loading classes is first tried with the Audit class loader before an unloaded extension is loaded.
The created bean is added to the context map, referenced beans are taken from the context map if present, otherwise they are created and added to the context map.
definition
- The definition of the bean to load.force
- Whether to load the extension defining this bean if needed.context
- Context map for the created bean.java.lang.IllegalStateException
- if profile properties are not configured.public abstract boolean isEnabled(java.lang.String id)
id
- the id of the bean.java.lang.IllegalStateException
- if profile properties are not loaded.java.lang.IllegalStateException
- if the bean is not defined or does not support the enabled property.public abstract java.lang.Object getDefaultValue(BeanDefinition definition, java.lang.String propertyName) throws java.beans.IntrospectionException, java.lang.reflect.InvocationTargetException, java.lang.IllegalAccessException
definition
- The definition of the bean.propertyName
- The name of the property.java.lang.IllegalStateException
- if the extension defining the bean is not loaded.java.beans.IntrospectionException
java.lang.reflect.InvocationTargetException
java.lang.IllegalAccessException
public abstract ValueHandle getChangedValue(java.lang.String id, java.lang.String propertyName)
id
- the id of the bean.propertyName
- the name of the property.java.lang.IllegalStateException
- if profile properties are not configured.public abstract java.util.Collection<ValueHandle> getChangedValues(java.lang.String id)
java.lang.IllegalStateException
- if profile properties are not configured.public abstract MultiMap<java.lang.String,ValueHandle> getChangedValues()
java.lang.IllegalStateException
- if profile properties are not configured.public abstract ProfileTransaction createTransaction()
java.lang.IllegalStateException
- if profile properties are not configured.public abstract void addChangeListener(javax.swing.event.ChangeListener listener)
public abstract void removeChangeListener(javax.swing.event.ChangeListener listener)
public abstract void applyChanges(ProfileTransaction transaction)
java.lang.IllegalStateException
- if profile properties are not configured.public abstract void save(java.net.URL url) throws java.io.IOException
java.io.IOException