SHOW:
|
|
- or go back to the newest paste.
1 | - | @Override |
1 | + | /* |
2 | - | public Restlet createInboundRoot(){ |
2 | + | * This is part of a response to a question in this Restlet discussion: |
3 | - | Router router = new Router(getContext()); |
3 | + | * http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=3078331 |
4 | - | router.attach("/", RootServerResource.class); |
4 | + | */ |
5 | - | router.attach("/apps", AppsServerResource.class); |
5 | + | package net.peierls.example.restlet.authrouting; |
6 | - | router.attach("/ifaces", IfacesServerResource.class); |
6 | + | |
7 | - | router.attach("/ifaces/{ifaceId}", IfaceServerResource.class); |
7 | + | import org.restlet.*; |
8 | - | |
8 | + | import org.restlet.data.*; |
9 | - | ChallengeAuthenticator authenticator = new ChallengeAuthenticator( |
9 | + | import org.restlet.routing.*; |
10 | - | getContext(), ChallengeScheme.HTTP_BASIC, "AndroPi"); |
10 | + | import org.restlet.resource.*; |
11 | - | |
11 | + | import org.restlet.security.*; |
12 | - | authenticator.setVerifier(verifier); |
12 | + | |
13 | - | |
13 | + | |
14 | - | Tracer tracer = new Tracer(getContext()); |
14 | + | public class AuthRoutingExample extends Application { |
15 | - | Router router2 = new Router(getContext()); |
15 | + | |
16 | - | router2.attach("/apps/{appId}/", AppServerResource.class); |
16 | + | Verifier verifier; |
17 | - | router2.attach("/apps/{appId}/rules", RulesServerResource.class); |
17 | + | |
18 | - | router2.attach("/apps/{appId}/rules/{ruleId}", RuleServerResource.class); |
18 | + | @Override |
19 | - | authenticator.setNext(tracer); |
19 | + | public Restlet createInboundRoot(){ |
20 | - | tracer.setNext(router2); |
20 | + | Router router = new Router(getContext()); |
21 | - | router.attach("/apps/{appId}", authenticator); |
21 | + | |
22 | - | |
22 | + | router.attach("/", RootServerResource.class); |
23 | - | return router; |
23 | + | |
24 | - | } |
24 | + | router.attach("/ifaces", IfacesServerResource.class); |
25 | router.attach("/ifaces/{ifaceId}", IfaceServerResource.class); | |
26 | ||
27 | router.attach("/apps", AppsServerResource.class); | |
28 | router.attach("/apps/{appId}/", authenticated(AppServerResource.class)); | |
29 | router.attach("/apps/{appId}/rules", authenticated(RulesServerResource.class)); | |
30 | router.attach("/apps/{appId}/rules/{ruleId}", authenticated(RuleServerResource.class)); | |
31 | ||
32 | return router; | |
33 | } | |
34 | ||
35 | /** | |
36 | * Wraps a resource with a Tracer, then wraps that with a ChallengeAuthenticator. | |
37 | */ | |
38 | private Restlet authenticated(Class<? extends ServerResource> targetClass) { | |
39 | Tracer tracer = new Tracer(getContext()); | |
40 | tracer.setNext(targetClass); | |
41 | ||
42 | ChallengeAuthenticator authenticator = new ChallengeAuthenticator( | |
43 | getContext(), ChallengeScheme.HTTP_BASIC, "AndroPi"); | |
44 | authenticator.setVerifier(verifier); | |
45 | authenticator.setNext(tracer); | |
46 | ||
47 | return authenticator; | |
48 | } | |
49 | ||
50 | static class RootServerResource extends ServerResource {} | |
51 | static class IfacesServerResource extends ServerResource {} | |
52 | static class IfaceServerResource extends ServerResource {} | |
53 | static class AppsServerResource extends ServerResource {} | |
54 | static class AppServerResource extends ServerResource {} | |
55 | static class RulesServerResource extends ServerResource {} | |
56 | static class RuleServerResource extends ServerResource {} | |
57 | static class Tracer extends Filter { | |
58 | Tracer(Context context) { super(context); } | |
59 | } | |
60 | } |