1   package org.daisy.pipeline.css.impl;
2   
3   import javax.xml.transform.URIResolver;
4   
5   import org.daisy.pipeline.css.UserAgentStylesheetRegistry;
6   import org.daisy.pipeline.datatypes.DatatypeRegistry;
7   import org.daisy.pipeline.webservice.restlet.WebServiceExtension;
8   
9   import org.restlet.routing.Router;
10  
11  import org.osgi.service.component.annotations.Component;
12  import org.osgi.service.component.annotations.Reference;
13  import org.osgi.service.component.annotations.ReferenceCardinality;
14  import org.osgi.service.component.annotations.ReferencePolicy;
15  
16  @Component(
17  	name = "stylesheet-parameters-service-extension",
18  	service = { WebServiceExtension.class }
19  )
20  public class StylesheetParametersWebServiceExtension implements WebServiceExtension {
21  
22  	static final String STYLESHEET_PARAMETERS_ROUTE = "/stylesheet-parameters";
23  
24  	private URIResolver uriResolver;
25  
26  	@Reference(
27  		name = "URIResolver",
28  		unbind = "-",
29  		service = URIResolver.class,
30  		cardinality = ReferenceCardinality.MANDATORY,
31  		policy = ReferencePolicy.STATIC
32  	)
33  	protected void setURIResolver(URIResolver resolver) {
34  		uriResolver = resolver;
35  	}
36  
37  	private DatatypeRegistry datatypeRegistry;
38  
39  	@Reference(
40  		name = "DatatypeRegistry",
41  		unbind = "-",
42  		service = DatatypeRegistry.class,
43  		cardinality = ReferenceCardinality.MANDATORY,
44  		policy = ReferencePolicy.STATIC
45  	)
46  	protected void setDatatypeRegistry(DatatypeRegistry registry) {
47  		datatypeRegistry = registry;
48  	}
49  
50  	private UserAgentStylesheetRegistry userAgentStylesheetRegistry;
51  
52  	@Reference(
53  		name = "UserAgentStylesheetRegistry",
54  		unbind = "-",
55  		service = UserAgentStylesheetRegistry.class,
56  		cardinality = ReferenceCardinality.MANDATORY,
57  		policy = ReferencePolicy.STATIC
58  	)
59  	protected void setUserAgentStylesheetRegistry(UserAgentStylesheetRegistry registry) {
60  		userAgentStylesheetRegistry = registry;
61  	}
62  
63  	public void attachTo(Router router) {
64  		router.getContext().getAttributes().put(StylesheetParametersResource.URI_RESOLVER_KEY, uriResolver);
65  		router.getContext().getAttributes().put(StylesheetParametersResource.DATATYPE_REGISTRY_KEY, datatypeRegistry);
66  		router.getContext().getAttributes().put(StylesheetParametersResource.USER_AGENT_STYLESHEET_REGISTRY_KEY, userAgentStylesheetRegistry);
67  		router.attach(STYLESHEET_PARAMETERS_ROUTE, StylesheetParametersResource.class);
68  	}
69  }