1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package dev.metaschema.schemagen.xml.impl;
7   
8   import org.codehaus.stax2.XMLStreamLocation2;
9   import org.codehaus.stax2.XMLStreamReader2;
10  import org.codehaus.stax2.XMLStreamWriter2;
11  import org.codehaus.stax2.validation.ValidationProblemHandler;
12  import org.codehaus.stax2.validation.XMLValidationSchema;
13  import org.codehaus.stax2.validation.XMLValidator;
14  
15  import java.math.BigDecimal;
16  import java.math.BigInteger;
17  
18  import javax.xml.stream.XMLStreamException;
19  
20  import edu.umd.cs.findbugs.annotations.NonNull;
21  
22  /**
23   * An XMLStreamWriter2 wrapper that adds indentation to the output.
24   * <p>
25   * This wrapper extends {@link IndentingXMLStreamWriter} and implements
26   * {@link XMLStreamWriter2} by delegating the Stax2-specific methods to the
27   * underlying writer.
28   */
29  public class IndentingXMLStreamWriter2
30      extends IndentingXMLStreamWriter
31      implements XMLStreamWriter2 {
32  
33    @NonNull
34    private final XMLStreamWriter2 delegate2;
35  
36    /**
37     * Constructs a new indenting XML stream writer for XMLStreamWriter2.
38     *
39     * @param delegate
40     *          the underlying XMLStreamWriter2 to delegate to
41     */
42    public IndentingXMLStreamWriter2(@NonNull XMLStreamWriter2 delegate) {
43      super(delegate);
44      this.delegate2 = delegate;
45    }
46  
47    /**
48     * Gets the underlying XMLStreamWriter2.
49     *
50     * @return the delegate writer
51     */
52    protected XMLStreamWriter2 getDelegate2() {
53      return delegate2;
54    }
55  
56    // ============================================================
57    // XMLStreamWriter2-specific methods - delegate to underlying writer
58    // ============================================================
59  
60    /**
61     * {@inheritDoc}
62     */
63    @Override
64    public boolean isPropertySupported(String name) {
65      return delegate2.isPropertySupported(name);
66    }
67  
68    /**
69     * {@inheritDoc}
70     */
71    @Override
72    public boolean setProperty(String name, Object value) {
73      return delegate2.setProperty(name, value);
74    }
75  
76    /**
77     * {@inheritDoc}
78     */
79    @Override
80    public XMLStreamLocation2 getLocation() {
81      return delegate2.getLocation();
82    }
83  
84    /**
85     * {@inheritDoc}
86     */
87    @Override
88    public String getEncoding() {
89      return delegate2.getEncoding();
90    }
91  
92    /**
93     * {@inheritDoc}
94     */
95    @Override
96    public void writeSpace(String text) throws XMLStreamException {
97      delegate2.writeSpace(text);
98    }
99  
100   /**
101    * {@inheritDoc}
102    */
103   @Override
104   public void writeSpace(char[] text, int offset, int length) throws XMLStreamException {
105     delegate2.writeSpace(text, offset, length);
106   }
107 
108   /**
109    * {@inheritDoc}
110    */
111   @Override
112   public void writeRaw(String text) throws XMLStreamException {
113     delegate2.writeRaw(text);
114   }
115 
116   /**
117    * {@inheritDoc}
118    */
119   @Override
120   public void writeRaw(String text, int offset, int length) throws XMLStreamException {
121     delegate2.writeRaw(text, offset, length);
122   }
123 
124   /**
125    * {@inheritDoc}
126    */
127   @Override
128   public void writeRaw(char[] text, int offset, int length) throws XMLStreamException {
129     delegate2.writeRaw(text, offset, length);
130   }
131 
132   /**
133    * {@inheritDoc}
134    */
135   @Override
136   public void copyEventFromReader(XMLStreamReader2 reader, boolean preserveEventData) throws XMLStreamException {
137     delegate2.copyEventFromReader(reader, preserveEventData);
138   }
139 
140   /**
141    * {@inheritDoc}
142    */
143   @Override
144   public void closeCompletely() throws XMLStreamException {
145     delegate2.closeCompletely();
146   }
147 
148   /**
149    * {@inheritDoc}
150    */
151   @Override
152   public void writeDTD(String rootName, String systemId, String publicId, String internalSubset)
153       throws XMLStreamException {
154     delegate2.writeDTD(rootName, systemId, publicId, internalSubset);
155   }
156 
157   /**
158    * {@inheritDoc}
159    */
160   @Override
161   public void writeFullEndElement() throws XMLStreamException {
162     delegate2.writeFullEndElement();
163   }
164 
165   /**
166    * {@inheritDoc}
167    */
168   @Override
169   public void writeStartDocument(String version, String encoding, boolean standAlone) throws XMLStreamException {
170     delegate2.writeStartDocument(version, encoding, standAlone);
171   }
172 
173   /**
174    * {@inheritDoc}
175    */
176   @Override
177   public void writeCData(char[] text, int start, int len) throws XMLStreamException {
178     delegate2.writeCData(text, start, len);
179   }
180 
181   // ============================================================
182   // TypedXMLStreamWriter methods - delegate to underlying writer
183   // ============================================================
184 
185   /**
186    * {@inheritDoc}
187    */
188   @Override
189   public void writeBoolean(boolean value) throws XMLStreamException {
190     delegate2.writeBoolean(value);
191   }
192 
193   /**
194    * {@inheritDoc}
195    */
196   @Override
197   public void writeInt(int value) throws XMLStreamException {
198     delegate2.writeInt(value);
199   }
200 
201   /**
202    * {@inheritDoc}
203    */
204   @Override
205   public void writeLong(long value) throws XMLStreamException {
206     delegate2.writeLong(value);
207   }
208 
209   /**
210    * {@inheritDoc}
211    */
212   @Override
213   public void writeFloat(float value) throws XMLStreamException {
214     delegate2.writeFloat(value);
215   }
216 
217   /**
218    * {@inheritDoc}
219    */
220   @Override
221   public void writeDouble(double value) throws XMLStreamException {
222     delegate2.writeDouble(value);
223   }
224 
225   /**
226    * {@inheritDoc}
227    */
228   @Override
229   public void writeInteger(BigInteger value) throws XMLStreamException {
230     delegate2.writeInteger(value);
231   }
232 
233   /**
234    * {@inheritDoc}
235    */
236   @Override
237   public void writeDecimal(BigDecimal value) throws XMLStreamException {
238     delegate2.writeDecimal(value);
239   }
240 
241   /**
242    * {@inheritDoc}
243    */
244   @Override
245   public void writeQName(javax.xml.namespace.QName name) throws XMLStreamException {
246     delegate2.writeQName(name);
247   }
248 
249   /**
250    * {@inheritDoc}
251    */
252   @Override
253   public void writeBinary(byte[] value, int from, int length) throws XMLStreamException {
254     delegate2.writeBinary(value, from, length);
255   }
256 
257   /**
258    * {@inheritDoc}
259    */
260   @Override
261   public void writeBinary(org.codehaus.stax2.typed.Base64Variant variant, byte[] value, int from, int length)
262       throws XMLStreamException {
263     delegate2.writeBinary(variant, value, from, length);
264   }
265 
266   /**
267    * {@inheritDoc}
268    */
269   @Override
270   public void writeIntArray(int[] value, int from, int length) throws XMLStreamException {
271     delegate2.writeIntArray(value, from, length);
272   }
273 
274   /**
275    * {@inheritDoc}
276    */
277   @Override
278   public void writeLongArray(long[] value, int from, int length) throws XMLStreamException {
279     delegate2.writeLongArray(value, from, length);
280   }
281 
282   /**
283    * {@inheritDoc}
284    */
285   @Override
286   public void writeFloatArray(float[] value, int from, int length) throws XMLStreamException {
287     delegate2.writeFloatArray(value, from, length);
288   }
289 
290   /**
291    * {@inheritDoc}
292    */
293   @Override
294   public void writeDoubleArray(double[] value, int from, int length) throws XMLStreamException {
295     delegate2.writeDoubleArray(value, from, length);
296   }
297 
298   /**
299    * {@inheritDoc}
300    */
301   @Override
302   public void writeBooleanAttribute(String prefix, String namespaceURI, String localName, boolean value)
303       throws XMLStreamException {
304     delegate2.writeBooleanAttribute(prefix, namespaceURI, localName, value);
305   }
306 
307   /**
308    * {@inheritDoc}
309    */
310   @Override
311   public void writeIntAttribute(String prefix, String namespaceURI, String localName, int value)
312       throws XMLStreamException {
313     delegate2.writeIntAttribute(prefix, namespaceURI, localName, value);
314   }
315 
316   /**
317    * {@inheritDoc}
318    */
319   @Override
320   public void writeLongAttribute(String prefix, String namespaceURI, String localName, long value)
321       throws XMLStreamException {
322     delegate2.writeLongAttribute(prefix, namespaceURI, localName, value);
323   }
324 
325   /**
326    * {@inheritDoc}
327    */
328   @Override
329   public void writeFloatAttribute(String prefix, String namespaceURI, String localName, float value)
330       throws XMLStreamException {
331     delegate2.writeFloatAttribute(prefix, namespaceURI, localName, value);
332   }
333 
334   /**
335    * {@inheritDoc}
336    */
337   @Override
338   public void writeDoubleAttribute(String prefix, String namespaceURI, String localName, double value)
339       throws XMLStreamException {
340     delegate2.writeDoubleAttribute(prefix, namespaceURI, localName, value);
341   }
342 
343   /**
344    * {@inheritDoc}
345    */
346   @Override
347   public void writeIntegerAttribute(String prefix, String namespaceURI, String localName, BigInteger value)
348       throws XMLStreamException {
349     delegate2.writeIntegerAttribute(prefix, namespaceURI, localName, value);
350   }
351 
352   /**
353    * {@inheritDoc}
354    */
355   @Override
356   public void writeDecimalAttribute(String prefix, String namespaceURI, String localName, BigDecimal value)
357       throws XMLStreamException {
358     delegate2.writeDecimalAttribute(prefix, namespaceURI, localName, value);
359   }
360 
361   /**
362    * {@inheritDoc}
363    */
364   @Override
365   public void writeQNameAttribute(String prefix, String namespaceURI, String localName, javax.xml.namespace.QName name)
366       throws XMLStreamException {
367     delegate2.writeQNameAttribute(prefix, namespaceURI, localName, name);
368   }
369 
370   /**
371    * {@inheritDoc}
372    */
373   @Override
374   public void writeBinaryAttribute(String prefix, String namespaceURI, String localName, byte[] value)
375       throws XMLStreamException {
376     delegate2.writeBinaryAttribute(prefix, namespaceURI, localName, value);
377   }
378 
379   /**
380    * {@inheritDoc}
381    */
382   @Override
383   public void writeBinaryAttribute(org.codehaus.stax2.typed.Base64Variant variant, String prefix, String namespaceURI,
384       String localName, byte[] value) throws XMLStreamException {
385     delegate2.writeBinaryAttribute(variant, prefix, namespaceURI, localName, value);
386   }
387 
388   /**
389    * {@inheritDoc}
390    */
391   @Override
392   public void writeIntArrayAttribute(String prefix, String namespaceURI, String localName, int[] value)
393       throws XMLStreamException {
394     delegate2.writeIntArrayAttribute(prefix, namespaceURI, localName, value);
395   }
396 
397   /**
398    * {@inheritDoc}
399    */
400   @Override
401   public void writeLongArrayAttribute(String prefix, String namespaceURI, String localName, long[] value)
402       throws XMLStreamException {
403     delegate2.writeLongArrayAttribute(prefix, namespaceURI, localName, value);
404   }
405 
406   /**
407    * {@inheritDoc}
408    */
409   @Override
410   public void writeFloatArrayAttribute(String prefix, String namespaceURI, String localName, float[] value)
411       throws XMLStreamException {
412     delegate2.writeFloatArrayAttribute(prefix, namespaceURI, localName, value);
413   }
414 
415   /**
416    * {@inheritDoc}
417    */
418   @Override
419   public void writeDoubleArrayAttribute(String prefix, String namespaceURI, String localName, double[] value)
420       throws XMLStreamException {
421     delegate2.writeDoubleArrayAttribute(prefix, namespaceURI, localName, value);
422   }
423 
424   // ============================================================
425   // Validatable methods - delegate to underlying writer
426   // ============================================================
427 
428   /**
429    * {@inheritDoc}
430    */
431   @Override
432   public XMLValidator validateAgainst(XMLValidationSchema schema) throws XMLStreamException {
433     return delegate2.validateAgainst(schema);
434   }
435 
436   /**
437    * {@inheritDoc}
438    */
439   @Override
440   public XMLValidator stopValidatingAgainst(XMLValidationSchema schema) throws XMLStreamException {
441     return delegate2.stopValidatingAgainst(schema);
442   }
443 
444   /**
445    * {@inheritDoc}
446    */
447   @Override
448   public XMLValidator stopValidatingAgainst(XMLValidator validator) throws XMLStreamException {
449     return delegate2.stopValidatingAgainst(validator);
450   }
451 
452   /**
453    * {@inheritDoc}
454    */
455   @Override
456   public ValidationProblemHandler setValidationProblemHandler(ValidationProblemHandler handler) {
457     return delegate2.setValidationProblemHandler(handler);
458   }
459 }