Javolution 6.0.0 java
XMLOutputFactoryImpl.java
Go to the documentation of this file.
1 /*
2  * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3  * Copyright (C) 2012 - Javolution (http://javolution.org/)
4  * All rights reserved.
5  *
6  * Permission to use, copy, modify, and distribute this software is
7  * freely granted, provided that this notice is preserved.
8  */
9 package javolution.xml.internal.stream;
10 
11 import java.io.OutputStream;
12 import java.io.Writer;
13 
17 
21 public final class XMLOutputFactoryImpl implements XMLOutputFactory {
22 
23  // Property setting.
24  private Boolean _automaticEmptyElements = Boolean.FALSE;
25 
26  // Property setting.
27  private String _indentation;
28 
29  // Property setting.
30  private Boolean _isRepairingNamespaces = Boolean.FALSE;
31 
32  // Property setting.
33  private String _lineSeparator = "\n";
34 
35  // Property setting.
36  private Boolean _noEmptyElementTag = Boolean.FALSE;
37 
38  // Property setting.
39  private String _repairingPrefix = "ns";
40 
42  .shared();
43 
44  // Implements XMLOutputFactory abstract method.
45  public XMLStreamWriterImpl createXMLStreamWriter(OutputStream stream)
46  throws XMLStreamException {
47  XMLStreamWriterImpl xmlWriter = newWriter();
48  xmlWriter.setOutput(stream);
49  return xmlWriter;
50  }
51 
52  // Implements XMLOutputFactory abstract method.
53  public XMLStreamWriterImpl createXMLStreamWriter(OutputStream stream,
54  String encoding) throws XMLStreamException {
55  if ((encoding == null) || encoding.equals("UTF-8")
56  || encoding.equals("utf-8"))
57  return createXMLStreamWriter(stream);
58  XMLStreamWriterImpl xmlWriter = newWriter();
59  xmlWriter.setOutput(stream, encoding);
60  return xmlWriter;
61  }
62 
63  // Implements XMLOutputFactory abstract method.
65  throws XMLStreamException {
66  XMLStreamWriterImpl xmlWriter = newWriter();
67  xmlWriter.setOutput(writer);
68  return xmlWriter;
69  }
70 
71  // Implements XMLOutputFactory abstract method.
72  public Object getProperty(String name) throws IllegalArgumentException {
73  if (name.equals(IS_REPAIRING_NAMESPACES)) {
75  } else if (name.equals(REPAIRING_PREFIX)) {
76  return _repairingPrefix;
77  } else if (name.equals(AUTOMATIC_EMPTY_ELEMENTS)) {
79  } else if (name.equals(NO_EMPTY_ELEMENT_TAG)) {
80  return _noEmptyElementTag;
81  } else if (name.equals(INDENTATION)) {
82  return _indentation;
83  } else if (name.equals(LINE_SEPARATOR)) {
84  return _lineSeparator;
85  } else {
86  throw new IllegalArgumentException("Property: " + name
87  + " not supported");
88  }
89  }
90 
91  // Implements XMLOutputFactory abstract method.
92  public boolean isPropertySupported(String name) {
93  return name.equals(IS_REPAIRING_NAMESPACES)
94  || name.equals(REPAIRING_PREFIX)
95  || name.equals(AUTOMATIC_EMPTY_ELEMENTS)
96  || name.equals(NO_EMPTY_ELEMENT_TAG)
97  || name.equals(INDENTATION) || name.equals(LINE_SEPARATOR);
98  }
99 
100  // Implements XMLOutputFactory abstract method.
101  public void setProperty(String name, Object value)
102  throws IllegalArgumentException {
103  if (name.equals(IS_REPAIRING_NAMESPACES)) {
104  _isRepairingNamespaces = (Boolean) value;
105  } else if (name.equals(REPAIRING_PREFIX)) {
106  _repairingPrefix = (String) value;
107  } else if (name.equals(AUTOMATIC_EMPTY_ELEMENTS)) {
108  _automaticEmptyElements = (Boolean) value;
109  } else if (name.equals(NO_EMPTY_ELEMENT_TAG)) {
110  _noEmptyElementTag = (Boolean) value;
111  } else if (name.equals(INDENTATION)) {
112  _indentation = (String) value;
113  } else if (name.equals(LINE_SEPARATOR)) {
114  _lineSeparator = (String) value;
115  } else {
116  throw new IllegalArgumentException("Property: " + name
117  + " not supported");
118  }
119  }
120 
124  void recycle(XMLStreamWriterImpl xmlWriter) {
125  _recycled.addLast(xmlWriter);
126  }
127 
129  XMLStreamWriterImpl xmlWriter = _recycled.pollLast();
130  if (xmlWriter == null) xmlWriter = new XMLStreamWriterImpl(this);
131  xmlWriter.setRepairingNamespaces(_isRepairingNamespaces.booleanValue());
133  xmlWriter.setIndentation(_indentation);
134  xmlWriter.setLineSeparator(_lineSeparator);
136  .booleanValue());
137  xmlWriter.setNoEmptyElementTag(_noEmptyElementTag.booleanValue());
138  return xmlWriter;
139  }
140 
141  @Override
143  try {
145  clone._recycled = new FastTable<XMLStreamWriterImpl>().shared();
146  return clone;
147  } catch (CloneNotSupportedException e) {
148  throw new Error();// Cannot happen since cloneable.
149  }
150  }
151 }
javolution.xml.stream.XMLOutputFactory.LINE_SEPARATOR
static final String LINE_SEPARATOR
Definition: XMLOutputFactory.java:84
javolution.xml.internal.stream.XMLStreamWriterImpl.setIndentation
void setIndentation(String indentation)
Definition: XMLStreamWriterImpl.java:243
javolution
javolution.xml.internal.stream.XMLStreamWriterImpl.setRepairingNamespaces
void setRepairingNamespaces(boolean isRepairingNamespaces)
Definition: XMLStreamWriterImpl.java:220
javolution.xml.stream.XMLOutputFactory
Definition: XMLOutputFactory.java:57
javolution.xml.stream.XMLOutputFactory.IS_REPAIRING_NAMESPACES
static final String IS_REPAIRING_NAMESPACES
Definition: XMLOutputFactory.java:63
javolution.xml.internal.stream.XMLOutputFactoryImpl._indentation
String _indentation
Definition: XMLOutputFactoryImpl.java:27
javolution.xml.internal.stream.XMLStreamWriterImpl.setOutput
void setOutput(OutputStream out)
Definition: XMLStreamWriterImpl.java:170
javolution.xml.internal.stream.XMLOutputFactoryImpl._noEmptyElementTag
Boolean _noEmptyElementTag
Definition: XMLOutputFactoryImpl.java:36
javolution.xml.stream.XMLOutputFactory.NO_EMPTY_ELEMENT_TAG
static final String NO_EMPTY_ELEMENT_TAG
Definition: XMLOutputFactory.java:102
javolution.xml.internal.stream.XMLStreamWriterImpl.setAutomaticEmptyElements
void setAutomaticEmptyElements(boolean automaticEmptyElements)
Definition: XMLStreamWriterImpl.java:265
javolution.xml.internal.stream.XMLOutputFactoryImpl._isRepairingNamespaces
Boolean _isRepairingNamespaces
Definition: XMLOutputFactoryImpl.java:30
javolution.xml.stream.XMLStreamException
Definition: XMLStreamException.java:17
javolution.xml.internal.stream.XMLStreamWriterImpl.setLineSeparator
void setLineSeparator(String lineSeparator)
Definition: XMLStreamWriterImpl.java:252
javolution.xml.internal.stream.XMLOutputFactoryImpl.clone
XMLOutputFactory clone()
Definition: XMLOutputFactoryImpl.java:142
javolution.xml.internal.stream.XMLOutputFactoryImpl._repairingPrefix
String _repairingPrefix
Definition: XMLOutputFactoryImpl.java:39
javolution.xml.internal.stream.XMLOutputFactoryImpl._automaticEmptyElements
Boolean _automaticEmptyElements
Definition: XMLOutputFactoryImpl.java:24
javolution.xml.stream.XMLOutputFactory.AUTOMATIC_EMPTY_ELEMENTS
static final String AUTOMATIC_EMPTY_ELEMENTS
Definition: XMLOutputFactory.java:92
javolution.util.FastTable.shared
FastTable< E > shared()
Definition: FastTable.java:135
javolution.xml.internal.stream.XMLStreamWriterImpl.setNoEmptyElementTag
void setNoEmptyElementTag(boolean noEmptyElementTag)
Definition: XMLStreamWriterImpl.java:277
javolution.xml.internal.stream.XMLOutputFactoryImpl.recycle
void recycle(XMLStreamWriterImpl xmlWriter)
Definition: XMLOutputFactoryImpl.java:124
javolution.xml.stream.XMLOutputFactory.clone
XMLOutputFactory clone()
javolution.xml.internal.stream.XMLOutputFactoryImpl._recycled
FastTable< XMLStreamWriterImpl > _recycled
Definition: XMLOutputFactoryImpl.java:41
javolution.xml.stream.XMLOutputFactory.REPAIRING_PREFIX
static final String REPAIRING_PREFIX
Definition: XMLOutputFactory.java:71
javolution.xml.internal.stream.XMLOutputFactoryImpl.createXMLStreamWriter
XMLStreamWriterImpl createXMLStreamWriter(OutputStream stream)
Definition: XMLOutputFactoryImpl.java:45
javolution.xml.internal.stream.XMLStreamWriterImpl.setRepairingPrefix
void setRepairingPrefix(String repairingPrefix)
Definition: XMLStreamWriterImpl.java:232
javolution.xml.internal.stream.XMLOutputFactoryImpl
Definition: XMLOutputFactoryImpl.java:21
javolution.xml.internal.stream.XMLOutputFactoryImpl._lineSeparator
String _lineSeparator
Definition: XMLOutputFactoryImpl.java:33
javolution.xml.internal.stream.XMLOutputFactoryImpl.createXMLStreamWriter
XMLStreamWriterImpl createXMLStreamWriter(Writer writer)
Definition: XMLOutputFactoryImpl.java:64
javolution.xml
Definition: DefaultXMLFormat.java:9
javolution.xml.internal.stream.XMLOutputFactoryImpl.createXMLStreamWriter
XMLStreamWriterImpl createXMLStreamWriter(OutputStream stream, String encoding)
Definition: XMLOutputFactoryImpl.java:53
javolution.xml.stream
Definition: Location.java:9
javolution.xml.internal.stream.XMLOutputFactoryImpl.isPropertySupported
boolean isPropertySupported(String name)
Definition: XMLOutputFactoryImpl.java:92
javolution.xml.stream.XMLOutputFactory.INDENTATION
static final String INDENTATION
Definition: XMLOutputFactory.java:78
javolution.xml.internal.stream.XMLOutputFactoryImpl.getProperty
Object getProperty(String name)
Definition: XMLOutputFactoryImpl.java:72
javolution.util
Definition: FastBitSet.java:9
javolution.xml.internal.stream.XMLStreamWriterImpl
Definition: XMLStreamWriterImpl.java:36
javolution.xml.internal.stream.XMLOutputFactoryImpl.setProperty
void setProperty(String name, Object value)
Definition: XMLOutputFactoryImpl.java:101
javolution.xml.internal.stream.XMLOutputFactoryImpl.newWriter
XMLStreamWriterImpl newWriter()
Definition: XMLOutputFactoryImpl.java:128
javolution.util.FastTable
Definition: FastTable.java:88