Mercurial > dive4elements > framework
comparison 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 |
comparison
equal
deleted
inserted
replaced
561:1c2ce0501305 | 562:05caf2e731d0 |
---|---|
6 * or visit http://www.gnu.org/licenses/ if it does not exist. | 6 * or visit http://www.gnu.org/licenses/ if it does not exist. |
7 */ | 7 */ |
8 | 8 |
9 package org.dive4elements.artifactdatabase.rest; | 9 package org.dive4elements.artifactdatabase.rest; |
10 | 10 |
11 import org.dive4elements.artifacts.ArtifactDatabase; | 11 import java.util.Map; |
12 | 12 import java.util.Map.Entry; |
13 import java.util.concurrent.ConcurrentMap; | 13 import java.util.concurrent.ConcurrentMap; |
14 | 14 |
15 import org.dive4elements.artifacts.ArtifactDatabase; | |
15 import org.restlet.Application; | 16 import org.restlet.Application; |
16 import org.restlet.Context; | 17 import org.restlet.Context; |
17 import org.restlet.Restlet; | 18 import org.restlet.Restlet; |
18 | |
19 import org.restlet.routing.Router; | 19 import org.restlet.routing.Router; |
20 | 20 |
21 /** | 21 /** |
22 * This is the core REST application that binds the serveral resources | 22 * This is the core REST application that binds the serveral resources |
23 * used to manage the artifact database to the HTTP server provided | 23 * used to manage the artifact database to the HTTP server provided |
24 * by the Restlet framework. | 24 * by the Restlet framework. |
25 * | 25 * |
26 * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a> | 26 * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a> |
27 */ | 27 */ |
28 public class RestApp | 28 public class RestApp extends Application { |
29 extends Application | 29 |
30 { | |
31 /** | 30 /** |
32 * The central artifact database instance to work with. | 31 * The central artifact database instance to work with. |
33 */ | 32 */ |
34 protected ArtifactDatabase database; | 33 private final ArtifactDatabase database; |
35 | |
36 /** | |
37 * Default constructor | |
38 */ | |
39 public RestApp() { | |
40 } | |
41 | |
42 public RestApp(Context context, ArtifactDatabase database) { | |
43 super(context); | |
44 this.database = database; | |
45 } | |
46 | 34 |
47 /** | 35 /** |
48 * Constructor to create REST appliction bound to a specific | 36 * Constructor to create REST appliction bound to a specific |
49 * artifact database. | 37 * artifact database. |
50 * | 38 * |
51 * @param database The artifact database to be used. | 39 * @param database |
40 * The artifact database to be used. | |
52 */ | 41 */ |
53 public RestApp(ArtifactDatabase database) { | 42 public RestApp(final ArtifactDatabase database) { |
54 this.database = database; | 43 this.database = database; |
55 } | 44 } |
56 | 45 |
57 /** | 46 /** |
58 * Overwrites the createRoot() method of Application to | 47 * Overwrites the createRoot() method of Application to |
61 * @return The root of the URL tree exposed by the HTTP server. | 50 * @return The root of the URL tree exposed by the HTTP server. |
62 */ | 51 */ |
63 @Override | 52 @Override |
64 public Restlet createRoot() { | 53 public Restlet createRoot() { |
65 | 54 |
66 Context context = getContext(); | 55 final Context context = getContext(); |
67 | 56 |
68 ConcurrentMap map = context.getAttributes(); | 57 final ConcurrentMap<String, Object> map = context.getAttributes(); |
69 map.put("database", database); | 58 map.put("database", this.database); |
70 | 59 |
71 Router router = new Router(context); | 60 final Router router = new Router(context); |
72 | 61 |
73 router.attach(ServicesResource.PATH, ServicesResource.class); | 62 router.attach(ServicesResource.PATH, ServicesResource.class); |
74 router.attach(ServiceResource.PATH, ServiceResource.class); | 63 router.attach(ServiceResource.PATH, ServiceResource.class); |
75 router.attach(FactoriesResource.PATH, FactoriesResource.class); | 64 router.attach(FactoriesResource.PATH, FactoriesResource.class); |
76 router.attach(CreateResource.PATH, CreateResource.class); | 65 router.attach(CreateResource.PATH, CreateResource.class); |
77 router.attach(ArtifactResource.PATH, ArtifactResource.class); | 66 router.attach(ArtifactResource.PATH, ArtifactResource.class); |
78 router.attach(ArtifactOutResource.PATH, ArtifactOutResource.class); | 67 router.attach(ArtifactOutResource.PATH, ArtifactOutResource.class); |
79 router.attach(ExportResource.PATH, ExportResource.class); | 68 router.attach(ExportResource.PATH, ExportResource.class); |
80 router.attach(ImportResource.PATH, ImportResource.class); | 69 router.attach(ImportResource.PATH, ImportResource.class); |
81 router.attach(CreateUserResource.PATH, CreateUserResource.class); | 70 router.attach(CreateUserResource.PATH, CreateUserResource.class); |
82 router.attach(ListUsersResource.PATH, ListUsersResource.class); | 71 router.attach(ListUsersResource.PATH, ListUsersResource.class); |
83 router.attach(UserResource.PATH, UserResource.class); | 72 router.attach(UserResource.PATH, UserResource.class); |
84 router.attach(FindUserResource.PATH, FindUserResource.class); | 73 router.attach(FindUserResource.PATH, FindUserResource.class); |
85 router.attach( | 74 router.attach(CreateCollectionResource.PATH, CreateCollectionResource.class); |
86 CreateCollectionResource.PATH, CreateCollectionResource.class); | 75 router.attach(ListCollectionsResource.PATH, ListCollectionsResource.class); |
87 router.attach( | 76 router.attach(CollectionResource.PATH, CollectionResource.class); |
88 ListCollectionsResource.PATH, ListCollectionsResource.class); | 77 router.attach(CollectionOutResource.PATH, CollectionOutResource.class); |
89 router.attach( | 78 |
90 CollectionResource.PATH, CollectionResource.class); | 79 /* register any additional services */ |
91 router.attach( | 80 final Map<String, Class<?>> restServices = this.database.getRestServices(); |
92 CollectionOutResource.PATH, CollectionOutResource.class); | 81 for (final Entry<String, Class<?>> entry : restServices.entrySet()) |
82 router.attach(entry.getKey(), entry.getValue()); | |
93 | 83 |
94 return router; | 84 return router; |
95 } | 85 } |
96 } | 86 } |
97 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |