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 22 package com.sun.org.apache.xml.internal.serialize; 23 24 25 import java.io.OutputStream; 26 import java.io.Writer; 27 import java.io.UnsupportedEncodingException; 28 import 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 44 final 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 }