* cleaned up folder structure

* OSGiyfied artifact names
* polished poms a little
* edited Eclipse project names to align artifact id

git-svn-id: svn+ssh://svn.synyx.de/var/svn/synyx/opensource/hera/trunk@6618 5a64d73e-33d6-4ccc-9058-23f8668ecac9
This commit is contained in:
Oliver Gierke
2009-08-05 17:15:56 +00:00
parent 0aabad48fa
commit a0b7b1c2ca
91 changed files with 450 additions and 17 deletions

View File

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<chapter id="metadata">
<title>Metadata</title>
<para>For plugin architectures it is essential to capture metadata
information about plugin instances. A very core set of metadata (name,
version) also serves as identifier of a plugin and thus can be used. The
Hera metadata module provides support to capture metadata.</para>
<section id="metadata.core-concepts">
<title>Core concepts</title>
<para>The metadata module actually builds around two core interfaces,
<interfacename>PluginMetadata</interfacename> and
<interfacename>MetadataProvider</interfacename>:</para>
<example>
<title>Core concepts</title>
<programlisting language="java">public interface PluginMetadata {
String getName();
String getVersion();
}
public interface MetadataProvider {
PluginMetadata getMetadata();
}</programlisting>
</example>
<para>The <interfacename>PluginMetadata</interfacename> interface captures
the required properties to define an identifyable plugin. This means, that
implementations should ensure uniqueness through these two properties.
With <classname>SimplePluginMetadata</classname> Hera provides a Java bean
style class to capture metadata. Of course applications can and should
provide extended metadata information according to their needs. The very
narrow interface is only targeted at integrating the metadata concept with
the <classname>PluginRegistry</classname> (see <xref
linkend="core.plugin-registry" />) without bothering developers with too
much information required.</para>
<para>The <interfacename>MetadataProvider</interfacename> interface is to
be used in application plugin interfaces to indicate that they can provide
metadata. To ease plugin implementation we provide
<classname>AbstractMetadataBasedPlugin</classname> that uses the internal
metadata to implement <methodname>supports(..)</methodname> method of
<interfacename>Plugin</interfacename>. Extending this base class plugins
with metadata as selection criteria can easily be build. This way you
could store the metadata in user specific configuration files and use this
to select a distinct plugin specific to a given user.</para>
</section>
</chapter>