001// ***************************************************************************************************************************
002// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
003// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
004// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
005// * with the License.  You may obtain a copy of the License at                                                              *
006// *                                                                                                                         *
007// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
008// *                                                                                                                         *
009// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
010// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
011// * specific language governing permissions and limitations under the License.                                              *
012// ***************************************************************************************************************************
013package org.apache.juneau.parser;
014
015import static org.apache.juneau.parser.ReaderParser.*;
016
017import java.nio.charset.*;
018import java.util.*;
019
020import org.apache.juneau.*;
021import org.apache.juneau.http.*;
022
023/**
024 * Base builder class for building instances of reader-based parsers.
025 */
026public abstract class ReaderParserBuilder extends ParserBuilder {
027
028   /**
029    * Constructor, default settings.
030    */
031   public ReaderParserBuilder() {
032      super();
033   }
034
035   /**
036    * Constructor.
037    *
038    * @param ps The initial configuration settings for this builder.
039    */
040   public ReaderParserBuilder(PropertyStore ps) {
041      super(ps);
042   }
043
044
045   //-----------------------------------------------------------------------------------------------------------------
046   // Properties
047   //-----------------------------------------------------------------------------------------------------------------
048
049   /**
050    * Configuration property:  File charset.
051    *
052    * <p>
053    * The character set to use for reading <code>Files</code> from the file system.
054    *
055    * <h5 class='section'>See Also:</h5>
056    * <ul>
057    *    <li class='jf'>{@link ReaderParser#RPARSER_fileCharset}
058    * </ul>
059    *
060    * @param value
061    *    The new value for this property.
062    *    <br>The default value is <js>"DEFAULT"</js> which causes the system default to be used.
063    * @return This object (for method chaining).
064    */
065   public ReaderParserBuilder fileCharset(String value) {
066      return set(RPARSER_fileCharset, value);
067   }
068
069   /**
070    * Configuration property:  File charset.
071    *
072    * <p>
073    * The character set to use for reading <code>Files</code> from the file system.
074    *
075    * <h5 class='section'>See Also:</h5>
076    * <ul>
077    *    <li class='jf'>{@link ReaderParser#RPARSER_fileCharset}
078    * </ul>
079    *
080    * @param value
081    *    The new value for this property.
082    *    <br>The default value is <js>"DEFAULT"</js> which causes the system default to be used.
083    * @return This object (for method chaining).
084    */
085   public ReaderParserBuilder fileCharset(Charset value) {
086      return set(RPARSER_fileCharset, value);
087   }
088
089   /**
090    * Configuration property:  Input stream charset.
091    *
092    * <p>
093    * The character set to use for converting <code>InputStreams</code> and byte arrays to readers.
094    *
095    * <h5 class='section'>See Also:</h5>
096    * <ul>
097    *    <li class='jf'>{@link ReaderParser#RPARSER_inputStreamCharset}
098    * </ul>
099    *
100    * @param value
101    *    The new value for this property.
102    *    <br>The default value is <js>"UTF-8"</js>.
103    * @return This object (for method chaining).
104    */
105   public ReaderParserBuilder inputStreamCharset(String value) {
106      return set(RPARSER_inputStreamCharset, value);
107   }
108
109   /**
110    * Configuration property:  Input stream charset.
111    *
112    * <p>
113    * The character set to use for converting <code>InputStreams</code> and byte arrays to readers.
114    *
115    * <h5 class='section'>See Also:</h5>
116    * <ul>
117    *    <li class='jf'>{@link ReaderParser#RPARSER_inputStreamCharset}
118    * </ul>
119    *
120    * @param value
121    *    The new value for this property.
122    *    <br>The default value is <js>"UTF-8"</js>.
123    * @return This object (for method chaining).
124    */
125   public ReaderParserBuilder inputStreamCharset(Charset value) {
126      return set(RPARSER_inputStreamCharset, value);
127   }
128
129   @Override /* ParserBuilder */
130   public ReaderParserBuilder autoCloseStreams(boolean value) {
131      super.autoCloseStreams(value);
132      return this;
133   }
134
135   @Override /* ParserBuilder */
136   public ReaderParserBuilder autoCloseStreams() {
137      super.autoCloseStreams();
138      return this;
139   }
140
141   @Override /* ParserBuilder */
142   public ReaderParserBuilder debugOutputLines(int value) {
143      super.debugOutputLines(value);
144      return this;
145   }
146
147   @Override /* ParserBuilder */
148   public ReaderParserBuilder listener(Class<? extends ParserListener> value) {
149      super.listener(value);
150      return this;
151   }
152
153   @Override /* ParserBuilder */
154   public ReaderParserBuilder strict(boolean value) {
155      super.strict(value);
156      return this;
157   }
158
159   @Override /* ParserBuilder */
160   public ReaderParserBuilder strict() {
161      super.strict();
162      return this;
163   }
164
165   @Override /* ParserBuilder */
166   public ReaderParserBuilder trimStrings(boolean value) {
167      super.trimStrings(value);
168      return this;
169   }
170
171   @Override /* ParserBuilder */
172   public ReaderParserBuilder trimStrings() {
173      super.trimStrings();
174      return this;
175   }
176
177   @Override /* ParserBuilder */
178   public ReaderParserBuilder unbuffered(boolean value) {
179      super.unbuffered(value);
180      return this;
181   }
182
183   @Override /* ParserBuilder */
184   public ReaderParserBuilder unbuffered() {
185      super.unbuffered();
186      return this;
187   }
188
189   @Override /* BeanContextBuilder */
190   public ReaderParserBuilder beanClassVisibility(Visibility value) {
191      super.beanClassVisibility(value);
192      return this;
193   }
194
195   @Override /* BeanContextBuilder */
196   public ReaderParserBuilder beanConstructorVisibility(Visibility value) {
197      super.beanConstructorVisibility(value);
198      return this;
199   }
200
201   @Override /* BeanContextBuilder */
202   public ReaderParserBuilder beanDictionary(boolean append, Object...values) {
203      super.beanDictionary(append, values);
204      return this;
205   }
206
207   @Override /* BeanContextBuilder */
208   public ReaderParserBuilder beanDictionary(Class<?>...values) {
209      super.beanDictionary(values);
210      return this;
211   }
212
213   @Override /* BeanContextBuilder */
214   public ReaderParserBuilder beanDictionary(Object...values) {
215      super.beanDictionary(values);
216      return this;
217   }
218
219   @Override /* BeanContextBuilder */
220   public ReaderParserBuilder beanDictionaryRemove(Object...values) {
221      super.beanDictionaryRemove(values);
222      return this;
223   }
224
225   @Override /* BeanContextBuilder */
226   public ReaderParserBuilder beanFieldVisibility(Visibility value) {
227      super.beanFieldVisibility(value);
228      return this;
229   }
230
231   @Override /* BeanContextBuilder */
232   public ReaderParserBuilder beanFilters(boolean append, Object...values) {
233      super.beanFilters(append, values);
234      return this;
235   }
236
237   @Override /* BeanContextBuilder */
238   public ReaderParserBuilder beanFilters(Class<?>...values) {
239      super.beanFilters(values);
240      return this;
241   }
242
243   @Override /* BeanContextBuilder */
244   public ReaderParserBuilder beanFilters(Object...values) {
245      super.beanFilters(values);
246      return this;
247   }
248
249   @Override /* BeanContextBuilder */
250   public ReaderParserBuilder beanFiltersRemove(Object...values) {
251      super.beanFiltersRemove(values);
252      return this;
253   }
254
255   @Override /* BeanContextBuilder */
256   public ReaderParserBuilder beanMapPutReturnsOldValue(boolean value) {
257      super.beanMapPutReturnsOldValue(value);
258      return this;
259   }
260
261   @Override /* BeanContextBuilder */
262   public ReaderParserBuilder beanMapPutReturnsOldValue() {
263      super.beanMapPutReturnsOldValue();
264      return this;
265   }
266
267   @Override /* BeanContextBuilder */
268   public ReaderParserBuilder beanMethodVisibility(Visibility value) {
269      super.beanMethodVisibility(value);
270      return this;
271   }
272
273   @Override /* BeanContextBuilder */
274   public ReaderParserBuilder beansRequireDefaultConstructor(boolean value) {
275      super.beansRequireDefaultConstructor(value);
276      return this;
277   }
278
279   @Override /* BeanContextBuilder */
280   public ReaderParserBuilder beansRequireDefaultConstructor() {
281      super.beansRequireDefaultConstructor();
282      return this;
283   }
284
285   @Override /* BeanContextBuilder */
286   public ReaderParserBuilder beansRequireSerializable(boolean value) {
287      super.beansRequireSerializable(value);
288      return this;
289   }
290
291   @Override /* BeanContextBuilder */
292   public ReaderParserBuilder beansRequireSerializable() {
293      super.beansRequireSerializable();
294      return this;
295   }
296
297   @Override /* BeanContextBuilder */
298   public ReaderParserBuilder beansRequireSettersForGetters(boolean value) {
299      super.beansRequireSettersForGetters(value);
300      return this;
301   }
302
303   @Override /* BeanContextBuilder */
304   public ReaderParserBuilder beansRequireSettersForGetters() {
305      super.beansRequireSettersForGetters();
306      return this;
307   }
308
309   @Override /* BeanContextBuilder */
310   public ReaderParserBuilder beansRequireSomeProperties(boolean value) {
311      super.beansRequireSomeProperties(value);
312      return this;
313   }
314
315   @Override /* BeanContextBuilder */
316   public ReaderParserBuilder beanTypePropertyName(String value) {
317      super.beanTypePropertyName(value);
318      return this;
319   }
320
321   @Override /* BeanContextBuilder */
322   public ReaderParserBuilder debug() {
323      super.debug();
324      return this;
325   }
326
327   @Override /* BeanContextBuilder */
328   public <T> ReaderParserBuilder example(Class<T> c, T o) {
329      super.example(c, o);
330      return this;
331   }
332
333   @Override /* BeanContextBuilder */
334   public ReaderParserBuilder ignoreInvocationExceptionsOnGetters(boolean value) {
335      super.ignoreInvocationExceptionsOnGetters(value);
336      return this;
337   }
338
339   @Override /* BeanContextBuilder */
340   public ReaderParserBuilder ignoreInvocationExceptionsOnGetters() {
341      super.ignoreInvocationExceptionsOnGetters();
342      return this;
343   }
344
345   @Override /* BeanContextBuilder */
346   public ReaderParserBuilder ignoreInvocationExceptionsOnSetters(boolean value) {
347      super.ignoreInvocationExceptionsOnSetters(value);
348      return this;
349   }
350
351   @Override /* BeanContextBuilder */
352   public ReaderParserBuilder ignoreInvocationExceptionsOnSetters() {
353      super.ignoreInvocationExceptionsOnSetters();
354      return this;
355   }
356
357   @Override /* BeanContextBuilder */
358   public ReaderParserBuilder ignorePropertiesWithoutSetters(boolean value) {
359      super.ignorePropertiesWithoutSetters(value);
360      return this;
361   }
362
363   @Override /* BeanContextBuilder */
364   public ReaderParserBuilder ignoreUnknownBeanProperties(boolean value) {
365      super.ignoreUnknownBeanProperties(value);
366      return this;
367   }
368
369   @Override /* BeanContextBuilder */
370   public ReaderParserBuilder ignoreUnknownBeanProperties() {
371      super.ignoreUnknownBeanProperties();
372      return this;
373   }
374
375   @Override /* BeanContextBuilder */
376   public ReaderParserBuilder ignoreUnknownNullBeanProperties(boolean value) {
377      super.ignoreUnknownNullBeanProperties(value);
378      return this;
379   }
380
381   @Override /* BeanContextBuilder */
382   public <T> ReaderParserBuilder implClass(Class<T> interfaceClass, Class<? extends T> implClass) {
383      super.implClass(interfaceClass, implClass);
384      return this;
385   }
386
387   @Override /* BeanContextBuilder */
388   public ReaderParserBuilder implClasses(Map<String,Class<?>> values) {
389      super.implClasses(values);
390      return this;
391   }
392
393   @Override /* BeanContextBuilder */
394   public ReaderParserBuilder locale(Locale value) {
395      super.locale(value);
396      return this;
397   }
398
399   @Override /* BeanContextBuilder */
400   public ReaderParserBuilder mediaType(MediaType value) {
401      super.mediaType(value);
402      return this;
403   }
404
405   @Override /* BeanContextBuilder */
406   public ReaderParserBuilder notBeanClasses(boolean append, Object...values) {
407      super.notBeanClasses(append, values);
408      return this;
409   }
410
411   @Override /* BeanContextBuilder */
412   public ReaderParserBuilder notBeanClasses(Class<?>...values) {
413      super.notBeanClasses(values);
414      return this;
415   }
416
417   @Override /* BeanContextBuilder */
418   public ReaderParserBuilder notBeanClasses(Object...values) {
419      super.notBeanClasses(values);
420      return this;
421   }
422
423   @Override /* BeanContextBuilder */
424   public ReaderParserBuilder notBeanClassesRemove(Object...values) {
425      super.notBeanClassesRemove(values);
426      return this;
427   }
428
429   @Override /* BeanContextBuilder */
430   public ReaderParserBuilder notBeanPackages(boolean append, Object...values) {
431      super.notBeanPackages(append, values);
432      return this;
433   }
434
435   @Override /* BeanContextBuilder */
436   public ReaderParserBuilder notBeanPackages(Object...values) {
437      super.notBeanPackages(values);
438      return this;
439   }
440
441   @Override /* BeanContextBuilder */
442   public ReaderParserBuilder notBeanPackages(String...values) {
443      super.notBeanPackages(values);
444      return this;
445   }
446
447   @Override /* BeanContextBuilder */
448   public ReaderParserBuilder notBeanPackagesRemove(Object...values) {
449      super.notBeanPackagesRemove(values);
450      return this;
451   }
452
453   @Override /* BeanContextBuilder */
454   public ReaderParserBuilder pojoSwaps(boolean append, Object...values) {
455      super.pojoSwaps(append, values);
456      return this;
457   }
458
459   @Override /* BeanContextBuilder */
460   public ReaderParserBuilder pojoSwaps(Class<?>...values) {
461      super.pojoSwaps(values);
462      return this;
463   }
464
465   @Override /* BeanContextBuilder */
466   public ReaderParserBuilder pojoSwaps(Object...values) {
467      super.pojoSwaps(values);
468      return this;
469   }
470
471   @Override /* BeanContextBuilder */
472   public ReaderParserBuilder pojoSwapsRemove(Object...values) {
473      super.pojoSwapsRemove(values);
474      return this;
475   }
476
477   @Override /* BeanContextBuilder */
478   public ReaderParserBuilder sortProperties(boolean value) {
479      super.sortProperties(value);
480      return this;
481   }
482
483   @Override /* BeanContextBuilder */
484   public ReaderParserBuilder sortProperties() {
485      super.sortProperties();
486      return this;
487   }
488
489   @Override /* BeanContextBuilder */
490   public ReaderParserBuilder timeZone(TimeZone value) {
491      super.timeZone(value);
492      return this;
493   }
494
495   @Override /* BeanContextBuilder */
496   public ReaderParserBuilder useEnumNames() {
497      super.useEnumNames();
498      return this;
499   }
500
501   @Override /* BeanContextBuilder */
502   public ReaderParserBuilder useInterfaceProxies(boolean value) {
503      super.useInterfaceProxies(value);
504      return this;
505   }
506
507   @Override /* BeanContextBuilder */
508   public ReaderParserBuilder useJavaBeanIntrospector(boolean value) {
509      super.useJavaBeanIntrospector(value);
510      return this;
511   }
512
513   @Override /* BeanContextBuilder */
514   public ReaderParserBuilder useJavaBeanIntrospector() {
515      super.useJavaBeanIntrospector();
516      return this;
517   }
518
519   @Override /* ContextBuilder */
520   public ReaderParserBuilder set(String name, Object value) {
521      super.set(name, value);
522      return this;
523   }
524
525   @Override /* ContextBuilder */
526   public ReaderParserBuilder set(boolean append, String name, Object value) {
527      super.set(append, name, value);
528      return this;
529   }
530
531   @Override /* ContextBuilder */
532   public ReaderParserBuilder set(Map<String,Object> properties) {
533      super.set(properties);
534      return this;
535   }
536
537   @Override /* ContextBuilder */
538   public ReaderParserBuilder add(Map<String,Object> properties) {
539      super.add(properties);
540      return this;
541   }
542
543   @Override /* ContextBuilder */
544   public ReaderParserBuilder addTo(String name, Object value) {
545      super.addTo(name, value);
546      return this;
547   }
548
549   @Override /* ContextBuilder */
550   public ReaderParserBuilder addTo(String name, String key, Object value) {
551      super.addTo(name, key, value);
552      return this;
553   }
554
555   @Override /* ContextBuilder */
556   public ReaderParserBuilder removeFrom(String name, Object value) {
557      super.removeFrom(name, value);
558      return this;
559   }
560
561   @Override /* ContextBuilder */
562   public ReaderParserBuilder apply(PropertyStore copyFrom) {
563      super.apply(copyFrom);
564      return this;
565   }
566}