1/*
2 * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
3 */
4/*
5 * Licensed to the Apache Software Foundation (ASF) under one or more
6 * contributor license agreements.  See the NOTICE file distributed with
7 * this work for additional information regarding copyright ownership.
8 * The ASF licenses this file to You under the Apache License, Version 2.0
9 * (the "License"); you may not use this file except in compliance with
10 * the License.  You may obtain a copy of the License at
11 *
12 *      http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 */
20
21
22package com.sun.org.apache.xml.internal.serialize;
23
24
25import java.io.OutputStream;
26import java.io.Writer;
27import java.io.UnsupportedEncodingException;
28import com.sun.org.apache.xerces.internal.dom.DOMMessageFormatter;
29
30/**
31 * Default serializer factory can construct serializers for the three
32 * markup serializers (XML, HTML, XHTML ).
33 *
34 *
35 * @author <a href="mailto:Scott_Boag/CAM/Lotus@lotus.com">Scott Boag</a>
36 * @author <a href="mailto:arkin@intalio.com">Assaf Arkin</a>
37 *
38 * @deprecated As of JDK 9, Xerces 2.9.0, Xerces DOM L3 Serializer implementation
39 * is replaced by that of Xalan. Main class
40 * {@link com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl} is replaced
41 * by {@link com.sun.org.apache.xml.internal.serializer.dom3.LSSerializerImpl}.
42 */
43@Deprecated
44final class SerializerFactoryImpl
45    extends SerializerFactory
46{
47
48
49    private String _method;
50
51
52    SerializerFactoryImpl( String method )
53    {
54        _method = method;
55        if ( ! _method.equals( Method.XML ) &&
56             ! _method.equals( Method.HTML ) &&
57             ! _method.equals( Method.XHTML ) &&
58             ! _method.equals( Method.TEXT ) ) {
59            String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.SERIALIZER_DOMAIN, "MethodNotSupported", new Object[]{method});
60            throw new IllegalArgumentException(msg);
61        }
62    }
63
64
65    public Serializer makeSerializer( OutputFormat format )
66    {
67        Serializer serializer;
68
69        serializer = getSerializer( format );
70        serializer.setOutputFormat( format );
71        return serializer;
72    }
73
74
75
76    public Serializer makeSerializer( Writer writer,
77                                      OutputFormat format )
78    {
79        Serializer serializer;
80
81        serializer = getSerializer( format );
82        serializer.setOutputCharStream( writer );
83        return serializer;
84    }
85
86
87    public Serializer makeSerializer( OutputStream output,
88                                      OutputFormat format )
89        throws UnsupportedEncodingException
90    {
91        Serializer serializer;
92
93        serializer = getSerializer( format );
94        serializer.setOutputByteStream( output );
95        return serializer;
96    }
97
98
99    private Serializer getSerializer( OutputFormat format )
100    {
101        if ( _method.equals( Method.XML ) ) {
102            return new XMLSerializer( format );
103        } else if ( _method.equals( Method.HTML ) ) {
104            return new HTMLSerializer( format );
105        }  else if ( _method.equals( Method.XHTML ) ) {
106            return new XHTMLSerializer( format );
107        }  else if ( _method.equals( Method.TEXT ) ) {
108            return new TextSerializer();
109        } else {
110            String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.SERIALIZER_DOMAIN, "MethodNotSupported", new Object[]{_method});
111            throw new IllegalStateException(msg);
112        }
113    }
114
115
116    protected String getSupportedMethod()
117    {
118        return _method;
119    }
120
121
122}
123