Skip navigation links
A B C D E F G H I K L N O P R S T U V W 

A

addAllPluginJars(Path, Predicate<Path>) - Method in class de.skuzzle.tinyplugz.internal.PluginSourceBuilderImpl
 
addAllPluginJars(Path) - Method in interface de.skuzzle.tinyplugz.PluginSourceBuilder
Adds all jar files from the given folder as plugin.
addAllPluginJars(Path, Predicate<Path>) - Method in interface de.skuzzle.tinyplugz.PluginSourceBuilder
Adds all jar files from the given folder for which the given predicate holds true as plugin.
addPlugin(URL) - Method in class de.skuzzle.tinyplugz.internal.PluginSourceBuilderImpl
 
addPlugin(URL) - Method in interface de.skuzzle.tinyplugz.PluginSourceBuilder
Adds a plugin which is located by the given URL.
addPluginJar(Path) - Method in class de.skuzzle.tinyplugz.internal.PluginSourceBuilderImpl
 
addPluginJar(Path) - Method in interface de.skuzzle.tinyplugz.PluginSourceBuilder
Adds the given jar file as plugin.
addUnpackedPlugin(Path) - Method in class de.skuzzle.tinyplugz.internal.PluginSourceBuilderImpl
 
addUnpackedPlugin(Path) - Method in interface de.skuzzle.tinyplugz.PluginSourceBuilder
Adds a plugin which is not packed into a jar but which contents are contained in the given folder.
ALL_DEFAULT_OPTIONS - Static variable in class de.skuzzle.tinyplugz.Options
Unmodifiable set containing all known default options.

B

builder() - Static method in interface de.skuzzle.tinyplugz.PluginSource
Creates a builder object for building PluginSource objects.

C

clear() - Method in class de.skuzzle.tinyplugz.util.LazyMap
 
close() - Method in class de.skuzzle.tinyplugz.internal.DelegateClassLoader
 
close(Closeable...) - Static method in class de.skuzzle.tinyplugz.util.Closeables
Closes the given Closeables and collects all occurring exceptions as suppressed exception to the exception that occurred first.
close(Iterable<? extends Closeable>) - Static method in class de.skuzzle.tinyplugz.util.Closeables
Closes the given Closeables and collects all occurring exceptions as suppressed exception to the exception that occurred first.
close() - Method in class de.skuzzle.tinyplugz.util.ExchangeClassLoader
 
Closeables - Class in de.skuzzle.tinyplugz.util
Utility class for safely closing Closeable instances wihtout throwing an exception.
composite(Iterator<T>...) - Static method in class de.skuzzle.tinyplugz.util.Iterators
Creates an iterator which subsequently iterates over all given iterators.
composite(Iterable<T>...) - Static method in class de.skuzzle.tinyplugz.util.Iterators
Creates an iterable which returns a composite iterator over all iterators of the given iterables.
condition(boolean, String, Object...) - Static method in class de.skuzzle.tinyplugz.util.Require
Asserts that the given condition holds true.
configure(TinyPlugzConfigurator.DefineProperties, ServletContext) - Method in class de.skuzzle.tinyplugz.servlet.TinyPlugzServletContextListener
Provides settings for deploying TinyPlugz.
containsKey(Object) - Method in class de.skuzzle.tinyplugz.util.LazyMap
 
containsValue(Object) - Method in class de.skuzzle.tinyplugz.util.LazyMap
 
contextDestroyed(ServletContextEvent) - Method in class de.skuzzle.tinyplugz.servlet.TinyPlugzServletContextListener
 
contextInitialized(ServletContextEvent) - Method in class de.skuzzle.tinyplugz.servlet.TinyPlugzServletContextListener
 
createClassLoader(PluginSource, ClassLoader) - Method in class de.skuzzle.tinyplugz.TinyPlugz
Creates a ClassLoader which accesses the given collection of plugins.
createInstance() - Method in interface de.skuzzle.tinyplugz.TinyPlugzConfigurator.DeployTinyPlugz
Creates a new TinyPlugz instance using the configured values.
createInstance(Object, Class<T>, ClassLoader) - Static method in class de.skuzzle.tinyplugz.util.ReflectionUtil
Creates or returns an instance of an arbitrary type which is a sub type of given base class.
createSource() - Method in class de.skuzzle.tinyplugz.internal.PluginSourceBuilderImpl
 
createSource() - Method in interface de.skuzzle.tinyplugz.PluginSourceBuilder
Creates a PluginSource from the configured URLs.

D

de.skuzzle.tinyplugz - package de.skuzzle.tinyplugz
This package contains the main public client API of TinyPlugz.
de.skuzzle.tinyplugz.internal - package de.skuzzle.tinyplugz.internal
This package contains internal classes which are not meant to be directly referenced by client code.
de.skuzzle.tinyplugz.servlet - package de.skuzzle.tinyplugz.servlet
TinyPlugz web application integration.
de.skuzzle.tinyplugz.util - package de.skuzzle.tinyplugz.util
Utilities for TinyPlugz.
defaultDispose() - Method in class de.skuzzle.tinyplugz.TinyPlugz
Default behavior for TinyPlugz.dispose(): Calls close if the Classloader returned by TinyPlugz.getClassLoader() is an instance of Closeable.
defaultGetFirstService(Class<T>) - Method in class de.skuzzle.tinyplugz.TinyPlugz
Default implementation for TinyPlugz.getFirstService(Class) building upon result of TinyPlugz.getServices(Class).
defaultGetResource(String) - Method in class de.skuzzle.tinyplugz.TinyPlugz
Default implementation for TinyPlugz.getResource(String) building upon result of TinyPlugz.getClassLoader().
defaultGetResources(String) - Method in class de.skuzzle.tinyplugz.TinyPlugz
Default implementation for TinyPlugz.getResources(String) building upon result of TinyPlugz.getClassLoader().
defaultGetService(Class<T>) - Method in class de.skuzzle.tinyplugz.TinyPlugz
Default implementation of TinyPlugz.getService(Class) building upon result of TinyPlugz.getServices(Class).
defaultRunMain(String, String[]) - Method in class de.skuzzle.tinyplugz.TinyPlugz
Default implementation for TinyPlugz.runMain(String, String[]).
DelegateClassLoader - Class in de.skuzzle.tinyplugz.internal
This ClassLoader allows the application to access classes and resources from any loaded plugin.
DependencyResolver - Interface in de.skuzzle.tinyplugz.internal
Used to connect class- and resource loading between different plugins.
deploy() - Method in interface de.skuzzle.tinyplugz.TinyPlugzConfigurator.DefineProperties
Finally deploys the TinyPlugz instance using the configured values.
deploy() - Method in interface de.skuzzle.tinyplugz.TinyPlugzConfigurator.DeployTinyPlugz
Finally deploys the TinyPlugz instance using the configured values.
DEPLOY_LOCK - Static variable in class de.skuzzle.tinyplugz.TinyPlugzConfigurator
Lock which synchronizes every non-trivial access to TinyPlugz.instance.
DeployListener - Interface in de.skuzzle.tinyplugz
Listener which is notified when a TinyPlugz instance is deployed.
destroy() - Method in class de.skuzzle.tinyplugz.servlet.TinyPlugzContextServlet
 
dispose() - Method in class de.skuzzle.tinyplugz.TinyPlugz
Called upon undeploy to release resources.

E

ElementIterator<T> - Interface in de.skuzzle.tinyplugz.util
Interface which combines Iterator and Enumeration.
empty() - Static method in interface de.skuzzle.tinyplugz.PluginSource
Creates an empty PluginSource.
entrySet() - Method in class de.skuzzle.tinyplugz.util.LazyMap
 
equals(Object) - Method in class de.skuzzle.tinyplugz.util.LazyMap
 
ExchangeClassLoader - Class in de.skuzzle.tinyplugz.util
Used to define a scoped action during which the context Classloader is exchanged for another one.

F

FAIL_ON_MULTIPLE_PROVIDERS - Static variable in class de.skuzzle.tinyplugz.Options
Configuration option which will cause the deployment to fail if there are multiple service providers on the class path.
findClass(String) - Method in class de.skuzzle.tinyplugz.internal.DelegateClassLoader
 
findClass(DependencyResolver, String) - Method in interface de.skuzzle.tinyplugz.internal.DependencyResolver
Searches for a class with given name.
findDeployListeners(ClassLoader) - Method in class de.skuzzle.tinyplugz.TinyPlugz
Looks up DeployListener to be notified right after this instance has been deployed by the TinyPlugzConfigurator class.
findResource(String) - Method in class de.skuzzle.tinyplugz.internal.DelegateClassLoader
 
findResource(DependencyResolver, String) - Method in interface de.skuzzle.tinyplugz.internal.DependencyResolver
Searches for a resource with given name.
findResources(String) - Method in class de.skuzzle.tinyplugz.internal.DelegateClassLoader
 
findResources(DependencyResolver, String, Collection<URL>) - Method in interface de.skuzzle.tinyplugz.internal.DependencyResolver
Searches for all resources with given name and collects them in the given collection.
FORCE_DEFAULT - Static variable in class de.skuzzle.tinyplugz.Options
Configuration property for disabling the TinyPlugz implementation lookup and always use the default implementation.
FORCE_IMPLEMENTATION - Static variable in class de.skuzzle.tinyplugz.Options
Configuration property for explicitly specifying the TinyPlugz implementation to use.
forMap(Supplier<Map<K, V>>) - Static method in class de.skuzzle.tinyplugz.util.LazyMap
 
forPlugins(Stream<URL>, ClassLoader) - Static method in class de.skuzzle.tinyplugz.internal.DelegateClassLoader
Creates a new ClassLoader which provides access to all plugins given by the collection of URLs.
forTinyPlugz() - Static method in class de.skuzzle.tinyplugz.util.ExchangeClassLoader
If TinyPlugz is deployed, the context ClassLoader is exchanged for TinyPlugz's Classloader.

G

get(Object) - Method in class de.skuzzle.tinyplugz.util.LazyMap
 
getClassLoader() - Method in interface de.skuzzle.tinyplugz.PluginInformation
The ClassLoader which loaded the plugin.
getClassLoader() - Method in class de.skuzzle.tinyplugz.TinyPlugz
Returns the ClassLoader which can access classes from loaded plugins.
getDefault() - Static method in class de.skuzzle.tinyplugz.internal.ServiceLoaderWrapper
Gets the default ServiceLoaderWrapper instance.
getFirstService(Class<T>) - Method in class de.skuzzle.tinyplugz.TinyPlugz
Loads services of the given type which are accessible from loaded plugins and the host application by using java's ServiceLoader capabilities.
getInformation() - Method in class de.skuzzle.tinyplugz.internal.DelegateClassLoader
Information about all loaded plugins.
getInstance(ClassLoader, Map<Object, Object>) - Method in enum de.skuzzle.tinyplugz.internal.TinyPlugzLookUp
Creates a TinyPlugz instance, configuring it according to the given properties.
getInstance(ClassLoader, ServiceLoaderWrapper, Map<Object, Object>) - Method in enum de.skuzzle.tinyplugz.internal.TinyPlugzLookUp
Creates a TinyPlugz instance, configuring it according to the given properties.
getInstance() - Static method in class de.skuzzle.tinyplugz.TinyPlugz
Gets the single TinyPlugz instance.
getLocation() - Method in interface de.skuzzle.tinyplugz.PluginInformation
The location from which the plugin has been loaded.
getManifest() - Method in interface de.skuzzle.tinyplugz.PluginInformation
Manifest meta information from the plugin's jar.
getPluginInformation() - Method in class de.skuzzle.tinyplugz.TinyPlugz
Gets a collection of information about all loaded plugins.
getPluginURLs() - Method in interface de.skuzzle.tinyplugz.PluginSource
Gets a stream of URLs pointing to plugins to be loaded by TinyPlugz.
getResource(String) - Method in class de.skuzzle.tinyplugz.TinyPlugz
Searches for a resource with given name within loaded plugins and the host application.
getResources(String) - Method in class de.skuzzle.tinyplugz.TinyPlugz
Finds all the resources with the given name within loaded plugins and the host application.
getService(Class<T>) - Method in class de.skuzzle.tinyplugz.TinyPlugz
Loads services of the given type which are accessible from loaded plugins and the host application by using java's ServiceLoader capabilities.
getServices(Class<T>) - Method in class de.skuzzle.tinyplugz.TinyPlugz
Loads all services of the given type which are accessible from loaded plugins and the host application by using java's ServiceLoader capabilities.
getServletConfig() - Method in class de.skuzzle.tinyplugz.servlet.TinyPlugzContextServlet
 
getServletInfo() - Method in class de.skuzzle.tinyplugz.servlet.TinyPlugzContextServlet
 
getSimpleName() - Method in interface de.skuzzle.tinyplugz.internal.DependencyResolver
Returns a simple displayable name for this resolver.

H

hashCode() - Method in class de.skuzzle.tinyplugz.util.LazyMap
 
hasMoreElements() - Method in interface de.skuzzle.tinyplugz.util.ElementIterator
 

I

include(PluginSource) - Method in class de.skuzzle.tinyplugz.internal.PluginSourceBuilderImpl
 
include(PluginSource) - Method in interface de.skuzzle.tinyplugz.PluginSourceBuilder
Includes all plugins from the given source in the source which is to be built by this builder.
init(ServletConfig) - Method in class de.skuzzle.tinyplugz.servlet.TinyPlugzContextServlet
 
initialize(PluginSource, ClassLoader, Map<Object, Object>) - Method in class de.skuzzle.tinyplugz.TinyPlugz
This method is called by the TinyPlugz runtime right after instantiation of this instance.
initialized(TinyPlugz, Map<Object, Object>) - Method in interface de.skuzzle.tinyplugz.DeployListener
Notified when TinyPlugz has been deployed.
isDeployed() - Static method in class de.skuzzle.tinyplugz.TinyPlugz
Checks whether TinyPlugz is currently deployed and is thus accessible using TinyPlugz.getInstance().
isEmpty() - Method in class de.skuzzle.tinyplugz.util.LazyMap
 
isServiceAvailable(Class<?>) - Method in class de.skuzzle.tinyplugz.TinyPlugz
Checks whether there is at least one provider available for the given service.
iterableOf(Iterator<T>) - Static method in class de.skuzzle.tinyplugz.util.Iterators
Wraps the given Iterator into an Iterable.
Iterators - Class in de.skuzzle.tinyplugz.util
Utility class for dealing with Iterators.

K

keySet() - Method in class de.skuzzle.tinyplugz.util.LazyMap
 

L

LazyMap<K,V> - Class in de.skuzzle.tinyplugz.util
 
LazyMap(Supplier<Map<K, V>>) - Constructor for class de.skuzzle.tinyplugz.util.LazyMap
 
loadService(Class<T>, ClassLoader) - Method in class de.skuzzle.tinyplugz.internal.ServiceLoaderWrapper
Returns an Iterator of all implementors of the given service provider interface.

N

nextElement() - Method in interface de.skuzzle.tinyplugz.util.ElementIterator
 
nonNull(T, String) - Static method in class de.skuzzle.tinyplugz.util.Require
Asserts that the given object is non null.
nonNull(T) - Static method in class de.skuzzle.tinyplugz.util.Require
Asserts that the given object is non null.
nonNullResult(T, String) - Static method in class de.skuzzle.tinyplugz.util.Require
Asserts that a method call yielded a non-null result.
noPlugins(PluginSourceBuilder) - Static method in interface de.skuzzle.tinyplugz.PluginSourceBuilder
No-op PluginSourceBuilder consumer method for specifying no plugins when configuring a TinyPlugz instance.

O

Options - Class in de.skuzzle.tinyplugz
Holds constants which can be passed to the TinyPlugzConfigurator before deployment.

P

PLUGIN_FOLDER - Static variable in class de.skuzzle.tinyplugz.Options
Configuration property for specifying an additional folder to load plugins from.
PluginInformation - Interface in de.skuzzle.tinyplugz
Holds meta information about a single loaded plugin.
PluginSource - Interface in de.skuzzle.tinyplugz
Represents the source of plugins which should be loaded.
PluginSourceBuilder - Interface in de.skuzzle.tinyplugz
Builder for configuring the plugins to be deployed by TinyPlugz.
PluginSourceBuilderImpl - Class in de.skuzzle.tinyplugz.internal
Default implementation for PluginSourceBuilder.
PluginSourceBuilderImpl() - Constructor for class de.skuzzle.tinyplugz.internal.PluginSourceBuilderImpl
 
put(K, V) - Method in class de.skuzzle.tinyplugz.util.LazyMap
 
putAll(Map<? extends K, ? extends V>) - Method in class de.skuzzle.tinyplugz.util.LazyMap
 

R

ReflectionUtil - Class in de.skuzzle.tinyplugz.util
Java Reflection utility methods.
remove(Object) - Method in class de.skuzzle.tinyplugz.util.LazyMap
 
Require - Class in de.skuzzle.tinyplugz.util
Utility class for checking parameters and states.
runMain(String, String[]) - Method in class de.skuzzle.tinyplugz.TinyPlugz
Executes a main method in the context of the plugin ClassLoader.

S

safeClose(Closeable) - Static method in class de.skuzzle.tinyplugz.util.Closeables
Closes the given Closeable and logs any error that occurs.
safeCloseAll(Closeable...) - Static method in class de.skuzzle.tinyplugz.util.Closeables
Closes all of the given Closeables by calling safeClose(Closeable) for each element in the array.
safeCloseAll(Iterable<? extends Closeable>) - Static method in class de.skuzzle.tinyplugz.util.Closeables
Closes all of the given Closeables by calling safeClose(Closeable) for each element returned by the Iterable.
service(ServletRequest, ServletResponse) - Method in class de.skuzzle.tinyplugz.servlet.TinyPlugzContextServlet
 
SERVICE_LOADER_WRAPPER - Static variable in class de.skuzzle.tinyplugz.Options
Configuration property for specifying the service loader implementation to use.
ServiceLoaderWrapper - Class in de.skuzzle.tinyplugz.internal
Internal strategy interface for abstracting loading of services.
ServiceLoaderWrapper() - Constructor for class de.skuzzle.tinyplugz.internal.ServiceLoaderWrapper
 
setFailOnChange(boolean) - Method in class de.skuzzle.tinyplugz.util.ExchangeClassLoader
Sets whether ExchangeClassLoader.close() throws an exception if it detects that the context Classloader has been exchanged by a 3rd party.
setup() - Static method in class de.skuzzle.tinyplugz.TinyPlugzConfigurator
Sets up a TinyPlugz instance which uses the current thread's context Classloader as parent Classloader.
setupUsingApplicationClassLoader() - Static method in class de.skuzzle.tinyplugz.TinyPlugzConfigurator
Sets up a TinyPlugz instance which uses the Classloader which loaded the TinyPlugzConfigurator class as parent Classloader.
setupUsingParent(ClassLoader) - Static method in class de.skuzzle.tinyplugz.TinyPlugzConfigurator
Sets up a TinyPlugz instance which uses the given Classloader as parent Classloader.
singleIterator(T) - Static method in class de.skuzzle.tinyplugz.util.Iterators
Creates an Iterator over the single given element.
size() - Method in class de.skuzzle.tinyplugz.util.LazyMap
 
state(boolean, String, Object...) - Static method in class de.skuzzle.tinyplugz.util.Require
Asserts that the given condition holds true.
state(boolean, Function<String, T>, String, Object) - Static method in class de.skuzzle.tinyplugz.util.Require
Asserts that the given condition holds true and throws a custom exception if not.

T

TINY_PLUGZ_CONFIG - Static variable in class de.skuzzle.tinyplugz.TinyPlugzConfigurator
Default resource name of tiny plugz class path configuration
TinyPlugz - Class in de.skuzzle.tinyplugz
TinyPlugz provides simple runtime classpath extension capabilities by providing a high level API around the java ServiceLoader and URLClassLoader classes.
TinyPlugz() - Constructor for class de.skuzzle.tinyplugz.TinyPlugz
 
TinyPlugzConfigurator - Class in de.skuzzle.tinyplugz
Provides a fluent builder API for configuring an application wide single TinyPlugz instance.
TinyPlugzConfigurator.DefineProperties - Interface in de.skuzzle.tinyplugz
Part of the fluent configurator API.
TinyPlugzConfigurator.DeployTinyPlugz - Interface in de.skuzzle.tinyplugz
Part of the fluent configurator API.
TinyPlugzContextServlet - Class in de.skuzzle.tinyplugz.servlet
Wraps another Servlet and performs every action (TinyPlugzContextServlet.init(ServletConfig) , TinyPlugzContextServlet.service(ServletRequest, ServletResponse) and TinyPlugzContextServlet.destroy()) in the scope of the TinyPlugz Classloader as context Classloader.
TinyPlugzException - Exception in de.skuzzle.tinyplugz
Base for TinyPlugz exception.
TinyPlugzException() - Constructor for exception de.skuzzle.tinyplugz.TinyPlugzException
Constructs a new exception with null as its detail message.
TinyPlugzException(String, Throwable, boolean, boolean) - Constructor for exception de.skuzzle.tinyplugz.TinyPlugzException
Constructs a new exception with the specified detail message, cause, suppression enabled or disabled, and writable stack trace enabled or disabled.
TinyPlugzException(String, Throwable) - Constructor for exception de.skuzzle.tinyplugz.TinyPlugzException
Constructs a new exception with the specified detail message and cause.
TinyPlugzException(String) - Constructor for exception de.skuzzle.tinyplugz.TinyPlugzException
Constructs a new exception with the specified detail message.
TinyPlugzException(Throwable) - Constructor for exception de.skuzzle.tinyplugz.TinyPlugzException
Constructs a new exception with the specified cause and a detail message of (cause==null ?
TinyPlugzLookUp - Enum in de.skuzzle.tinyplugz.internal
Internal strategy interface for creating TinyPlugz instances according to properties within a map.
TinyPlugzServletContextListener - Class in de.skuzzle.tinyplugz.servlet
ServletContextListener for configuring TinyPlugz for a web application.
TinyPlugzServletContextListener() - Constructor for class de.skuzzle.tinyplugz.servlet.TinyPlugzServletContextListener
 
toString() - Method in class de.skuzzle.tinyplugz.internal.DelegateClassLoader
 

U

undeploy() - Method in class de.skuzzle.tinyplugz.TinyPlugz
Undeploys the global TinyPlugz instance and calls its TinyPlugz.dispose() method.

V

valueOf(String) - Static method in enum de.skuzzle.tinyplugz.internal.TinyPlugzLookUp
Returns the enum constant of this type with the specified name.
values() - Static method in enum de.skuzzle.tinyplugz.internal.TinyPlugzLookUp
Returns an array containing the constants of this enum type, in the order they are declared.
values() - Method in class de.skuzzle.tinyplugz.util.LazyMap
 

W

with(ClassLoader) - Static method in class de.skuzzle.tinyplugz.util.ExchangeClassLoader
Exchanges the context ClassLoader with the given one until ExchangeClassLoader.close() is called.
withClasspathProperties() - Method in interface de.skuzzle.tinyplugz.TinyPlugzConfigurator.DefineProperties
Adds properties read from file from the class path.
withClasspathProperties(String) - Method in interface de.skuzzle.tinyplugz.TinyPlugzConfigurator.DefineProperties
Adds properties read from the class path using the given resource name.
withPlugins(Consumer<PluginSourceBuilder>) - Method in interface de.skuzzle.tinyplugz.TinyPlugzConfigurator.DefineProperties
Provides the PluginSourceBuilder via the given consumer for adding plugins which should be deployed.
withPlugins(PluginSource) - Method in interface de.skuzzle.tinyplugz.TinyPlugzConfigurator.DefineProperties
Uses the given plugin source.
withProperties(Map<? extends Object, ? extends Object>) - Method in interface de.skuzzle.tinyplugz.TinyPlugzConfigurator.DefineProperties
Specifies a multiple properties to insert into the map which will be passed to TinyPlugz.initialize(PluginSource, ClassLoader, Map) .
withProperty(String, Object) - Method in interface de.skuzzle.tinyplugz.TinyPlugzConfigurator.DefineProperties
Specifies a single property to insert into the map which will be passed to TinyPlugz.initialize(PluginSource, ClassLoader, Map) .
withProperty(String) - Method in interface de.skuzzle.tinyplugz.TinyPlugzConfigurator.DefineProperties
Specifies a property without value.
withSystemProperties() - Method in interface de.skuzzle.tinyplugz.TinyPlugzConfigurator.DefineProperties
wrap(Servlet) - Static method in class de.skuzzle.tinyplugz.servlet.TinyPlugzContextServlet
Wraps the given Servlet.
wrap(Iterator<T>) - Static method in interface de.skuzzle.tinyplugz.util.ElementIterator
Wraps the given iterator into a ElementIterator.
wrap(Enumeration<T>) - Static method in interface de.skuzzle.tinyplugz.util.ElementIterator
Wraps the given enumeration into a ElementIterator.
A B C D E F G H I K L N O P R S T U V W 
Skip navigation links

Copyright © 2014–2015. All rights reserved.