Mercurial > dive4elements > framework
diff artifact-database/src/main/java/org/dive4elements/artifactdatabase/rest/RestApp.java @ 562:05caf2e731d0
Allow to add additional restful services via configuration.
author | gernotbelger |
---|---|
date | Wed, 10 Oct 2018 20:07:58 +0200 |
parents | 415df0fc4fa1 |
children |
line wrap: on
line diff
--- a/artifact-database/src/main/java/org/dive4elements/artifactdatabase/rest/RestApp.java Mon Sep 24 17:59:17 2018 +0200 +++ b/artifact-database/src/main/java/org/dive4elements/artifactdatabase/rest/RestApp.java Wed Oct 10 20:07:58 2018 +0200 @@ -8,14 +8,14 @@ package org.dive4elements.artifactdatabase.rest; -import org.dive4elements.artifacts.ArtifactDatabase; - +import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.ConcurrentMap; +import org.dive4elements.artifacts.ArtifactDatabase; import org.restlet.Application; import org.restlet.Context; import org.restlet.Restlet; - import org.restlet.routing.Router; /** @@ -25,32 +25,21 @@ * * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a> */ -public class RestApp -extends Application -{ +public class RestApp extends Application { + /** * The central artifact database instance to work with. */ - protected ArtifactDatabase database; - - /** - * Default constructor - */ - public RestApp() { - } - - public RestApp(Context context, ArtifactDatabase database) { - super(context); - this.database = database; - } + private final ArtifactDatabase database; /** * Constructor to create REST appliction bound to a specific * artifact database. * - * @param database The artifact database to be used. + * @param database + * The artifact database to be used. */ - public RestApp(ArtifactDatabase database) { + public RestApp(final ArtifactDatabase database) { this.database = database; } @@ -63,35 +52,35 @@ @Override public Restlet createRoot() { - Context context = getContext(); - - ConcurrentMap map = context.getAttributes(); - map.put("database", database); + final Context context = getContext(); - Router router = new Router(context); + final ConcurrentMap<String, Object> map = context.getAttributes(); + map.put("database", this.database); - router.attach(ServicesResource.PATH, ServicesResource.class); - router.attach(ServiceResource.PATH, ServiceResource.class); - router.attach(FactoriesResource.PATH, FactoriesResource.class); - router.attach(CreateResource.PATH, CreateResource.class); - router.attach(ArtifactResource.PATH, ArtifactResource.class); + final Router router = new Router(context); + + router.attach(ServicesResource.PATH, ServicesResource.class); + router.attach(ServiceResource.PATH, ServiceResource.class); + router.attach(FactoriesResource.PATH, FactoriesResource.class); + router.attach(CreateResource.PATH, CreateResource.class); + router.attach(ArtifactResource.PATH, ArtifactResource.class); router.attach(ArtifactOutResource.PATH, ArtifactOutResource.class); - router.attach(ExportResource.PATH, ExportResource.class); - router.attach(ImportResource.PATH, ImportResource.class); - router.attach(CreateUserResource.PATH, CreateUserResource.class); - router.attach(ListUsersResource.PATH, ListUsersResource.class); - router.attach(UserResource.PATH, UserResource.class); - router.attach(FindUserResource.PATH, FindUserResource.class); - router.attach( - CreateCollectionResource.PATH, CreateCollectionResource.class); - router.attach( - ListCollectionsResource.PATH, ListCollectionsResource.class); - router.attach( - CollectionResource.PATH, CollectionResource.class); - router.attach( - CollectionOutResource.PATH, CollectionOutResource.class); + router.attach(ExportResource.PATH, ExportResource.class); + router.attach(ImportResource.PATH, ImportResource.class); + router.attach(CreateUserResource.PATH, CreateUserResource.class); + router.attach(ListUsersResource.PATH, ListUsersResource.class); + router.attach(UserResource.PATH, UserResource.class); + router.attach(FindUserResource.PATH, FindUserResource.class); + router.attach(CreateCollectionResource.PATH, CreateCollectionResource.class); + router.attach(ListCollectionsResource.PATH, ListCollectionsResource.class); + router.attach(CollectionResource.PATH, CollectionResource.class); + router.attach(CollectionOutResource.PATH, CollectionOutResource.class); + + /* register any additional services */ + final Map<String, Class<?>> restServices = this.database.getRestServices(); + for (final Entry<String, Class<?>> entry : restServices.entrySet()) + router.attach(entry.getKey(), entry.getValue()); return router; } -} -// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : +} \ No newline at end of file