1   package org.daisy.pipeline.nlp.calabash.impl;
2   
3   import java.util.Map;
4   
5   import org.daisy.common.xproc.calabash.XProcStep;
6   import org.daisy.common.xproc.calabash.XProcStepProvider;
7   import org.daisy.common.xproc.XProcMonitor;
8   import org.daisy.pipeline.nlp.lexing.LexServiceRegistry;
9   
10  import com.xmlcalabash.core.XProcRuntime;
11  import com.xmlcalabash.runtime.XAtomicStep;
12  
13  import org.osgi.service.component.annotations.Component;
14  import org.osgi.service.component.annotations.Reference;
15  import org.osgi.service.component.annotations.ReferenceCardinality;
16  import org.osgi.service.component.annotations.ReferencePolicy;
17  
18  /**
19   * OSGi component that provides an XProcStep on the top of LexServices satisfied
20   * by OSGi services.
21   */
22  @Component(
23  	name = "break-detector",
24  	service = { XProcStepProvider.class },
25  	property = { "type:String={http://www.daisy.org/ns/pipeline/xproc}break-detect" }
26  )
27  public class BreakDetectProvider implements XProcStepProvider {
28  
29  	private LexServiceRegistry mRegistry = null;
30  
31  	@Reference(
32  		name = "LexServiceRegistry",
33  		unbind = "-",
34  		service = LexServiceRegistry.class,
35  		cardinality = ReferenceCardinality.MANDATORY,
36  		policy = ReferencePolicy.STATIC
37  	)
38  	public void setLexServiceRegistry(LexServiceRegistry r) {
39  		mRegistry = r;
40  	}
41  
42  	public void unsetLexServiceRegistry(LexServiceRegistry r) {
43  		mRegistry = null;
44  	}
45  
46  	@Override
47  	public XProcStep newStep(XProcRuntime runtime, XAtomicStep step, XProcMonitor monitor, Map<String,String> properties) {
48  		return new BreakDetectStep(runtime, step, mRegistry);
49  	}
50  }