From 6ab36253aab1cbb00eb4e72a881e46b2694d3acf Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 22 Feb 2012 16:03:18 +0100 Subject: [PATCH] Switch from Docbook to Markdown for documentation. Added README.markdown with the current state of the reference docs in Markdown. --- README.markdown | 295 ++++++++++++ core/src/docbkx/core.xml | 317 ------------- metadata/src/docbkx/metadata.xml | 57 --- pom.xml | 66 --- src/docbkx/index.xml | 215 --------- src/docbkx/resources/css/highlight.css | 35 -- src/docbkx/resources/css/html.css | 305 ------------ src/docbkx/resources/images/admons/blank.png | Bin 374 -> 0 bytes .../resources/images/admons/caution.gif | Bin 743 -> 0 bytes .../resources/images/admons/caution.png | Bin 1250 -> 0 bytes .../resources/images/admons/caution.tif | Bin 1978 -> 0 bytes src/docbkx/resources/images/admons/draft.png | Bin 17454 -> 0 bytes src/docbkx/resources/images/admons/home.gif | Bin 321 -> 0 bytes src/docbkx/resources/images/admons/home.png | Bin 1156 -> 0 bytes .../resources/images/admons/important.gif | Bin 1003 -> 0 bytes .../resources/images/admons/important.png | Bin 1178 -> 0 bytes .../resources/images/admons/important.tif | Bin 2020 -> 0 bytes src/docbkx/resources/images/admons/next.gif | Bin 1083 -> 0 bytes src/docbkx/resources/images/admons/next.png | Bin 1150 -> 0 bytes src/docbkx/resources/images/admons/note.gif | Bin 580 -> 0 bytes src/docbkx/resources/images/admons/note.png | Bin 1178 -> 0 bytes src/docbkx/resources/images/admons/note.tif | Bin 460 -> 0 bytes src/docbkx/resources/images/admons/prev.gif | Bin 1118 -> 0 bytes src/docbkx/resources/images/admons/prev.png | Bin 1132 -> 0 bytes src/docbkx/resources/images/admons/tip.gif | Bin 598 -> 0 bytes src/docbkx/resources/images/admons/tip.png | Bin 1178 -> 0 bytes src/docbkx/resources/images/admons/tip.tif | Bin 420 -> 0 bytes .../resources/images/admons/toc-blank.png | Bin 318 -> 0 bytes .../resources/images/admons/toc-minus.png | Bin 259 -> 0 bytes .../resources/images/admons/toc-plus.png | Bin 264 -> 0 bytes src/docbkx/resources/images/admons/up.gif | Bin 1089 -> 0 bytes src/docbkx/resources/images/admons/up.png | Bin 1111 -> 0 bytes .../resources/images/admons/warning.gif | Bin 613 -> 0 bytes .../resources/images/admons/warning.png | Bin 3993 -> 0 bytes .../resources/images/admons/warning.tif | Bin 1990 -> 0 bytes src/docbkx/resources/images/callouts/1.png | Bin 329 -> 0 bytes src/docbkx/resources/images/callouts/10.png | Bin 361 -> 0 bytes src/docbkx/resources/images/callouts/11.png | Bin 565 -> 0 bytes src/docbkx/resources/images/callouts/12.png | Bin 617 -> 0 bytes src/docbkx/resources/images/callouts/13.png | Bin 623 -> 0 bytes src/docbkx/resources/images/callouts/14.png | Bin 411 -> 0 bytes src/docbkx/resources/images/callouts/15.png | Bin 640 -> 0 bytes src/docbkx/resources/images/callouts/2.png | Bin 353 -> 0 bytes src/docbkx/resources/images/callouts/3.png | Bin 350 -> 0 bytes src/docbkx/resources/images/callouts/4.png | Bin 345 -> 0 bytes src/docbkx/resources/images/callouts/5.png | Bin 348 -> 0 bytes src/docbkx/resources/images/callouts/6.png | Bin 355 -> 0 bytes src/docbkx/resources/images/callouts/7.png | Bin 344 -> 0 bytes src/docbkx/resources/images/callouts/8.png | Bin 357 -> 0 bytes src/docbkx/resources/images/callouts/9.png | Bin 357 -> 0 bytes src/docbkx/resources/images/logo.png | Bin 9627 -> 0 bytes .../resources/images/xdev-spring_logo.jpg | Bin 37376 -> 0 bytes src/docbkx/resources/xsl/fopdf.xsl | 449 ------------------ src/docbkx/resources/xsl/highlight-fo.xsl | 44 -- src/docbkx/resources/xsl/highlight.xsl | 42 -- src/docbkx/resources/xsl/html.xsl | 107 ----- src/docbkx/resources/xsl/html_chunk.xsl | 221 --------- 57 files changed, 295 insertions(+), 1858 deletions(-) create mode 100644 README.markdown delete mode 100644 core/src/docbkx/core.xml delete mode 100644 metadata/src/docbkx/metadata.xml delete mode 100644 src/docbkx/index.xml delete mode 100644 src/docbkx/resources/css/highlight.css delete mode 100644 src/docbkx/resources/css/html.css delete mode 100644 src/docbkx/resources/images/admons/blank.png delete mode 100644 src/docbkx/resources/images/admons/caution.gif delete mode 100644 src/docbkx/resources/images/admons/caution.png delete mode 100644 src/docbkx/resources/images/admons/caution.tif delete mode 100644 src/docbkx/resources/images/admons/draft.png delete mode 100644 src/docbkx/resources/images/admons/home.gif delete mode 100644 src/docbkx/resources/images/admons/home.png delete mode 100644 src/docbkx/resources/images/admons/important.gif delete mode 100644 src/docbkx/resources/images/admons/important.png delete mode 100644 src/docbkx/resources/images/admons/important.tif delete mode 100644 src/docbkx/resources/images/admons/next.gif delete mode 100644 src/docbkx/resources/images/admons/next.png delete mode 100644 src/docbkx/resources/images/admons/note.gif delete mode 100644 src/docbkx/resources/images/admons/note.png delete mode 100644 src/docbkx/resources/images/admons/note.tif delete mode 100644 src/docbkx/resources/images/admons/prev.gif delete mode 100644 src/docbkx/resources/images/admons/prev.png delete mode 100644 src/docbkx/resources/images/admons/tip.gif delete mode 100644 src/docbkx/resources/images/admons/tip.png delete mode 100644 src/docbkx/resources/images/admons/tip.tif delete mode 100644 src/docbkx/resources/images/admons/toc-blank.png delete mode 100644 src/docbkx/resources/images/admons/toc-minus.png delete mode 100644 src/docbkx/resources/images/admons/toc-plus.png delete mode 100644 src/docbkx/resources/images/admons/up.gif delete mode 100644 src/docbkx/resources/images/admons/up.png delete mode 100644 src/docbkx/resources/images/admons/warning.gif delete mode 100644 src/docbkx/resources/images/admons/warning.png delete mode 100644 src/docbkx/resources/images/admons/warning.tif delete mode 100644 src/docbkx/resources/images/callouts/1.png delete mode 100644 src/docbkx/resources/images/callouts/10.png delete mode 100644 src/docbkx/resources/images/callouts/11.png delete mode 100644 src/docbkx/resources/images/callouts/12.png delete mode 100644 src/docbkx/resources/images/callouts/13.png delete mode 100644 src/docbkx/resources/images/callouts/14.png delete mode 100644 src/docbkx/resources/images/callouts/15.png delete mode 100644 src/docbkx/resources/images/callouts/2.png delete mode 100644 src/docbkx/resources/images/callouts/3.png delete mode 100644 src/docbkx/resources/images/callouts/4.png delete mode 100644 src/docbkx/resources/images/callouts/5.png delete mode 100644 src/docbkx/resources/images/callouts/6.png delete mode 100644 src/docbkx/resources/images/callouts/7.png delete mode 100644 src/docbkx/resources/images/callouts/8.png delete mode 100644 src/docbkx/resources/images/callouts/9.png delete mode 100644 src/docbkx/resources/images/logo.png delete mode 100644 src/docbkx/resources/images/xdev-spring_logo.jpg delete mode 100644 src/docbkx/resources/xsl/fopdf.xsl delete mode 100644 src/docbkx/resources/xsl/highlight-fo.xsl delete mode 100644 src/docbkx/resources/xsl/highlight.xsl delete mode 100644 src/docbkx/resources/xsl/html.xsl delete mode 100644 src/docbkx/resources/xsl/html_chunk.xsl diff --git a/README.markdown b/README.markdown new file mode 100644 index 0000000..012db26 --- /dev/null +++ b/README.markdown @@ -0,0 +1,295 @@ +# The smallest plugin system ever + +V0.8 - Oliver Gierke, SpringSource - a division of VMware + +© 2008-2012 The original authors + +## Revision History + +* 04.11.2008 Oliver Gierke Initial draft +* 05.11.2008 Oliver Gierke Added metadata module documentation +* 24.01.2009 Oliver Gierke Added remark to inner bean usage +* 23.03.2009 Oliver Gierke Added section on plugin ordering +* 21.02.2012 Oliver Gierke Move project to SpringSource + +## Preface + +### Introduction + +Building extensible architectures nowadays is a core principle to create maintainable applications. This is why fully fledged plugin environments like *OSGi* are so poular these days. Unfortunately the introduction of *OSGi* introduces a lot of complexity to projects. + +Spring Plugin provides a more pragmatic approach to plugin development by providing the core flexibility of having plugin implementations extending a core system's functionality but of course not delivering core OSGi features like dynamic class loading or runtime installation and deployment of plugins. Although Spring Plugin thus is not nearly as powerful as OSGi, it servers poor man's requirements to build a modular +extensible application. + +### Context + +- You want to build an extensible architecture minimizing overhead as much as possible +- You cannot use OSGi as fully fledged plugin architecture for whatever reasons +- You want to express extensibility by providing dedicated plugin interfaces +- You want to extend the core system by simply providing an implementation of the plugin interface bundled in a JAR file and available in the classpath +- (You use Spring in your application) + +The last point actually is not essential although Spring Plugin gains a +lot of momentum in collaborative use with Spring. + +### Technologies + +#### Spring + +Spring is the defacto standard application framework for Java applications. Its consistent programming model, easy configuration and wide support for all kinds of third party libraries makes it the first class citizen of application frameworks. Spring Plugin tightly integrates into Spring's component model and extends the core container +with some custom functionality. + +## Core + +### Introduction + +Host system provides a plugin interface providers have to implement. +Core system is build to hold a container of instances of this interface +and works with them. + +**Example 1.1. Basic example of plugin interface and host** + +~~~~java +/** + * Interface contract for the providers to be implemented. + */ +public interface MyPluginInterface { + public void bar(); +} + + +/** + * A host application class working with instances of the plugin + * interface. + */ +public class HostImpl implements Host { + + private final List plugins; + + public HostImpl(List plugins) { + Assert.notNull(plugins); + this.plugins = plugins; + } + + /** + * Some business method actually working with the given plugins. + */ + public void someBusinessMethod() { + for (MyPluginInterface plugin : plugins) { + plugin.bar(); + } + } +} +~~~~ + +This is the way you would typically construct a host component in general. Leveraging dependency injection via setters allows flexible usage in a variety of environments. Thus you could easily provide a factory class that is able to lookup `MyPluginInterface` +implementations from the classpath, instantiate them and inject them into `HostImpl`. + +Using Spring as component container you could configure something like this: + +**Example 1.2. Configuring HostImpl with Spring** + +~~~~xml + + + + + + + +~~~~ + +This is pretty much well known to Spring developers and let's us face the wall that this is rather static. Everytime you want to add a new plugin implementation instance you have to modify configuration of the core. Let's see how we can get this dance a little more. + +### Collecting Spring beans dynamically + +With the `BeanListBeanFactory` Spring Plugin provides a Spring container extension, that allows to lookup beans of a given type in the current `ApplicationContext` and register them as list under a given name. Take a look at the configuration now: + +**Example 1.3. Host and plugin configuration with Spring Plugin +support** + +~~~~xml + + + + + + + + + + + + + +~~~~ + +~~~~xml + + +~~~~ + +You can see that we include a wildcarded configurationfile that allows plugin projects to easily contribute plugin implementations by declaring them as beans in configuration files matching the wildcarded path. If you use Spring 2.5 component scanning you don't have to use the import trick at all as Spring would detect the implementation automatically as long as it is annotated with `@Component`, `@Service` a.s.o. + +The `BeanListBeanFactory` in turn allows registering a map of lists to be created, where the maps entry key is the id under which the list will be registered and the entry's value is the type to be looked up. + +> #### Note +> +> The design of the `BeanListBeanFactory` might seem a little confusing at first +> (especially to set a map on a property named lists). This is due to the posibility to +> register more than one list to be looked up. We think about dropping this +> functionality for the sake of simplicity in future versions. + +### A whole lotta XML - namespace to help! + +Actually this already serves a lot of requirements we listed in [Section “Context”](#context). Nevertheless the amount of XML to be written is quite large. Furthermore it's rather not intuitive to configure a bean id as key, and a type as value. We can heavily shrink the XML required to a single line by providing a Spring namespace boiling configuration down to this: + +**Example 1.4. Host configuration using the plugin namespace** + +~~~~xml + + + + + + + + + + +~~~~ + +Assuming you have added the namespace XSD into Eclipse and installed Spring IDE, you should get code completion on filling the class attribute. + +### Using inner beans + +The listing above features an indirection for the `plugin` bean definition. Defining the plugin list as top level bean can have advantages: you easily could place all plugin lists in a dedicated configuration file, presenting all application extension points in one single place. Nevertheless you also might choose to define the list directly in the property declaration: + +**Example 1.5. Using inner bean definition** + +~~~~xml + + + + + + + +~~~~ + +This way you have a more compact configuration, paying the prica of tangling all extention points though possibly various config files. + +#### Plugin beans + +Using plain interfaces and `BeanListBeanFactory` offers an easy way to dynamically lookup beans in Spring environments. Nevertheless, very often you face the situation that you want to have dedicated access to a subset of all plugins, choose plugins by a given criteria or use a decent default plugin or the like. Thus we need a basic infrastructure interface for plugin interfaces to extend and a more sophisticated plugin container. + +#### Plugin + +Hera's central infrastructure interfacte is `Plugin`, where `S` defines the delimiter type you want to let implementations decide on, whether they shall be invoked or not. Thus the plugin implementation have to implement `supports(S delimiter)` to come to the decision. Consider the following example: + +**Example 1.6. Usage of Plugin interface** + +~~~~java +public enum ProductType { + SOFTWARE, HARDWARE; +} + +public interface ProductProcessor extends Plugin { + public void process(Product product); +} +~~~~ + +This design would allow plugin providers to implement `supports(ProductType productType)` to decide which product types they want to process and provide actual processing logic in `process(Product product)`. + +#### PluginRegistry + +Using a `List` as plugin container as well as the `Plugin` interface you can now select plugins supporting the given delimiter. To not reimplement the lookup logic for common +cases Spring Plugin provides a `PluginRegistry, S>` interface that provides sophisticated methods to access certain plugins: + +**Example 1.7. Usage of the PluginRegistry** + +~~~~java +PluginRegistry registry = SimplePluginRegistry.create(); +// Add plugin instances +registry.add(new FooImplementation()); +// Returns the first plugin supporting SOFTWARE +registry.getPluginFor(ProductType.SOFTWARE); +// Returns the first plugin supporting SOFTWARE, or DefaultPlugin if none found +registry.getPluginFor(ProductType.SOFTWARE, new DefaultPlugin()); +// Returns all plugins supporting HARDWARE, throwing the given exception if none found +registry.getPluginsFor(ProductType.HARDWARE, new MyException("Damn!"); +~~~~ + +#### Configuration and namespace + +Similar to the `BeanListBeanFactory` described in [Collecting Spring beans +dynamically](#core.beans-dynamically) Spring Plugin provides a `PluginRegistryBeanFactory` to automatically lookup beans of a dedicated type to be aggregated in a `PluginRegistry`. Note that the type has to be assignable to `Plugin` to let the registry work as expected. + +Furthermore there is also an element in the namespace to shrink down configuration XML: + +**Example 1.8. Using the XML namespace to configure a registry** + +~~~~xml + +~~~~ + +### Ordering plugins + +Declaring plugin beans sometimes it is necessary to preserve a certain order of plugins. Suppose you have a plugin host that already defines one plugin that shall always be executed after all plugins declared by extensions. Actually the Spring container typically returnes beans in the order they were declared, so that you could import you wildcarded config files right before declaring the default plugin. Unfortunately +the order of the beans is not contracted to be preserved for the Spring container. Thus we need a different solution. + +Spring provides two ways to order beans. First, you can implement `Ordered` interface and implement `getOrder` to place a plugin at a certain point in the list. Secondly you can user the `@Order` annotation. For more information on ordering capabilities of Spring see the [section on this topic in the Spring reference documentation](http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/core/Ordered.html). + +Using the Spring Plugin namespace you will get a `PluginRegistry` instance that is capable of preserving the order defined by the mentioned means. Using Spring Plugin +programatically use `OrderAwarePluginRegistry`. + +## Metadata + +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 Spring Plugin metadata module provides support to capture metadata. + +### Core concepts + +The metadata module actually builds around two core interfaces, `PluginMetadata` and `MetadataProvider`: + +**Example 2.1. Core concepts** + +~~~~java +public interface PluginMetadata { + String getName(); + String getVersion(); +} + +public interface MetadataProvider { + PluginMetadata getMetadata(); +} +~~~~ + +The `PluginMetadata` interface captures the required properties to define an identifyable plugin. This means, that implementations should ensure uniqueness through these two properties. With `SimplePluginMetadata` Spring Plugin 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 `PluginRegistry` (see [the section called “PluginRegistry”](#core.plugin-registry)) without bothering developers with too much information required. + +The `MetadataProvider` interface is to be used in application plugin interfaces to indicate that they can provide metadata. To ease plugin implementation we provide +`AbstractMetadataBasedPlugin` that uses the internal metadata to implement `supports(..)` method of `Plugin`. 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. + +## Glossary + + +### O + +OSGi + + * Open Services Gateway Initiative - a fully fledged plugin runtime + environment on top of the Java VM - + [http://en.wikipedia.org/wiki/OSGi](http://en.wikipedia.org/wiki/OSGi). + +### X + +XML + + * eXtensible Markup Language + +XSD + + * Xml Schema Definition \ No newline at end of file diff --git a/core/src/docbkx/core.xml b/core/src/docbkx/core.xml deleted file mode 100644 index 44054a2..0000000 --- a/core/src/docbkx/core.xml +++ /dev/null @@ -1,317 +0,0 @@ - - - - Core - -
- Introduction - - Host system provides a plugin interface providers have to implement. - Core system is build to hold a container of instances of this interface - and works with them. - - - Basic example of plugin interface and host - - /** - * Interface contract for the providers to be implemented. - */ -public interface MyPluginInterface { - - public void bar(); -} - - -/** - * A host application class working with instances of the plugin - * interface. - */ -public class HostImpl implements Host { - - private List<MyPluginInterface> plugins; - - /** - * Setter to inject the plugins - */ - public void setPlugins(List<MyPluginInterface> plugins) { - this.plugins = plugins; - } - - /** - * Some business method actually working with the given plugins. - */ - public void someBusinessMethod() { - - for (MyPluginInterface plugin : plugins) { - plugin.bar(); - } - } -} - - - This is the way you would typically construct a host component in - general. Leveraging dependency injection via setters allows flexible usage - in a variety of environments. Thus you could easily provide a factory - class that is able to lookup - MyPluginInterface implementations from the - classpath, instantiate them and inject them into HostImpl. - - Using Spring as component container you could configure something - like this: - - - Configuring HostImpl with Spring - - <bean id="host" class="com.acme.HostImpl"> - <property name="plugins"> - <list> - <bean class="MyPluginImplementation" /> - </list> - </property> -</bean> - - - This is pretty much well known to Spring developers and let's us - face the wall that this is rather static. Everytime you want to add a new - plugin implementation instance you have to modify configuration of the - core. Let's see how we can get this dance a little more. -
- -
- Collecting Spring beans dynamically - - With the BeanListBeanFactory - Spring Plugin provides a Spring container - extension, that allows to lookup beans of a given type in the current - ApplicationContext and register them as - list under a given name. Take a look at the configuration now: - - - Host and plugin configuration with Spring Plugin support - - <import resource="classpath*:com/acme/**/plugins.xml" /> - -<bean id="host" class="com.acme.HostImpl"> - <property name="plugins" ref="plugins" /> -</bean> - -<bean class="org.springframework.plugin.support.BeanListBeanFactory"> - <property name="lists"> - <map> - <entry key="plugins" value="org.acme.MyPluginInterface" /> - </map> - </property> -</bean> - - <!-- In a file called plugins.xml in the plugin project --> -<bean class="MyPluginimplementation" /> - - - You can see that we include a wildcarded configurationfile that - allows plugin projects to easily contribute plugin implementations by - declaring them as beans in configuration files matching the wildcarded - path. If you use Spring 2.5 component scanning you don't have to use the - import trick at all as Spring would detect the implementation - automatically as long as it is annotated with @Component, - @Service a.s.o. - - The BeanListBeanFactory in turn allows - registering a map of lists to be created, where the maps entry key is the - id under which the list will be registered and the entry's value is the - type to be looked up. - - - The design of the BeanListBeanFactory might - seem a little confusing at first (especially to set a map on a property - named lists). This is due to the posibility to register more than one - list to be looked up. We think about dropping this functionality for the - sake of simplicity in future versions. - - - - A whole lotta XML - namespace to help! - - Actually this already serves a lot of requirements we listed in - . Nevertheless the amount of XML to be - written is quite large. Furthermore it's rather not intuitive to - configure a bean id as key, and a type as value. We can heavily shrink - the XML required to a single line by providing a Spring namespace - boiling configuration down to this: - - - Host configuration using the plugin namespace - - <beans xmlns="http://www.springframework.org/schema/beans" - xmlns:plugin="http://www.springframework.org/schema/plugin" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd - http://www.springframework.org/schema/plugin http://www.springframework.org/schema/plugin/spring-plugin.xsd"> - - <import resource="classpath*:com/acme/**/plugins.xml" /> - - <bean id="host" class="com.acme.HostImpl"> - <property name="plugins" ref="plugins" /> - </bean> - - <plugin:list id="plugins" class="org.acme.MyPluginInterface" /> -</beans> - - - Suggested you have added the namespace XSD into Eclipse and - installed Spring IDE, you should get code completion on filling the - class attribute. - - - - Using inner beans - - The listing above features an indirection for the - plugin bean definition. Defining the plugin list as top - level bean can have advantages: you easily could place all plugin lists - in a dedicated configuration file, presenting all application extension - points in one single place. Nevertheless you also might choose to define - the list directly in the property declaration: - - - Using internal bean definition - - <import resource="classpath*:com/acme/**/plugins.xml" /> - -<bean id="host" class="com.acme.HostImpl"> - <property name="plugins"> - <plugin:list class="org.acme.MyPluginInterface" /> - </property> -</bean> - - - This way you have a more compact configuration, paying the prica - of tangling all extention points though possibly various config - files. - -
- -
- Plugin beans - - Using plain interfaces and - BeanListBeanFactory offers an easy way to - dynamically lookup beans in Spring environments. Nevertheless, very often - you face the situation that you want to have dedicated access to a subset - of all plugins, choose plugins by a given criteria or use a decent default - plugin or the like. Thus we need a basic infrastructure interface for - plugin interfaces to extend and a more sophisticated plugin - container. - - - Plugin - - Hera's central infrastructure interfacte is - Plugin<S>, where S defines the - delimiter type you want to let implementations decide on, whether they - shall be invoked or not. Thus the plugin implementation have to - implement supports(S delimiter) to come to the - decision. Consider the following example: - - - Usage of Plugin interface - - public enum ProductType { - - SOFTWARE, HARDWARE; -} - -public interface ProductProcessor extends Plugin<ProductType> { - - public void process(Product product); -} - - - This design would allow plugin providers to implement - supports(ProductType productType) to decide - which product types they want to process and provide actual processing - logic in process(Product product). - - - - PluginRegistry - - Using a List as plugin container as - well as the Plugin interface you can now - select plugins supporting the given delimiter. To not reimplement the - lookup logic for common cases Spring Plugin provides a - PluginRegistry<T extends Plugin<S>, - S> interface that provides sophisticated methods to - access certain plugins: - - - Usage of the PluginRegistry - - PluginRegistry<ProductProcessor, ProductType> registry = - SimplePluginRegistry.create(); - -// Add plugin instances -registry.add(new FooImplementation()); - -// Returns the first plugin supporting SOFTWARE -registry.getPluginFor(ProductType.SOFTWARE); - -// Returns the first plugin supporting SOFTWARE, -// or DefaultPlugin if none found -registry.getPluginFor(ProductType.SOFTWARE, new DefaultPlugin()); - -// Returns all plugins supporting HARDWARE, -// throwing the given exception if none found -registry.getPluginsFor(ProductType.HARDWARE, new MyException("Damn!"); - - - - - Configuration and namespace - - Similar to the BeanListBeanFactory - described in Spring Plugin - provides a PluginRegistryBeanFactory to - automatically lookup beans of a dedicated type to be aggregated in a - PluginRegistry. Note that the type has to be - assignable to Plugin to let the registry - work as expected. - - Furthermore there is also an element in the namespace to shrink - down configuration XML: - - - Using the XML namespace to configure a registry - - <plugin:registry id="plugins" class="com.acme.MyPluginInterface" /> - - - - - Ordering plugins - - Declaring plugin beans sometimes it is necessary to preserve a - certain order of plugins. Suppose you have a plugin host that already - defines one plugin that shall always be executed after all plugins - declared by extensions. Actually the Spring container typically returnes - beans in the order they were declared, so that you could import you - wildcarded config files right before declaring the default plugin. - Unfortunately the order of the beans is not contracted to be preserved - for the Spring container. Thus we need a different solution. - - Spring provides two ways to order beans. First, you can implement - Ordered interface and implement - getOrder to place a plugin at a certain point - in the list. Secondly you can user the @Order - annotation. For more information on ordering capabilities of Spring see - the section on this topic in the Spring reference - documentation. - - Using the Spring Plugin namespace you will get a - PluginRegistry instance that is capable - of preserving the order defined by the mentioned means. Using Spring - Plugin programatically use - OrderAwarePluginRegistry. - -
-
diff --git a/metadata/src/docbkx/metadata.xml b/metadata/src/docbkx/metadata.xml deleted file mode 100644 index efa1194..0000000 --- a/metadata/src/docbkx/metadata.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - Metadata - - 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 - Spring Plugin metadata module provides support to capture metadata. - -
- Core concepts - - The metadata module actually builds around two core interfaces, - PluginMetadata and - MetadataProvider: - - - Core concepts - - public interface PluginMetadata { - - String getName(); - - String getVersion(); -} - - -public interface MetadataProvider { - - PluginMetadata getMetadata(); -} - - - The PluginMetadata interface captures - the required properties to define an identifyable plugin. This means, that - implementations should ensure uniqueness through these two properties. - With SimplePluginMetadata Spring Plugin 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 PluginRegistry (see ) without bothering developers with too - much information required. - - The MetadataProvider interface is to - be used in application plugin interfaces to indicate that they can provide - metadata. To ease plugin implementation we provide - AbstractMetadataBasedPlugin that uses the internal - metadata to implement supports(..) method of - Plugin. 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. -
-
diff --git a/pom.xml b/pom.xml index 5dd162f..f88b1e9 100644 --- a/pom.xml +++ b/pom.xml @@ -109,72 +109,6 @@ - - - com.agilejava.docbkx - docbkx-maven-plugin - 2.0.8 - - - - generate-html - generate-pdf - - pre-site - - - false - - - - net.sf.offo - fop-hyph - 1.2 - runtime - - - - org.docbook - docbook-xml - 4.4 - runtime - - - - index.xml - true - ${project.basedir}/src/docbkx/resources/xsl/fopdf.xsl - css/html.css - false - ${project.basedir}/src/docbkx/resources/xsl/html.xsl - 1 - 1 - - - version - ${project.version} - - - - - - - - - - - - - - - - - - - - - - com.springsource.bundlor com.springsource.bundlor.maven diff --git a/src/docbkx/index.xml b/src/docbkx/index.xml deleted file mode 100644 index c59c211..0000000 --- a/src/docbkx/index.xml +++ /dev/null @@ -1,215 +0,0 @@ - - - - - Spring Plugin - - The smallest plugin system ever - - - - Oliver - - Gierke - - - Senior Member Technical Staff - - SpringSource, a division of VMware - - - ogierke (at) vmware.com - - - - V0.8 - - 23.09.2009 - - - 2008-2012 - - The original authors - - - - - 04.11.2008 - - - Oliver - - Gierke - - - Initial draft - - - - 05.11.2008 - - - Oliver - - Gierke - - - Added metadata module documentation - - - - 24.01.2009 - - - Oliver - - Gierke - - - Added remark to inner bean usage - - - - 23.03.2009 - - - Oliver - - Gierke - - - Added section on plugin ordering - - - - 21.02.2012 - - - Oliver - - Gierke - - - Move project to SpringSource - - - - - - Preface - -
- Introduction - - Building extensible architectures nowadays is a core principle to - create maintainable applications. This is why fully fledged plugin - environments like OSGi are so - poular these days. Unfortunately the introduction of - OSGi introduces a lot of - complexity to projects. - - Spring Plugin provides a more pragmatic approach to plugin - development by providing the core flexibility of having plugin - implementations extending a core system's functionality but of course - not delivering core OSGi features like dynamic class - loading or runtime installation and deployment of plugins. Although - Spring Plugin thus is not nearly as powerful as OSGi, - it servers poor man's requirements to build a modular extensible - application. -
- -
- Context - - - - You want to build an extensible architecture minimizing - overhead as much as possible - - - - You cannot use OSGi as fully fledged plugin architecture for - whatever reasons - - - - You want to express extensibility by providing dedicated - plugin interfaces - - - - You want to extend the core system by simply providing an - implementation of the plugin interface bundled in a JAR file and - available in the classpath. - - - - (You use Spring in your application) - - - - The last point actually is not essential although Spring Plugin - gains a lot of momentum in collaborative use with Spring. -
- -
- Technologies - - - Spring - - Spring is the defacto standard application framework for Java - applications. Its consistent programming model, easy configuration and - wide support for all kinds of third party libraries makes it the first - class citizen of application frameworks. Spring Plugin tightly - integrates into Spring's component model and extends the core - container with some custom functionality. - -
-
- - - - - - - - - - - - O - - - OSGi - - - Open Services Gateway Initiative - a fully fledged plugin - runtime environment on top of the Java VM - http://en.wikipedia.org/wiki/OSGi. - - - - - - X - - - XML - - - eXtensible Markup Language - - - - - XSD - - - Xml Schema Definition - - - - -
diff --git a/src/docbkx/resources/css/highlight.css b/src/docbkx/resources/css/highlight.css deleted file mode 100644 index ffefef7..0000000 --- a/src/docbkx/resources/css/highlight.css +++ /dev/null @@ -1,35 +0,0 @@ -/* - code highlight CSS resemblign the Eclipse IDE default color schema - @author Costin Leau -*/ - -.hl-keyword { - color: #7F0055; - font-weight: bold; -} - -.hl-comment { - color: #3F5F5F; - font-style: italic; -} - -.hl-multiline-comment { - color: #3F5FBF; - font-style: italic; -} - -.hl-tag { - color: #3F7F7F; -} - -.hl-attribute { - color: #7F007F; -} - -.hl-value { - color: #2A00FF; -} - -.hl-string { - color: #2A00FF; -} \ No newline at end of file diff --git a/src/docbkx/resources/css/html.css b/src/docbkx/resources/css/html.css deleted file mode 100644 index dd2ab69..0000000 --- a/src/docbkx/resources/css/html.css +++ /dev/null @@ -1,305 +0,0 @@ -@IMPORT url("highlight.css"); - -body { - text-align: justify; - margin-right: 2em; - margin-left: 2em; -} - -a, -a[accesskey^="h"], -a[accesskey^="n"], -a[accesskey^="u"], -a[accesskey^="p"] { - font-family: Verdana, Arial, helvetica, sans-serif; - font-size: 12px; - color: #003399; -} - -a:active { - color: #003399; -} - -a:visited { - color: #888888; -} - -p { - font-family: Verdana, Arial, sans-serif; -} - -dt { - font-family: Verdana, Arial, sans-serif; - font-size: 12px; -} - -p, dl, dt, dd, blockquote { - color: #000000; - margin-bottom: 3px; - margin-top: 3px; - padding-top: 0; -} - -ol, ul, p { - margin-top: 6px; - margin-bottom: 6px; -} - -p, blockquote { - font-size: 90%; -} - -p.releaseinfo { - font-size: 100%; - font-weight: bold; - font-family: Verdana, Arial, helvetica, sans-serif; - padding-top: 10px; -} - -p.pubdate { - font-size: 120%; - font-weight: bold; - font-family: Verdana, Arial, helvetica, sans-serif; -} - -td { - font-size: 80%; -} - -td, th, span { - color: #000000; -} - -td[width^="40%"] { - font-family: Verdana, Arial, helvetica, sans-serif; - font-size: 12px; - color: #003399; -} - -table[summary^="Navigation header"] tbody tr th[colspan^="3"] { - font-family: Verdana, Arial, helvetica, sans-serif; -} - -blockquote { - margin-right: 0; -} - -h1, h2, h3, h4, h6 { - color: #000000; - font-weight: 500; - margin-top: 0; - padding-top: 14px; - font-family: Verdana, Arial, helvetica, sans-serif; - margin-bottom: 0; -} - -h2.title { - font-weight: 800; - margin-bottom: 8px; -} - -h2.subtitle { - font-weight: 800; - margin-bottom: 20px; -} - -.firstname, .surname { - font-size: 12px; - font-family: Verdana, Arial, helvetica, sans-serif; -} - -table { - border-collapse: collapse; - border-spacing: 0; - border: 1px black; - empty-cells: hide; - margin: 10px 0 30px 50px; - width: 90%; -} - -div.table { - margin: 30px 0 10px 0; - border: 1px dashed gray; - padding: 10px; -} - -div .table-contents table { - border: 1px solid black; -} - -div.table > p.title { - padding-left: 10px; -} - -table[summary^="Navigation footer"] { - border-collapse: collapse; - border-spacing: 0; - border: 1px black; - empty-cells: hide; - margin: 0px; - width: 100%; -} - -table[summary^="Note"], -table[summary^="Warning"], -table[summary^="Tip"] { - border-collapse: collapse; - border-spacing: 0; - border: 1px black; - empty-cells: hide; - margin: 10px 0px 10px -20px; - width: 100%; -} - -td { - padding: 4pt; - font-family: Verdana, Arial, helvetica, sans-serif; -} - -div.warning TD { - text-align: justify; -} - -h1 { - font-size: 150%; -} - -h2 { - font-size: 110%; -} - -h3 { - font-size: 100%; font-weight: bold; -} - -h4 { - font-size: 90%; font-weight: bold; -} - -h5 { - font-size: 90%; font-style: italic; -} - -h6 { - font-size: 100%; font-style: italic; -} - -tt { - font-size: 110%; - font-family: "Courier New", Courier, monospace; - color: #000000; -} - -.navheader, .navfooter { - border: none; -} - -div.navfooter table { - border-style: dashed; - border-color: gray; - border-width: 1px 1px 1px 1px; - background-color: #cde48d; -} - -pre { - font-size: 110%; - padding: 5px; - border-style: solid; - border-width: 1px; - border-color: #CCCCCC; - background-color: #f3f5e9; -} - -ul, ol, li { - list-style: disc; -} - -hr { - width: 100%; - height: 1px; - background-color: #CCCCCC; - border-width: 0; - padding: 0; -} - -.variablelist { - padding-top: 10px; - padding-bottom: 10px; - margin: 0; -} - -.term { - font-weight:bold; -} - -.mediaobject { - padding-top: 30px; - padding-bottom: 30px; -} - -.legalnotice { - font-family: Verdana, Arial, helvetica, sans-serif; - font-size: 12px; - font-style: italic; -} - -.sidebar { - float: right; - margin: 10px 0 10px 30px; - padding: 10px 20px 20px 20px; - width: 33%; - border: 1px solid black; - background-color: #F4F4F4; - font-size: 14px; -} - -.property { - font-family: "Courier New", Courier, monospace; -} - -a code { - font-family: Verdana, Arial, monospace; - font-size: 12px; -} - -td code { - font-size: 110%; -} - -div.note * td, -div.tip * td, -div.warning * td, -div.calloutlist * td { - text-align: justify; - font-size: 100%; -} - -.programlisting { - clear: both; -} - -.programlisting .interfacename, -.programlisting .literal, -.programlisting .classname { - font-size: 95%; -} - -.title .interfacename, -.title .literal, -.title .classname { - font-size: 130%; -} - -/* everything in a is displayed in a coloured, comment-like font */ -.programlisting * .lineannotation, -.programlisting * .lineannotation * { - color: green; -} - -.question * p { - font-size: 100%; -} - -.answer * p { - font-size: 100%; -} \ No newline at end of file diff --git a/src/docbkx/resources/images/admons/blank.png b/src/docbkx/resources/images/admons/blank.png deleted file mode 100644 index 764bf4f0c3bb4a09960b04b6fa9c9024bca703bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRdwrEa{HEjtmSN`?>!lvNA9*>Uz33 zhE&XXd(lylL4oIh!GZnHecj|txT>yO8>^qY%(y?B;Tppl#t7yOYze#vq#8^aMzDZb YLK^d5CO(feU_df>y85}Sb4q9e0Be`**{8_ndlqdgjcTGH1@5rAvWm>DH}V&z(E>{Q2|u@89nQ znoBxR{K>+|z@W#V1JVle69d~nhv}!E7VV7D!$l=+#gyARX+eW7x`wT@Cg?1ihH6;1 zs$!+xj1Yt%W31lvY*ooh8##Wqt4P*f&)W2{!b0}^@kv>5x2zLQef-gZgT0SEg>hLF z)Pd`+x;*(#oF^Yc1wYmptOPqEY|_Nz%wH;O`WPI6ayD{2tAO4N zo7{UG#GByI2%_fo|5LqMv{6N+A1o@_2o{w)&t4I@GfML`SWvEy;UY+Xf4Xzz&KO;h zV_?(HH9iCh`e$qcdSYD|*JluqH{jv}kl>0fV4tmS-PB+scb>_h18CFP6lf@4^@?vqT-$&hMpcE*)wGd!;~q-Q>IkUnZqz=PVt;M zK*p3gbLK2v%CK~4^3tV1#?q}@8MbbX+PXD)>(;G%_cH9=n|$sZ!?|yxmE{-7;w@N47?rU=3X_NkV zU|o{PnRTZ;lXp4>+)hZU_|Lw%*va*6=<@jI@BP^`_OsZ?pZg-2AaGf|;i2L0<>du@ zeRrO4er03}pLSxdREd>pap^;~&E+}=JYKy#vHnLI=Z$}pPyA_`zG;G~<$`Br2do;7 z$Heivv0AeyJYVI({@6?X6r+V~XS2Cs!|bddDqJz@2lKf$~4dA1c%lfOT+5KMUSWi#X5(9ePxx_W1Bsf2+N)z4*}Q$iB}K{RAP diff --git a/src/docbkx/resources/images/admons/caution.tif b/src/docbkx/resources/images/admons/caution.tif deleted file mode 100644 index 4a282948c4c7ed53a2cab4132152c9923f7eb363..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1978 zcmebD)MDUaXJBaHTM%HOBF4+!!hOu3BSpZ2m-o=a4UGyOVRGC@78N*Fn1mTgu^*ne z;*L$0(G;HMj}kXtX=zR2W)oug(x;}vd4|pLf`&qbk&JK3goqWpg18tM4sYt>NNQ*5 zJO1L!te8d4X6?)=pC(QSU||)yt{QYgWZzM1M#kk|4=&{>4cy$*l3-xF?uL{AUz_5A z50}pAFgB%?DF*m>GD)-@{{F$i>YOfT;)C)He}4t3vbN+MR?Ki#WjWH`E;J#5fkSah z*CvDRdtCvNOpI%k6$_&6*{?lq*|st4mU-vV>qgQQdBM7KAGv%{?hRM3li^KVy1S9x zik*=G2sju77$g`J84MYm7@`=G8L}CQ8LAmtfUpM)r!auv95`Ic0D)T>AaF0kUWRi( zcnu8iF+kvR1_*r5@Sfp29R6n*g@Y>uM&o~Q#Rt7z11bTqgJPg?F|Y&xk=0NVR1Poz z%ZNF^GJpYGT5JXL8G!j8gs%ZfLk3G=Ndlpt1L^lb3@Tv^fu#V1MQ=Zj+J`d)yn#^y zss&&)AHzQe7O)6V5GchAW=nvWNNgr3n*%7$3}v$d*=$fYGmtIF2r&nwMieRzvPldo p4l+|5%Ki*wOEI#7?fS#Uz#t7}vjA&lTO_>>KsEyq{Q;^60RYt05`+K% diff --git a/src/docbkx/resources/images/admons/draft.png b/src/docbkx/resources/images/admons/draft.png deleted file mode 100644 index 0084708c9b8287c51efa6b40b8d492854191455e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17454 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 diff --git a/src/docbkx/resources/images/admons/home.gif b/src/docbkx/resources/images/admons/home.gif deleted file mode 100644 index 6784f5bb01e0104c60e006a2ed525163a380135c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmV-H0lxl6Nk%v~VJHA70KxzO;Nak3U|_JYumAu6&;S7N@bCZt@Bjb+EC2ui04M+` z000C22)f+N_DFSAmXsV{#*oJWIwOJ|OFii&dHVi$1?u8o=2teG> zb~7H4%2JKz`Tcy)XEL^=cAP+G_P7moKVb2g%$4rYhp9PeRzLz zfrD6ufORfRiHeIHgKCh5l6Fj1nwy-RR)UybJ_V$url+TLhynwsuCA(~Rj;(Av5lgv zwwtvDw^OsE0|vwftp&x&!i>OQw#ml^r_#R6Z_dKdq|~Li{txWV+q;;-NCjLKH8RzODs`x)zXFqfx?o2&^85@jF7AWJN0jDQd6 TqQ?;{LW&$ovZP522><{)rIw!r diff --git a/src/docbkx/resources/images/admons/home.png b/src/docbkx/resources/images/admons/home.png deleted file mode 100644 index cbb711de712dcf06597a3a8a3d95f6fefda1f245..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1156 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG|!3-oLGuzY{7?>FXd_r6WdIS`E6g8)48qP6v zn&afP)GK*ya`E2cmc1=K$9krmo3ixW(yjNl9=mt!-1BqS-d}tE{`vdw@Bfd2(GVCG zA@J$l5_e#hU`+CMcVXyYmGuB}CVRR#hE&{I8+eiLumVSprtq8v761QlTpYPgC-&05 zDJ{&8o?4V1EYqU7+)vOI#yLg7ec#$`gxH85}f}H9d0^ z(^GvD(=(H^6-@Mu^ehxCE%gm7^bHIZl8Z8nODY|5D~n4qll4-I^-@X;^7BgclJj#X z?o!+VG)@a_TxNP+Vo52`JVR3xV`HP#G)t4DL{lRpBV!ZeBojj;vlKG}W79NC!#D3= nHUM?;fpi4`tz|GatuQpzHqbT@s&o4Ulwt66^>bP0l+XkK0lack diff --git a/src/docbkx/resources/images/admons/important.gif b/src/docbkx/resources/images/admons/important.gif deleted file mode 100644 index 6795d9a819874ca8b833c4d4993988721489070f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1003 zcmd5)v2xQu5Iutd0|w+k5&Zs3?l2X}aDS zjTF}vbzOHH$Mba8b;e`IbzRT%eBTcOF$gq_YY0gQX<;}D0zVAhF!bZtiem@kQ53ld zc?kJw3X()jQz=b5X{r%YqZCjoWEse^T9yffD1>wGXnD2O6PLX4*vhfx$E#2ysKF~)d4pDz}RBuUaVC4^8)m&+y7^CACN zNWZET0BmraH<<4P+`FFGYnVCKQ9;ZBR3T)qVf|%U7d>simE()pGuDQwHb2TG+MBQ_ zvDDA4Qf1%Pj=rj3vOLN4H;wu(_qSJ$@rtK60JzIpt9fbL=6P}WBLJ%VyrBKnwv9gL z@+koKj|(oEHhf+1r)*HA;C;h{WiuO<>j@AFLq1UdID5A%&u-GCYUTM&`rF#A&P{r^ z_xRIVhqhjHEgv=NdwEBz@%x57)QYSpY=k4uyJx0tows>V2jGshqK7Z@I~q3m5W5c^ zZt#o~c$MEO+~MK7@*>Lh!0mEumT-7-ns3eG+lQO)ySz&7zEB7GF&sm<)jwePAZ~s8 Q_s=i~Dg!i1^#?fn4NukiE&u=k diff --git a/src/docbkx/resources/images/admons/important.png b/src/docbkx/resources/images/admons/important.png deleted file mode 100644 index ad57f6f72e2c4ecf45f1443887956132174516b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1178 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 diff --git a/src/docbkx/resources/images/admons/note.gif b/src/docbkx/resources/images/admons/note.gif deleted file mode 100644 index f329d359e55c7ed753170a6f04fbc0cba1e1e565..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmZ?wbhEHblwgox_`=Ho1YTZVK|w)LQBlds$=TW2#l^+d)zvL6Ej>LwQ>IK=x^(H* zty}l*-FxiVv2*9nUAuPe-o1OzpFe;9{{8>||AFElBX9%7pDc_F45AD=ASEC>8Cd@% zghGJlBo$966GSzJUe!6ZN$1q35SXB^-zJAkEPj)pXq*a$h_ zXQ+sXsjhEmXhNv37hJ?OaLOg1X|~+1jSyWR(o`3y(c1;Ai!}%$em*Glyc1BwlJ~NK zuZpLThNs9@k1ImH0$Wth2s`>W>73rA(RIXT!4{9MLpCC+wq2hkd_`O*d~)g9;?U*N zC}OI4M1Z6Hl7Y`-pGiWx6O;l)uFCkcxOF@EUU3NwS>oY6#RI6O?U2byr$d1v9)TjN znwNw$j~n?OWwbpf2zH99Zo*Lqk)s;^7gg9U27sNV>(8nyV%m64QG)9cM8x-WNa$(j zzz`MJAQq_8eSmmjy7}|Lu@zf kf(CKug-JSrEM6BktMtGlBGk2ik;bV{KB5sIO^OWG0Fd3m^#A|> diff --git a/src/docbkx/resources/images/admons/note.png b/src/docbkx/resources/images/admons/note.png deleted file mode 100644 index ad57f6f72e2c4ecf45f1443887956132174516b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1178 zcmV;L1ZDe)P)moeK~^j3|1ZFhpMb?+WF}Ff9N7 zmErhobEp9j5E&T>5I`t;kO9cfTd$9u{p)!4mdSYr_oELMKxO`8fExuu`}Xa_X%s*J z;k5%RU^)9_1HbrEAnW_@&$?VY5IT%y0zUnF^O@-#d^ z;BG^A?vn+{PTFEX1{PN_GJ*uLxC){aAb@cC1E)8D`1jwRbIx0;O9}pC`Tg?kSGIp< zKB_&OY}`0CurjlYiG39lllaN_k5hz2i0S#$-wFT!|K4`;dcMU?>>(H|ck|bajPDf_+bTg z9%3_tgdnDq97;?KBm#f{qP-0yYXC*uuG?Mj|F0AjX8-!(|L1QU8UmSSvSIlAu=cKj zft)Ik{gLSn|38s`tUu4+xosx6OhMQHyOWrHdNZ*8{mAqd7%Lx{-+cQ2*+^dNDRk(nWU|nV9%kgwK6Q#22j7&lq?ctN;4*_ZRE0Uz={R|6yke zQkMELkC#ILdnjd^T)1_|=EBpfoPXH_ef2r?CH`jZX8HMLU>HeX6b8fym`sd4= z%V{i6<|iS`5=eaieto~1!*jh@!qUoy*wp&!-sMH10>A)SzI-{csg;q5nc@GxKY#u( zGcymu#0L;yBs+=bE+QxUz*ETMkC*SgJMtHp!dZa9&iL);Pf0#K32t>EE_rqq4)QF3 z2GNN}%g?_pcF{3rW8nk}{ABp~mFd0ke+i)MufM+@e|`A;&DUR_6;uTxO=TiDSh+~H z;N$nVt8RH1>2fgsXJP)&%EG|P@}K=H(+5TdM*e@opP4=~{%7Q2;A3HCeEi|*@!L;b zWv1y%d6E{%pMSnzbivnLlTDOI{O{kt{}}%LVfgif`TMuO9|i7mewF;q%`Xbfvfmg! zv9d6K`tbGKZI*b04V{+d%EvDF`_CUx+%WwA%le<`)en|+&lrFG z|K=yiq#(%6!2SO7>udMKWAv5*>raxC>7(~ow%@7b=f9<RrvN?@N=6_W$>fXUp?HoLmA7B{mTyQNIQz6=yDPUS?({d<7(_ z;Lo>@5Bl65mWsTpk!*AZH8Uh6B%VEcMnY{)5PbdqOG-`|ly8}!5q{vn0f-be%c31S scAPwUQdCqlK0cnCn|rtvb~LvD06A7<`Vr(<>Hq)$07*qoM6N<$fWSj8)*j_s0*s+gA3;Sh&ja)bx!VF_Sf>*se@&+kCgO zr+R@?&ik*cqgb|1nDsf`Smu_<(#~sYRz=fNIgWLC7l}#=|C@V!^7^u?J-&S9hp(U4 z$p4Zq##20*5QGIHvwJ-nxqBD;h diff --git a/src/docbkx/resources/images/admons/prev.gif b/src/docbkx/resources/images/admons/prev.gif deleted file mode 100644 index 64ca8f3c7c6856d17625615c7845d9adf8b35e6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1118 zcmZ?wbh9u|RAW$Q_|5jIb=LGEI8QAA*>a1V#C72?E=btEDjqN9qpDd4zl5RF#mYJf^(P5PkwoZW(JQ{ zF_D*4y!wR%9~DOmG#sD7{_&y;#{p%(<{xE#Uw&*>uv^H)Skbd{qJrHLc7}?c9UtQz zYXTT6YHoZvu)pcYrmCD9p$~wJBmbf!%0P@OYB}B?fNF{YnIe9ySJ<~ln9<}1LcYr;@((b@HMtAlPLh^PsKR!G>+|CbXxWHL3#->LwIhe?U cW`4ULC`3qLrpm*X4$b9ricTFB5n!+e06MwKH~;_u diff --git a/src/docbkx/resources/images/admons/prev.png b/src/docbkx/resources/images/admons/prev.png deleted file mode 100644 index cf24654f8a9d6826bf5ee3f6b640d0b34f44d2ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG|!3-oLGuzY{7?>FXd_r6qS{MX+1QdG|HK%AA z&M|bFA9tAudO|H@7THL=dQiK_Wb?x_ut?D z9|fZ!FvLS(&zmEwfLVeu$=lt9p@UV{1IVfNba4!+xV3fSLB2x#g-7SkiDHi<0%5c709k4@>c%U5PUn6XiNrQ7+$BX-K(BEj>;XDjvwZcIF~ zikDl%a$|T|&B@5M-I14sdv^1r*gkp|z3k=crb$1i`yH45`zBpRc(KYI-u^rPzjiy@ zGH(5%+Qq}Yvm59P=MvY5lHmNblJdl&R0anPWlhiA#Pn3(#PrPMYy}fNBRvZROG|wN z3w;Aah2)~l;*v^-+{)sT%w)aPV!f2og8aM^z2yAdiMtec0FBcE8<&}$msnB?G|wQ- z!aOlC%^=CZB-O|yDbdi(G|ec{Bq=S?EGaqB)I9sbjHy6fd>~x`Kx-L{O)CsdwGFfl UgzDTr0c99GUHx3vIVCg!0Q2->tpET3 diff --git a/src/docbkx/resources/images/admons/tip.gif b/src/docbkx/resources/images/admons/tip.gif deleted file mode 100644 index 823f2b417c797bcc5b5af0d86034bbbe68a9c5d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 598 zcmaKpzfZzI6vwMTVkAa>9EomJF@dB^cAyaw8YzNW>;V&-Ax?~pOgK0Qkwp3j7=?eJ zp(Bd}iDHPQ&cwK|BZjz$_padR<(hoox1W3W-n*l8G9sLBGh57bgCWc1aD#QQmI@nS1Ofyy{@WiyWQ4xz1!{fdcDD5FdB`<y3!k zEzMQ}>2XNH@2x$azJrio4y76u%{aaSQ8iI0-$_v{WV^70wC+frSXf@6n4D`V#?Bj* zZt`izA4lq-+})D%wiNUU4VVF+%2sLK@TMg8DV7ztp%Z(?@L;tQU1CsK&Qwqezj{Cq zSwCP?&P}GNbF_4EK-+twGeQq!I#zP|Y+{WP*FI?V_Kf=>vV0rySc_v6yVepU`O=gc N_rd2$!U|dD;1^e0&sYEe diff --git a/src/docbkx/resources/images/admons/tip.png b/src/docbkx/resources/images/admons/tip.png deleted file mode 100644 index ad57f6f72e2c4ecf45f1443887956132174516b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1178 zcmV;L1ZDe)P)moeK~^j3|1ZFhpMb?+WF}Ff9N7 zmErhobEp9j5E&T>5I`t;kO9cfTd$9u{p)!4mdSYr_oELMKxO`8fExuu`}Xa_X%s*J z;k5%RU^)9_1HbrEAnW_@&$?VY5IT%y0zUnF^O@-#d^ z;BG^A?vn+{PTFEX1{PN_GJ*uLxC){aAb@cC1E)8D`1jwRbIx0;O9}pC`Tg?kSGIp< zKB_&OY}`0CurjlYiG39lllaN_k5hz2i0S#$-wFT!|K4`;dcMU?>>(H|ck|bajPDf_+bTg z9%3_tgdnDq97;?KBm#f{qP-0yYXC*uuG?Mj|F0AjX8-!(|L1QU8UmSSvSIlAu=cKj zft)Ik{gLSn|38s`tUu4+xosx6OhMQHyOWrHdNZ*8{mAqd7%Lx{-+cQ2*+^dNDRk(nWU|nV9%kgwK6Q#22j7&lq?ctN;4*_ZRE0Uz={R|6yke zQkMELkC#ILdnjd^T)1_|=EBpfoPXH_ef2r?CH`jZX8HMLU>HeX6b8fym`sd4= z%V{i6<|iS`5=eaieto~1!*jh@!qUoy*wp&!-sMH10>A)SzI-{csg;q5nc@GxKY#u( zGcymu#0L;yBs+=bE+QxUz*ETMkC*SgJMtHp!dZa9&iL);Pf0#K32t>EE_rqq4)QF3 z2GNN}%g?_pcF{3rW8nk}{ABp~mFd0ke+i)MufM+@e|`A;&DUR_6;uTxO=TiDSh+~H z;N$nVt8RH1>2fgsXJP)&%EG|P@}K=H(+5TdM*e@opP4=~{%7Q2;A3HCeEi|*@!L;b zWv1y%d6E{%pMSnzbivnLlTDOI{O{kt{}}%LVfgif`TMuO9|i7mewF;q%`Xbfvfmg! zv9d6K`tbGKZI*b04V{+d%EvDF`_CUx+%WwA%le<`)en|+&lrFG z|K=yiq#(%6!2SO7>udMKWAv5*>raxC>7(~ow%@7b=f9<RrvN?@N=6_W$>fXUp?HoLmA7B{mTyQNIQz6=yDPUS?({d<7(_ z;Lo>@5Bl65mWsTpk!*AZH8Uh6B%VEcMnY{)5PbdqOG-`|ly8}!5q{vn0f-be%c31S scAPwUQdCqlK0cnCn|rtvb~LvD06A7<`Vr(<>Hq)$07*qoM6N<$fZTZTei3kDV32yV!Q3h+-nMlqyV>lRzWV|5XS|!R zJ9po!|JC=_hMz9Ex3Ove_O<7Ki^+ZG3OW)0HK&YExa~knT17|Dw`}IsahgrSch^-` zbR3#}CTEJE3FpcFHhEeT>m*%ClD6O_#XWHUqAtUxv!lnpXbkP%`INR23xxENF% fWR5tL{SwHQVq^u|^$Ez9hO&PF*|tb}fm{Xvme+K0 diff --git a/src/docbkx/resources/images/admons/toc-blank.png b/src/docbkx/resources/images/admons/toc-blank.png deleted file mode 100644 index 6ffad17a0c7a78deaae58716e8071cc40cb0b8e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!VDzk7iOmbDT4r?5LY1G0LBeqssYGrXgF}- zKtn^rf1vn(hW}s+NCR0w;4iG^2^42c@^*J&=wOxg0CMC!T^vIyZYBTtzyH6zKuy9A zentg0F+qV0g#~P97#OBpaJrNsxA6f`rE`gEL`iUdT1k0gQ7VIjhO(w-Zen_>Z(@38 za<+nro{^q~f~BRtfrY+-p+a&|W^qZSLvCepNoKNMYO!8QX+eHoiC%Jk?!;Y+JAlS% zfsM;d&r2*R1)7&;o@#7ik&>8{Vv?F>U|?x(ZfKHZYGz`bmXczeoR*Z-Hs=yh7cWRx f0MJ?nL(>XNZ3Ars^Rf>h;}|?${an^LB{Ts5OHX0g diff --git a/src/docbkx/resources/images/admons/toc-minus.png b/src/docbkx/resources/images/admons/toc-minus.png deleted file mode 100644 index abbb020c8e2d6705ebc2f0fc17deed30f2977a46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q4-G!sMP)HD-wQzH`-1CumMgJctv6pLi@6hos# qqtv?{|7HPo@q%;(0Ig*(G_A1IHqbUOFZ%#8j=|H_&t;ucLK6V~f=xvL diff --git a/src/docbkx/resources/images/admons/toc-plus.png b/src/docbkx/resources/images/admons/toc-plus.png deleted file mode 100644 index 941312ce0dab168e0efcc5b572e387259880e541..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q49T#T`K7w7|w?rspM=lmg95OfodLFfd9rOi4*hH8wIdOfpPPHA_l1 vPBO4aOiebg{jIb=LGEI8QAA*>a1V#C72?E=bjEDjqN9qpDd4szjmF#mYJf^(P5Pk#A^PL<$Q zI+;RG?K?R>ZZ+XJpnRtJN17PRgOAG`Ypgh#KAaFZVBhwmiI3&M#ti2gFIJ`xI|LdI z)N_AywPiSv9NPY48`Fms0t^T1xjuG&jrgXxZ|i>{CW9aPigr7S6dxV77JO*m^5e&) zo(}&F0j>Y}9vSZmQL;N0Bl*v`gWrf@#t#YRf*HM~)&2b!mjeThEhE5z G!5RR%al9%3 diff --git a/src/docbkx/resources/images/admons/up.png b/src/docbkx/resources/images/admons/up.png deleted file mode 100644 index 07634de26b325b09b6686543e3743ec58426e64b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1111 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 Q|4LwNc=22{#`)I&0Kw?pcK`qY diff --git a/src/docbkx/resources/images/admons/warning.tif b/src/docbkx/resources/images/admons/warning.tif deleted file mode 100644 index 7b6611ec7a1980022c11ad6877fedf32f41b3df0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1990 zcmebD)MAieXJBaHR|qhCa3Ybt#fe?OBZVhOke}_5p}~zDOYXJdOmf$P_Zjir-v(f(n1LVCeE22NskqJ)$I5g z8XP9S{LzviJ+sf*L4iXe*;u-Tjq%lq8EgzJ!Hcg+?M+EyWoUYBc3S038aqStx-zY! zDFTdKac@c|p3q>CIvAgpWRM#aTC%3+U_*~obs9PKLA zwdWf7S{m)1m+z3c?Wmx@z`-EEAipvhp!;Kbm?5X2D0kj+rcP|eW7(8DkV2Fki5IhEj=NKUH8UqO41H$KE_?`g-zXRd_Q8-9KfPnz02B(N>pejpX z>SzI`howNaA&_POrkNgK+E@xq2Mpl!zyMB5$ACOgn$iTTxCSKe0kI-51uy_p+j}7S z9f(I$z~Bf0U{v4*qwzmD;)zDC@CHUcBM`%AK8Ak`EMO6Es$gUWvn4>Pkl0L6HV06g z8Omk_ve}?)W*}RT5n>KVjVM$cWRnC}X^4DKU-G|w_t}fLBA)Suv#nrW z!^h2QnY_`l!BOq-UXEX{m2up>JTQkX)2m zTvF+fTUlI^nXH#utd~++ke^qgmzgTe~DWM4ffP81J diff --git a/src/docbkx/resources/images/callouts/10.png b/src/docbkx/resources/images/callouts/10.png deleted file mode 100644 index 997bbc8246a316e040e0804174ba260e219d7d33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQWtZ~+OvdJMW|Y+^UT?O-M{rKJsmzxdayJ{ zDCQA!%%@7Jj$q%-wf8e0_jRx8Dqi$}^?K=?6FriQFLv>>oc^CE+aVHhW3=nZ+fQ4!M=ZC7H>3sl|FJr3LwU zC3?yExf6FO?f@F61vV}-Juk7O6lk8Yg;}bFaZ-|HQc7Azopr01?u8M*si- diff --git a/src/docbkx/resources/images/callouts/11.png b/src/docbkx/resources/images/callouts/11.png deleted file mode 100644 index ce47dac3f52ac49017749a3fea53db57d006993c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 565 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1SD^YpWXnZI14-?iy0V%N{XE z)7O>#600DeuDZ?5tOl@ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=9KoYUDZ+`aP)jU z&ny=ErrK^#Gw!AcR}pdfMERuV^@&0$@(#^6b8c@rn^6RWX3pUb z4*6@PZ+H0#u=rjsXzS?6n6*sBGbHqGTU%mCsH?n#%j;eD^2}qe=iX*J@VQ3BRpz+u z{PX#N(^9X${`$90+;!pWs>o@z_n8G)7Uo7PJz`jrS+)QE@=PWHmc~UIw=WmUe73o7 z>^bR(M752aYoNg~ozu7U7&{(U>{s!;bn#f?ItjL^o`e{*EOQHqO;ccnz9hLK5@2cAyw@AaPFL~Cp#02|E|4xeQteNtB7waMs QVCXP-y85}Sb4q9e0GRUFb^rhX diff --git a/src/docbkx/resources/images/callouts/12.png b/src/docbkx/resources/images/callouts/12.png deleted file mode 100644 index 31daf4e2f25b6712499ee32de9c2e3b050b691ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 617 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1SD^YpWXnZI14-?iy0V%N{XE z)7O>#600De9$%>2LVd81Yeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=Cn>wTzx1(qV@bS z0hYvspf(--lM>otrqbK$7p{3DzJ|+KN8%5ows)AI?zWk_n>jwEHXrTJecpEW_0xL= z?}N`*R`T~d2{AN${y8T#GEn4hUb&52^}Op@TW4{oc)A6)%$5=G}h# z?O{QLj@aRcAIf&y&OiUN=H2gq=_}V|pWfuReDV|{jwXw~>#w)I|9${XE z)7O>#600Dep5bGK9wD%hYeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=Cn>w>~AWNX^a2R zbkveVY|45D7UnZ&JtjPwvdCCscZp0EA*0()#GOw)UH4-^&)y^E*4%UC)*|J}q_Ss;tN`nd8$>x9$_Xb^O2EpX&@C ZI46EzbLxq-voTO7gQu&X%Q~loCIF_C`w;*D diff --git a/src/docbkx/resources/images/callouts/14.png b/src/docbkx/resources/images/callouts/14.png deleted file mode 100644 index 64014b75fe2e84d45ed861974c72462727979360..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 411 zcmV;M0c8G(P)!ax*-PXaQ9e~6^e1gu=a6a&KSz}bR`+prYG9ayB$BDjWGfIE;t#wl!+ zR3S(jA%y#i_@eOOedXoc%RQe%L;wH~k+s%ZI~)!<=dD%?4MaplaU9QPGski2q3`>r z(}{j@0a$CLl+)={2vLWml*i-oa5#J}DW$gCZB~Z!(!M#)2St|1_V^0qpmCrBof=Y&NUas@LmfSw=)4B4f;8Fu)(eFsv24 zJzXxBrayquXcR?J{XE z)7O>#600De0j~t#c`vY#Yeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=9Eq_Jl&Ka(%QdX zh{H8O%#_7)Tc@t$mM`p4(Ne7omR*~(>gd8_8AZH{=3ms$Fmzm^yL@_+(#aQQ5>7QW z>3g2fIsH(ugM)!V$x4Rr_+!J_XU%4xbz0aE;^N{m@42Z|@0S@TQ=WbP`TMV5Ok;<| z^Ihv+@6tQ{sciRF9dD7Nr=KobwJJ68zJK$<1Pd9rz%4O)*;}Jzj&~nTGMecz>B%lV zK|`fmIc8mp-h8iSXiGFW=C(L+XH4DRxZQX87^-dLuD>odo6YLT@Sw)dfBEIG)v2@6 zR)%mL7GRj1x-&v&+2q@A%a&h0`Lw7|#(w_!tgT!PoJ|+re`lxaY7e*=hH)_rZeB4|imU1$R#1`!P>&$poQl;nzm}mD5ZFopaX|GsS%q*{P~< z;WtmO%lhToBL0i}yfkaOt?EN=nkLNGuU`ywhI5H)L`iUdT1k0gQ7VIjhO(w-Zen_> zZ(@38a<+nro{^q~f~BRtfrY+-p+a&|W^qZSLvCepNoKNMYO!8QX+eHoiC%Jk?!;Y+ zJAlS%fsM;d&r2*R1)67JkeZlkYGj#gX_9E3W@4U_nw*@Ln38B@k(iuhnUeN2eF0kK0(Y1u|9Rc(19XFPiEBhjaDG}zd16s2gM)^$re|(qda7?? zdS-IAf{C7yo`r&?rM`iMzJZ}aa#3b+Nu@(>WpPPnvR-PjUP@^}eqM=Qa(?c_U5Yz^ z#%Y0#%S_KpEGY$=XJL?(l#*ybuErX#^g`ttQfwn3r>K)tuC)r#2`iJ>Prt42#Ndx#Uc~1)>aw z3jE@Q4|!9Z%lVv}- zc=48cF7H)t`(Ck`^+mtha~Np7bBSw2NpOBzNqJ&XDuaWDvZiNlVtT4?VtQtBwt|VC zk)DNurKP@sg}#BILUK`NaY>~^Ze?*vX0l#tv0h4PL4IC|UUGi!#9fLzfW~Qojmu2W zODrh`nrE42VU(7fm~5G9U~HM3l#*m_WNcxOXkuzEX4g z+-vfUhb0A>b04=Im{6XiQd1v%r%>h0$G8U7E1If8OQ!N~xOYY5h0NDT$p9(iZ?Q&e z18-(+l~J8O`)kc}e&uL$eW&>P-#`~Qm$*ih1m~xflqVLYGB{``YkKA;rl!p+yCFkc(+@-h!Xq*<< zxXkpt#FA2=d1VEBsYynrsitN|Y01eJ$;p;U#>wWX2KP5v&I9V=1L+C? fTFYQ)RAFeOZJ=$?lDoSWD8u0C>gTe~DWM4f^}upZ diff --git a/src/docbkx/resources/images/callouts/6.png b/src/docbkx/resources/images/callouts/6.png deleted file mode 100644 index 0ba694af6c07d947d219b45a629bd32c60a0f5fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQ*)Bra@SU# zmiz#bR~{$s2si{S(aY|Z}Vd7tb ouUmn-_&~Y>fYve?8dVq?X&Y!8wB+ut1u%w%U~xZhnMEEs6JbBSw2NpOBzNqJ&XDuaWDvZiNlVtT4?VtQtBwt|VC zk)DNurKP@sg}#BILUK`NaY>~^Ze?*vX0l#tv0h4PL4IC|UUGi!#9fLzfW~Qojmu2W zODrh`nrCEbVQgk$XkwI@Y+{_8nv`N>YGIaQkz#0QY@Te9lBQ<)awbq0A4pdK&{_sV bqY6VKZ3AtCmfYR7Kp6&4S3j3^P6u&S`V$cAh@R~F=4@V4jxkzlaQrcFYWK{)(`o5XZnut z=nE4SU2g1ZW%;@@I$>_e3F8a=8WK~|CVXt1DqisQxtIX|`YW_n&?Nh#1gQ}d)$LrYTw(_{nVG)tp2V+#}WG*e^KRLdkoLz7g? qn(IA84Qgo42`r6v<+Hvch>@C7(8A5T-G@yGywn*$#_oy diff --git a/src/docbkx/resources/images/callouts/9.png b/src/docbkx/resources/images/callouts/9.png deleted file mode 100644 index a0676d26cc2ff1de12c4ecdeefb44a0d71bc6bde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQNRqa;^5&H%t0&v*|C|wdb9$wI zR@+N9#RIowg@Uqn&z-__Tzhhz!sG|vTxA7?=O|Y?u(d4T{!RM9c7chr6d%1?R=i16 z?@Ic{f32YJFJnVhX)qGzOMplv!L->5yAlT#}irms+fsQd*FoSE84k zpF44v;trs3T43Wc)AJHbN`dAXo0u6Hr<$gkq?lM38ycjV7+5A5Sr{ayr5c%-n;95g pF*H#D>f!_G3IJNmU}#ifXryhRZP1dtyA~+J;OXk;vd$@?2>@J{cB%jX diff --git a/src/docbkx/resources/images/logo.png b/src/docbkx/resources/images/logo.png deleted file mode 100644 index a9f6d959e77f14eed6bdb750190ff83289279793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9627 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 diff --git a/src/docbkx/resources/xsl/fopdf.xsl b/src/docbkx/resources/xsl/fopdf.xsl deleted file mode 100644 index 0a90bfb..0000000 --- a/src/docbkx/resources/xsl/fopdf.xsl +++ /dev/null @@ -1,449 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , - - - - - - - - - Copyright © 2011 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -5em - -5em - - - - - - - - - - - Spring Data Document () - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - 1 - 1 - 0 - - - - - - book toc - - - - 2 - - - - - - - - - - 0 - 0 - 0 - - - 5mm - 10mm - 10mm - - 15mm - 10mm - 0mm - - 18mm - 18mm - - - 0pc - - - - - justify - false - - - 11 - 8 - - - 1.4 - - - - - - - 0.8em - - - - - - 17.4cm - - - - 4pt - 4pt - 4pt - 4pt - - - - 0.1pt - 0.1pt - - - - - 1 - - - - - - - - left - bold - - - pt - - - - - - - - - - - - - - - 0.8em - 0.8em - 0.8em - - - pt - - 0.1em - 0.1em - 0.1em - - - 0.6em - 0.6em - 0.6em - - - pt - - 0.1em - 0.1em - 0.1em - - - 0.4em - 0.4em - 0.4em - - - pt - - 0.1em - 0.1em - 0.1em - - - - - bold - - - pt - - false - 0.4em - 0.6em - 0.8em - - - - - - - - - pt - - - - - 1em - 1em - 1em - #444444 - solid - 0.1pt - 0.5em - 0.5em - 0.5em - 0.5em - 0.5em - 0.5em - - - - 1 - - #F0F0F0 - - - - - - 0 - 1 - - - 90 - - - - - '1' - src/docbkx/resources/images/admons/ - - - - - - figure after - example before - equation before - table before - procedure before - - - - 1 - - - - 0.8em - 0.8em - 0.8em - 0.1em - 0.1em - 0.1em - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/docbkx/resources/xsl/highlight-fo.xsl b/src/docbkx/resources/xsl/highlight-fo.xsl deleted file mode 100644 index 09d8089..0000000 --- a/src/docbkx/resources/xsl/highlight-fo.xsl +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/docbkx/resources/xsl/highlight.xsl b/src/docbkx/resources/xsl/highlight.xsl deleted file mode 100644 index c63c476..0000000 --- a/src/docbkx/resources/xsl/highlight.xsl +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/docbkx/resources/xsl/html.xsl b/src/docbkx/resources/xsl/html.xsl deleted file mode 100644 index d3250c7..0000000 --- a/src/docbkx/resources/xsl/html.xsl +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - 0 - 0 - 1 - - - - - - book toc - - - - 3 - - - - - 1 - - - - - - - 1 - - - 90 - - - - - 1 - images/admons/ - - - - figure after - example before - equation before - table before - procedure before - - - - , - - - - - - - - -
-

Authors

-

- -

-
- - - -
- - - - - - -
- - - - diff --git a/src/docbkx/resources/xsl/html_chunk.xsl b/src/docbkx/resources/xsl/html_chunk.xsl deleted file mode 100644 index 29b35d2..0000000 --- a/src/docbkx/resources/xsl/html_chunk.xsl +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - - - - '5' - '1' - 0 - 0 - 1 - - - - book toc - qandaset toc - - - 3 - - - 1 - - - - - 1 - 90 - - - - - 1 - images/admons/ - - - - figure after - example before - equation before - table before - procedure before - - - - , - - - - () - - - - - -
-

Authors

-

- -

-
- - - - - - - - 1 - - - - - - - - - - - - - -