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 }