01: package net.sf.saxon.pull;
02:
03: import javax.xml.transform.Source;
04:
05: /**
06: * A PullSource is a JAXP Source that encapsulates a PullProvider - that is, an object
07: * that supplies an XML document as a sequence of events that are read under the control
08: * of the recipient. Note that although PullSource implements the JAXP Source interface,
09: * it is not necessarily acceptable to every JAXP implementation that accepts a Source
10: * as input: Source is essentially a marker interface and users of Source objects need
11: * to understand the individual implementation.
12: */
13:
14: public class PullSource implements Source {
15:
16: private String systemId;
17: private PullProvider provider;
18:
19: /**
20: * Create a PullSource based on a supplied PullProvider
21: */
22:
23: public PullSource(PullProvider provider) {
24: this .provider = provider;
25: if (provider.getSourceLocator() != null) {
26: systemId = provider.getSourceLocator().getSystemId();
27: }
28: }
29:
30: /**
31: * Get the PullProvider
32: */
33:
34: public PullProvider getPullProvider() {
35: return provider;
36: }
37:
38: /**
39: * Set the system identifier for this Source.
40: * <p/>
41: * <p>The system identifier is optional if the source does not
42: * get its data from a URL, but it may still be useful to provide one.
43: * The application can use a system identifier, for example, to resolve
44: * relative URIs and to include in error messages and warnings.</p>
45: *
46: * @param systemId The system identifier as a URL string.
47: */
48: public void setSystemId(String systemId) {
49: this .systemId = systemId;
50: }
51:
52: /**
53: * Get the system identifier that was set with setSystemId.
54: *
55: * @return The system identifier that was set with setSystemId, or null
56: * if setSystemId was not called.
57: */
58: public String getSystemId() {
59: return systemId;
60: }
61: }
|