Mercurial > dive4elements > framework
diff artifact-database/src/main/java/org/dive4elements/artifactdatabase/rest/RestApp.java @ 473:d0ac790a6c89 dive4elements-move
Moved directories to org.dive4elements
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 10:57:18 +0200 |
parents | artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java@733e76413bf8 |
children | 415df0fc4fa1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifact-database/src/main/java/org/dive4elements/artifactdatabase/rest/RestApp.java Thu Apr 25 10:57:18 2013 +0200 @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2010 by Intevation GmbH + * + * This program is free software under the LGPL (>=v2.1) + * Read the file LGPL.txt coming with the software for details + * or visit http://www.gnu.org/licenses/ if it does not exist. + */ + +package de.intevation.artifactdatabase.rest; + +import de.intevation.artifacts.ArtifactDatabase; + +import java.util.concurrent.ConcurrentMap; + +import org.restlet.Application; +import org.restlet.Context; +import org.restlet.Restlet; + +import org.restlet.routing.Router; + +/** + * This is the core REST application that binds the serveral resources + * used to manage the artifact database to the HTTP server provided + * by the Restlet framework. + * + * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a> + */ +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; + } + + /** + * Constructor to create REST appliction bound to a specific + * artifact database. + * + * @param database The artifact database to be used. + */ + public RestApp(ArtifactDatabase database) { + this.database = database; + } + + /** + * Overwrites the createRoot() method of Application to + * build the resource tree to form the exposed server URLs. + * + * @return The root of the URL tree exposed by the HTTP server. + */ + @Override + public Restlet createRoot() { + + Context context = getContext(); + + ConcurrentMap map = context.getAttributes(); + map.put("database", database); + + 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); + + return router; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :