Interface IComponentDescriptor
- All Known Implementing Classes:
AbstractComponentDescriptor
,FSCRDBComponent
IComponentsRepository
without requiring download of further component
resources or other processing.
A Component Descriptor can be retrieved by calling IComponentsRepository.getComponent(String)
or
by a component lookup passing this interface as expected result type:
IComponentsLookup.INSTANCE.lookup(<component name>,IComponentDescriptor.class);
Component metadata is provided as properties in the format of a Properties
properties file. At least such property file should
declare a component type:
com.zfabrik.component.type=<component type>For example
com.zfabrik.component.type=com.zfabrik.javawould define a Java component.
Component property values may be provided dynamically through implementations of IComponentDescriptorProcessor
.
Given a component property someNameSpace.somePropertyName
, it may be further qualified with a processing
style, such as JEXL3, by appending the style to the property name separated by a colon (that needs to be escaped in property
file format). In the example this would look as follows:
someNameSpace.somePropertyName\:JEXL3=....
See the JEXL3 component descriptor processor documentation for more details.- Author:
- hb
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
Component type for "any" component.static final String
A comma-separated list of aliases for the component.static final String
The class name of the component implementation.static final String
The default expression evaluation style for the component descriptor and default value of#COMPONENT_DESCRIPTOR_STYLE
.static final String
The name of the component.static final String
The type of a component.static final String
Components declare dependency on other components by specifying a comma-separated list of component names.static final String
A component may declare to an implementation of an extension point.static final String
Component type for component (symbolic) links.static final String
Component descriptor property defining the link targetstatic final String
Additional revision information. -
Method Summary
Modifier and TypeMethodDescriptiongetName()
Gets the name of the component.Get the properties of this component.getProperty
(String name) Just a short hand forgetProperties().getProperty(String)
Get the raw properties of this component.long
Get the revision of the component.getType()
Gets the type of the component.
-
Field Details
-
COMPONENT_NAME
The name of the component. This property can be used conveniently to convey a component name, e.g. on a servlet request or elsewhere.- See Also:
-
COMPONENT_ALIAS
A comma-separated list of aliases for the component. These names are trimmed internally. All lookups and resource retrievals for an alias will be delegated to the declaring component. Aliases may not duplicate other component names or aliases on the repository level.- See Also:
-
COMPONENT_TYPE
The type of a component. For examplecom.zfabrik.java
for a Java component.- See Also:
-
COMPONENT_DESCRIPTOR_STYLE_PLAIN
The default expression evaluation style for the component descriptor and default value of#COMPONENT_DESCRIPTOR_STYLE
. If set to this value, no expression evaluation will take place.- See Also:
-
COMPONENT_CLZ
The class name of the component implementation. Many component types support the use of this property, which is why it is declared here. It is by no means a necessary requirement of a component type to require an implementation class. Component's that do support specification of a component implementation class do, by convention, use JavaComponentUtil.html.loadImplementationClassFromJavaComponent() to load that implementation class.- See Also:
-
DEPENDENCIES
Components declare dependency on other components by specifying a comma-separated list of component names. All components will be queried for implementations ofIDependencyComponent
and correspondingly invoked before the component resource is even created. This is slightly different to dependencies for system states (see there) in that these dependencies will not be revisited upon synchronisations. The declaring component will be dependent on all declared dependency components.- See Also:
-
REVISION_INFO
Additional revision information. This may be some original information as provided by the source.- See Also:
-
EXTENSION_POINTS
A component may declare to an implementation of an extension point. This property is used to express a list of extension points implemented.- See Also:
-
LINK_COMPONENT_TYPE
Component type for component (symbolic) links. A component link delegates all lookups and resource retrievals to another, named component that is specified using theLINK_TARGET_COMPONENT
property. This is a low-level built-in component type.- See Also:
-
LINK_TARGET_COMPONENT
Component descriptor property defining the link target- See Also:
-
ANY_COMPONENT_TYPE
Component type for "any" component. The any component type requires specification ofCOMPONENT_CLZ
and has behavior depending on the type of class: If no component type is specified on a component descriptor, it defaults to this type.- See Also:
-
-
Method Details
-
getName
String getName()Gets the name of the component. -
getType
String getType()Gets the type of the component. A short-hand forgetProperty(COMPONENT_TYPE)
. -
getRevision
long getRevision()Get the revision of the component. Minimum revision is zero. Revisions may not necessarily be strictly increasing, as components may be provided by different repositories over time. -
getProperties
Properties getProperties()Get the properties of this component. Note that these differ from the original configuration in these may be processed by some expression language evaluator. -
getRawProperties
Properties getRawProperties()Get the raw properties of this component. Note that unlikegetProperties()
the result of this method is data as defined in persistent component configuration- -
getProperty
Just a short hand forgetProperties().getProperty(String)
-