View difference between Paste ID: wHYH1ci8 and gqc2dbFS
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
}