001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.juneau.html;
018
019import java.lang.annotation.*;
020import java.nio.charset.*;
021import java.util.*;
022
023import org.apache.juneau.*;
024import org.apache.juneau.internal.*;
025import org.apache.juneau.utils.*;
026import org.apache.juneau.xml.*;
027
028/**
029 * Serializes POJOs to HTTP responses as stripped HTML.
030 *
031 * <h5 class='topic'>Media types</h5>
032 *
033 * Handles <c>Accept</c> types:  <bc>text/html+stripped</bc>
034 * <p>
035 * Produces <c>Content-Type</c> types:  <bc>text/html</bc>
036 *
037 * <h5 class='topic'>Description</h5>
038 *
039 * Produces the same output as {@link HtmlDocSerializer}, but without the header and body tags and page title and
040 * description.
041 * Used primarily for JUnit testing the {@link HtmlDocSerializer} class.
042 *
043 * <h5 class='section'>Notes:</h5><ul>
044 *    <li class='note'>This class is thread safe and reusable.
045 * </ul>
046 *
047 * <h5 class='section'>See Also:</h5><ul>
048 *    <li class='link'><a class="doclink" href="https://juneau.apache.org/docs/topics/HtmlBasics">HTML Basics</a>
049
050 * </ul>
051 */
052public class HtmlStrippedDocSerializer extends HtmlSerializer {
053
054   //-------------------------------------------------------------------------------------------------------------------
055   // Static
056   //-------------------------------------------------------------------------------------------------------------------
057
058   /** Default serializer, all default settings. */
059   public static final HtmlStrippedDocSerializer DEFAULT = new HtmlStrippedDocSerializer(create());
060
061   /**
062    * Creates a new builder for this object.
063    *
064    * @return A new builder.
065    */
066   public static Builder create() {
067      return new Builder();
068   }
069
070   //-------------------------------------------------------------------------------------------------------------------
071   // Builder
072   //-------------------------------------------------------------------------------------------------------------------
073
074   /**
075    * Builder class.
076    */
077   public static class Builder extends HtmlSerializer.Builder {
078
079      private static final Cache<HashKey,HtmlStrippedDocSerializer> CACHE = Cache.of(HashKey.class, HtmlStrippedDocSerializer.class).build();
080
081      /**
082       * Constructor, default settings.
083       */
084      protected Builder() {
085         produces("text/html");
086         accept("text/html+stripped");
087      }
088
089      /**
090       * Copy constructor.
091       *
092       * @param copyFrom The bean to copy from.
093       */
094      protected Builder(HtmlStrippedDocSerializer copyFrom) {
095         super(copyFrom);
096      }
097
098      /**
099       * Copy constructor.
100       *
101       * @param copyFrom The builder to copy from.
102       */
103      protected Builder(Builder copyFrom) {
104         super(copyFrom);
105      }
106
107      @Override /* Context.Builder */
108      public Builder copy() {
109         return new Builder(this);
110      }
111
112      @Override /* Context.Builder */
113      public HtmlStrippedDocSerializer build() {
114         return cache(CACHE).build(HtmlStrippedDocSerializer.class);
115      }
116
117      @Override /* Context.Builder */
118      public HashKey hashKey() {
119         return super.hashKey();
120      }
121
122      //-----------------------------------------------------------------------------------------------------------------
123      // Properties
124      //-----------------------------------------------------------------------------------------------------------------
125      @Override /* Overridden from Builder */
126      public Builder annotations(Annotation...values) {
127         super.annotations(values);
128         return this;
129      }
130
131      @Override /* Overridden from Builder */
132      public Builder apply(AnnotationWorkList work) {
133         super.apply(work);
134         return this;
135      }
136
137      @Override /* Overridden from Builder */
138      public Builder applyAnnotations(Object...from) {
139         super.applyAnnotations(from);
140         return this;
141      }
142
143      @Override /* Overridden from Builder */
144      public Builder applyAnnotations(Class<?>...from) {
145         super.applyAnnotations(from);
146         return this;
147      }
148
149      @Override /* Overridden from Builder */
150      public Builder cache(Cache<HashKey,? extends org.apache.juneau.Context> value) {
151         super.cache(value);
152         return this;
153      }
154
155      @Override /* Overridden from Builder */
156      public Builder debug() {
157         super.debug();
158         return this;
159      }
160
161      @Override /* Overridden from Builder */
162      public Builder debug(boolean value) {
163         super.debug(value);
164         return this;
165      }
166
167      @Override /* Overridden from Builder */
168      public Builder impl(Context value) {
169         super.impl(value);
170         return this;
171      }
172
173      @Override /* Overridden from Builder */
174      public Builder type(Class<? extends org.apache.juneau.Context> value) {
175         super.type(value);
176         return this;
177      }
178
179      @Override /* Overridden from Builder */
180      public Builder beanClassVisibility(Visibility value) {
181         super.beanClassVisibility(value);
182         return this;
183      }
184
185      @Override /* Overridden from Builder */
186      public Builder beanConstructorVisibility(Visibility value) {
187         super.beanConstructorVisibility(value);
188         return this;
189      }
190
191      @Override /* Overridden from Builder */
192      public Builder beanContext(BeanContext value) {
193         super.beanContext(value);
194         return this;
195      }
196
197      @Override /* Overridden from Builder */
198      public Builder beanContext(BeanContext.Builder value) {
199         super.beanContext(value);
200         return this;
201      }
202
203      @Override /* Overridden from Builder */
204      public Builder beanDictionary(java.lang.Class<?>...values) {
205         super.beanDictionary(values);
206         return this;
207      }
208
209      @Override /* Overridden from Builder */
210      public Builder beanFieldVisibility(Visibility value) {
211         super.beanFieldVisibility(value);
212         return this;
213      }
214
215      @Override /* Overridden from Builder */
216      public Builder beanInterceptor(Class<?> on, Class<? extends org.apache.juneau.swap.BeanInterceptor<?>> value) {
217         super.beanInterceptor(on, value);
218         return this;
219      }
220
221      @Override /* Overridden from Builder */
222      public Builder beanMapPutReturnsOldValue() {
223         super.beanMapPutReturnsOldValue();
224         return this;
225      }
226
227      @Override /* Overridden from Builder */
228      public Builder beanMethodVisibility(Visibility value) {
229         super.beanMethodVisibility(value);
230         return this;
231      }
232
233      @Override /* Overridden from Builder */
234      public Builder beanProperties(Map<String,Object> values) {
235         super.beanProperties(values);
236         return this;
237      }
238
239      @Override /* Overridden from Builder */
240      public Builder beanProperties(Class<?> beanClass, String properties) {
241         super.beanProperties(beanClass, properties);
242         return this;
243      }
244
245      @Override /* Overridden from Builder */
246      public Builder beanProperties(String beanClassName, String properties) {
247         super.beanProperties(beanClassName, properties);
248         return this;
249      }
250
251      @Override /* Overridden from Builder */
252      public Builder beanPropertiesExcludes(Map<String,Object> values) {
253         super.beanPropertiesExcludes(values);
254         return this;
255      }
256
257      @Override /* Overridden from Builder */
258      public Builder beanPropertiesExcludes(Class<?> beanClass, String properties) {
259         super.beanPropertiesExcludes(beanClass, properties);
260         return this;
261      }
262
263      @Override /* Overridden from Builder */
264      public Builder beanPropertiesExcludes(String beanClassName, String properties) {
265         super.beanPropertiesExcludes(beanClassName, properties);
266         return this;
267      }
268
269      @Override /* Overridden from Builder */
270      public Builder beanPropertiesReadOnly(Map<String,Object> values) {
271         super.beanPropertiesReadOnly(values);
272         return this;
273      }
274
275      @Override /* Overridden from Builder */
276      public Builder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
277         super.beanPropertiesReadOnly(beanClass, properties);
278         return this;
279      }
280
281      @Override /* Overridden from Builder */
282      public Builder beanPropertiesReadOnly(String beanClassName, String properties) {
283         super.beanPropertiesReadOnly(beanClassName, properties);
284         return this;
285      }
286
287      @Override /* Overridden from Builder */
288      public Builder beanPropertiesWriteOnly(Map<String,Object> values) {
289         super.beanPropertiesWriteOnly(values);
290         return this;
291      }
292
293      @Override /* Overridden from Builder */
294      public Builder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
295         super.beanPropertiesWriteOnly(beanClass, properties);
296         return this;
297      }
298
299      @Override /* Overridden from Builder */
300      public Builder beanPropertiesWriteOnly(String beanClassName, String properties) {
301         super.beanPropertiesWriteOnly(beanClassName, properties);
302         return this;
303      }
304
305      @Override /* Overridden from Builder */
306      public Builder beansRequireDefaultConstructor() {
307         super.beansRequireDefaultConstructor();
308         return this;
309      }
310
311      @Override /* Overridden from Builder */
312      public Builder beansRequireSerializable() {
313         super.beansRequireSerializable();
314         return this;
315      }
316
317      @Override /* Overridden from Builder */
318      public Builder beansRequireSettersForGetters() {
319         super.beansRequireSettersForGetters();
320         return this;
321      }
322
323      @Override /* Overridden from Builder */
324      public Builder dictionaryOn(Class<?> on, java.lang.Class<?>...values) {
325         super.dictionaryOn(on, values);
326         return this;
327      }
328
329      @Override /* Overridden from Builder */
330      public Builder disableBeansRequireSomeProperties() {
331         super.disableBeansRequireSomeProperties();
332         return this;
333      }
334
335      @Override /* Overridden from Builder */
336      public Builder disableIgnoreMissingSetters() {
337         super.disableIgnoreMissingSetters();
338         return this;
339      }
340
341      @Override /* Overridden from Builder */
342      public Builder disableIgnoreTransientFields() {
343         super.disableIgnoreTransientFields();
344         return this;
345      }
346
347      @Override /* Overridden from Builder */
348      public Builder disableIgnoreUnknownNullBeanProperties() {
349         super.disableIgnoreUnknownNullBeanProperties();
350         return this;
351      }
352
353      @Override /* Overridden from Builder */
354      public Builder disableInterfaceProxies() {
355         super.disableInterfaceProxies();
356         return this;
357      }
358
359      @Override /* Overridden from Builder */
360      public <T> Builder example(Class<T> pojoClass, T o) {
361         super.example(pojoClass, o);
362         return this;
363      }
364
365      @Override /* Overridden from Builder */
366      public <T> Builder example(Class<T> pojoClass, String json) {
367         super.example(pojoClass, json);
368         return this;
369      }
370
371      @Override /* Overridden from Builder */
372      public Builder findFluentSetters() {
373         super.findFluentSetters();
374         return this;
375      }
376
377      @Override /* Overridden from Builder */
378      public Builder findFluentSetters(Class<?> on) {
379         super.findFluentSetters(on);
380         return this;
381      }
382
383      @Override /* Overridden from Builder */
384      public Builder ignoreInvocationExceptionsOnGetters() {
385         super.ignoreInvocationExceptionsOnGetters();
386         return this;
387      }
388
389      @Override /* Overridden from Builder */
390      public Builder ignoreInvocationExceptionsOnSetters() {
391         super.ignoreInvocationExceptionsOnSetters();
392         return this;
393      }
394
395      @Override /* Overridden from Builder */
396      public Builder ignoreUnknownBeanProperties() {
397         super.ignoreUnknownBeanProperties();
398         return this;
399      }
400
401      @Override /* Overridden from Builder */
402      public Builder ignoreUnknownEnumValues() {
403         super.ignoreUnknownEnumValues();
404         return this;
405      }
406
407      @Override /* Overridden from Builder */
408      public Builder implClass(Class<?> interfaceClass, Class<?> implClass) {
409         super.implClass(interfaceClass, implClass);
410         return this;
411      }
412
413      @Override /* Overridden from Builder */
414      public Builder implClasses(Map<Class<?>,Class<?>> values) {
415         super.implClasses(values);
416         return this;
417      }
418
419      @Override /* Overridden from Builder */
420      public Builder interfaceClass(Class<?> on, Class<?> value) {
421         super.interfaceClass(on, value);
422         return this;
423      }
424
425      @Override /* Overridden from Builder */
426      public Builder interfaces(java.lang.Class<?>...value) {
427         super.interfaces(value);
428         return this;
429      }
430
431      @Override /* Overridden from Builder */
432      public Builder locale(Locale value) {
433         super.locale(value);
434         return this;
435      }
436
437      @Override /* Overridden from Builder */
438      public Builder mediaType(MediaType value) {
439         super.mediaType(value);
440         return this;
441      }
442
443      @Override /* Overridden from Builder */
444      public Builder notBeanClasses(java.lang.Class<?>...values) {
445         super.notBeanClasses(values);
446         return this;
447      }
448
449      @Override /* Overridden from Builder */
450      public Builder notBeanPackages(String...values) {
451         super.notBeanPackages(values);
452         return this;
453      }
454
455      @Override /* Overridden from Builder */
456      public Builder propertyNamer(Class<? extends org.apache.juneau.PropertyNamer> value) {
457         super.propertyNamer(value);
458         return this;
459      }
460
461      @Override /* Overridden from Builder */
462      public Builder propertyNamer(Class<?> on, Class<? extends org.apache.juneau.PropertyNamer> value) {
463         super.propertyNamer(on, value);
464         return this;
465      }
466
467      @Override /* Overridden from Builder */
468      public Builder sortProperties() {
469         super.sortProperties();
470         return this;
471      }
472
473      @Override /* Overridden from Builder */
474      public Builder sortProperties(java.lang.Class<?>...on) {
475         super.sortProperties(on);
476         return this;
477      }
478
479      @Override /* Overridden from Builder */
480      public Builder stopClass(Class<?> on, Class<?> value) {
481         super.stopClass(on, value);
482         return this;
483      }
484
485      @Override /* Overridden from Builder */
486      public <T, S> Builder swap(Class<T> normalClass, Class<S> swappedClass, ThrowingFunction<T,S> swapFunction) {
487         super.swap(normalClass, swappedClass, swapFunction);
488         return this;
489      }
490
491      @Override /* Overridden from Builder */
492      public <T, S> Builder swap(Class<T> normalClass, Class<S> swappedClass, ThrowingFunction<T,S> swapFunction, ThrowingFunction<S,T> unswapFunction) {
493         super.swap(normalClass, swappedClass, swapFunction, unswapFunction);
494         return this;
495      }
496
497      @Override /* Overridden from Builder */
498      public Builder swaps(Object...values) {
499         super.swaps(values);
500         return this;
501      }
502
503      @Override /* Overridden from Builder */
504      public Builder swaps(Class<?>...values) {
505         super.swaps(values);
506         return this;
507      }
508
509      @Override /* Overridden from Builder */
510      public Builder timeZone(TimeZone value) {
511         super.timeZone(value);
512         return this;
513      }
514
515      @Override /* Overridden from Builder */
516      public Builder typeName(Class<?> on, String value) {
517         super.typeName(on, value);
518         return this;
519      }
520
521      @Override /* Overridden from Builder */
522      public Builder typePropertyName(String value) {
523         super.typePropertyName(value);
524         return this;
525      }
526
527      @Override /* Overridden from Builder */
528      public Builder typePropertyName(Class<?> on, String value) {
529         super.typePropertyName(on, value);
530         return this;
531      }
532
533      @Override /* Overridden from Builder */
534      public Builder useEnumNames() {
535         super.useEnumNames();
536         return this;
537      }
538
539      @Override /* Overridden from Builder */
540      public Builder useJavaBeanIntrospector() {
541         super.useJavaBeanIntrospector();
542         return this;
543      }
544
545      @Override /* Overridden from Builder */
546      public Builder detectRecursions() {
547         super.detectRecursions();
548         return this;
549      }
550
551      @Override /* Overridden from Builder */
552      public Builder detectRecursions(boolean value) {
553         super.detectRecursions(value);
554         return this;
555      }
556
557      @Override /* Overridden from Builder */
558      public Builder ignoreRecursions() {
559         super.ignoreRecursions();
560         return this;
561      }
562
563      @Override /* Overridden from Builder */
564      public Builder ignoreRecursions(boolean value) {
565         super.ignoreRecursions(value);
566         return this;
567      }
568
569      @Override /* Overridden from Builder */
570      public Builder initialDepth(int value) {
571         super.initialDepth(value);
572         return this;
573      }
574
575      @Override /* Overridden from Builder */
576      public Builder maxDepth(int value) {
577         super.maxDepth(value);
578         return this;
579      }
580
581      @Override /* Overridden from Builder */
582      public Builder accept(String value) {
583         super.accept(value);
584         return this;
585      }
586
587      @Override /* Overridden from Builder */
588      public Builder addBeanTypes() {
589         super.addBeanTypes();
590         return this;
591      }
592
593      @Override /* Overridden from Builder */
594      public Builder addBeanTypes(boolean value) {
595         super.addBeanTypes(value);
596         return this;
597      }
598
599      @Override /* Overridden from Builder */
600      public Builder addRootType() {
601         super.addRootType();
602         return this;
603      }
604
605      @Override /* Overridden from Builder */
606      public Builder addRootType(boolean value) {
607         super.addRootType(value);
608         return this;
609      }
610
611      @Override /* Overridden from Builder */
612      public Builder keepNullProperties() {
613         super.keepNullProperties();
614         return this;
615      }
616
617      @Override /* Overridden from Builder */
618      public Builder keepNullProperties(boolean value) {
619         super.keepNullProperties(value);
620         return this;
621      }
622
623      @Override /* Overridden from Builder */
624      public Builder listener(Class<? extends org.apache.juneau.serializer.SerializerListener> value) {
625         super.listener(value);
626         return this;
627      }
628
629      @Override /* Overridden from Builder */
630      public Builder produces(String value) {
631         super.produces(value);
632         return this;
633      }
634
635      @Override /* Overridden from Builder */
636      public Builder sortCollections() {
637         super.sortCollections();
638         return this;
639      }
640
641      @Override /* Overridden from Builder */
642      public Builder sortCollections(boolean value) {
643         super.sortCollections(value);
644         return this;
645      }
646
647      @Override /* Overridden from Builder */
648      public Builder sortMaps() {
649         super.sortMaps();
650         return this;
651      }
652
653      @Override /* Overridden from Builder */
654      public Builder sortMaps(boolean value) {
655         super.sortMaps(value);
656         return this;
657      }
658
659      @Override /* Overridden from Builder */
660      public Builder trimEmptyCollections() {
661         super.trimEmptyCollections();
662         return this;
663      }
664
665      @Override /* Overridden from Builder */
666      public Builder trimEmptyCollections(boolean value) {
667         super.trimEmptyCollections(value);
668         return this;
669      }
670
671      @Override /* Overridden from Builder */
672      public Builder trimEmptyMaps() {
673         super.trimEmptyMaps();
674         return this;
675      }
676
677      @Override /* Overridden from Builder */
678      public Builder trimEmptyMaps(boolean value) {
679         super.trimEmptyMaps(value);
680         return this;
681      }
682
683      @Override /* Overridden from Builder */
684      public Builder trimStrings() {
685         super.trimStrings();
686         return this;
687      }
688
689      @Override /* Overridden from Builder */
690      public Builder trimStrings(boolean value) {
691         super.trimStrings(value);
692         return this;
693      }
694
695      @Override /* Overridden from Builder */
696      public Builder uriContext(UriContext value) {
697         super.uriContext(value);
698         return this;
699      }
700
701      @Override /* Overridden from Builder */
702      public Builder uriRelativity(UriRelativity value) {
703         super.uriRelativity(value);
704         return this;
705      }
706
707      @Override /* Overridden from Builder */
708      public Builder uriResolution(UriResolution value) {
709         super.uriResolution(value);
710         return this;
711      }
712
713      @Override /* Overridden from Builder */
714      public Builder fileCharset(Charset value) {
715         super.fileCharset(value);
716         return this;
717      }
718
719      @Override /* Overridden from Builder */
720      public Builder maxIndent(int value) {
721         super.maxIndent(value);
722         return this;
723      }
724
725      @Override /* Overridden from Builder */
726      public Builder quoteChar(char value) {
727         super.quoteChar(value);
728         return this;
729      }
730
731      @Override /* Overridden from Builder */
732      public Builder quoteCharOverride(char value) {
733         super.quoteCharOverride(value);
734         return this;
735      }
736
737      @Override /* Overridden from Builder */
738      public Builder sq() {
739         super.sq();
740         return this;
741      }
742
743      @Override /* Overridden from Builder */
744      public Builder streamCharset(Charset value) {
745         super.streamCharset(value);
746         return this;
747      }
748
749      @Override /* Overridden from Builder */
750      public Builder useWhitespace() {
751         super.useWhitespace();
752         return this;
753      }
754
755      @Override /* Overridden from Builder */
756      public Builder useWhitespace(boolean value) {
757         super.useWhitespace(value);
758         return this;
759      }
760
761      @Override /* Overridden from Builder */
762      public Builder ws() {
763         super.ws();
764         return this;
765      }
766
767      @Override /* Overridden from Builder */
768      public Builder addBeanTypesXml() {
769         super.addBeanTypesXml();
770         return this;
771      }
772
773      @Override /* Overridden from Builder */
774      public Builder addBeanTypesXml(boolean value) {
775         super.addBeanTypesXml(value);
776         return this;
777      }
778
779      @Override /* Overridden from Builder */
780      public Builder addNamespaceUrisToRoot() {
781         super.addNamespaceUrisToRoot();
782         return this;
783      }
784
785      @Override /* Overridden from Builder */
786      public Builder addNamespaceUrisToRoot(boolean value) {
787         super.addNamespaceUrisToRoot(value);
788         return this;
789      }
790
791      @Override /* Overridden from Builder */
792      public Builder defaultNamespace(Namespace value) {
793         super.defaultNamespace(value);
794         return this;
795      }
796
797      @Override /* Overridden from Builder */
798      public Builder disableAutoDetectNamespaces() {
799         super.disableAutoDetectNamespaces();
800         return this;
801      }
802
803      @Override /* Overridden from Builder */
804      public Builder disableAutoDetectNamespaces(boolean value) {
805         super.disableAutoDetectNamespaces(value);
806         return this;
807      }
808
809      @Override /* Overridden from Builder */
810      public Builder enableNamespaces() {
811         super.enableNamespaces();
812         return this;
813      }
814
815      @Override /* Overridden from Builder */
816      public Builder enableNamespaces(boolean value) {
817         super.enableNamespaces(value);
818         return this;
819      }
820
821      @Override /* Overridden from Builder */
822      public Builder namespaces(Namespace...values) {
823         super.namespaces(values);
824         return this;
825      }
826
827      @Override /* Overridden from Builder */
828      public Builder ns() {
829         super.ns();
830         return this;
831      }
832
833      @Override /* Overridden from Builder */
834      public Builder addBeanTypesHtml() {
835         super.addBeanTypesHtml();
836         return this;
837      }
838
839      @Override /* Overridden from Builder */
840      public Builder addBeanTypesHtml(boolean value) {
841         super.addBeanTypesHtml(value);
842         return this;
843      }
844
845      @Override /* Overridden from Builder */
846      public Builder addKeyValueTableHeaders() {
847         super.addKeyValueTableHeaders();
848         return this;
849      }
850
851      @Override /* Overridden from Builder */
852      public Builder addKeyValueTableHeaders(boolean value) {
853         super.addKeyValueTableHeaders(value);
854         return this;
855      }
856
857      @Override /* Overridden from Builder */
858      public Builder disableDetectLabelParameters() {
859         super.disableDetectLabelParameters();
860         return this;
861      }
862
863      @Override /* Overridden from Builder */
864      public Builder disableDetectLabelParameters(boolean value) {
865         super.disableDetectLabelParameters(value);
866         return this;
867      }
868
869      @Override /* Overridden from Builder */
870      public Builder disableDetectLinksInStrings() {
871         super.disableDetectLinksInStrings();
872         return this;
873      }
874
875      @Override /* Overridden from Builder */
876      public Builder disableDetectLinksInStrings(boolean value) {
877         super.disableDetectLinksInStrings(value);
878         return this;
879      }
880
881      @Override /* Overridden from Builder */
882      public Builder labelParameter(String value) {
883         super.labelParameter(value);
884         return this;
885      }
886
887      @Override /* Overridden from Builder */
888      public Builder uriAnchorText(AnchorText value) {
889         super.uriAnchorText(value);
890         return this;
891      }
892   }
893
894   //-------------------------------------------------------------------------------------------------------------------
895   // Instance
896   //-------------------------------------------------------------------------------------------------------------------
897
898   /**
899    * Constructor.
900    *
901    * @param builder The builder for this object.
902    */
903   public HtmlStrippedDocSerializer(Builder builder) {
904      super(builder);
905   }
906
907   @Override /* Context */
908   public Builder copy() {
909      return new Builder(this);
910   }
911
912   @Override /* Context */
913   public HtmlStrippedDocSerializerSession.Builder createSession() {
914      return HtmlStrippedDocSerializerSession.create(this);
915   }
916
917   @Override /* Context */
918   public HtmlStrippedDocSerializerSession getSession() {
919      return createSession().build();
920   }
921}