Javolution 6.0.0 java
XMLBinding.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;
10
11
import
javolution
.
util
.
FastMap
;
12
import
javolution
.
xml
.
stream
.
XMLStreamException
;
13
import
javolution
.
xml
.
stream
.
XMLStreamReader
;
14
import
javolution
.
xml
.
stream
.
XMLStreamWriter
;
15
100
public
class
XMLBinding
implements
XMLSerializable
{
101
105
static
final
XMLBinding
DEFAULT
=
new
XMLBinding
();
106
110
private
QName
_classAttribute
=
QName
.
valueOf
(
"class"
);
111
115
private
final
FastMap<Class<?>
,
QName
>
_classToAlias
=
new
FastMap<Class<?>
,
QName
>();
116
120
private
final
FastMap<QName, Class<?>
>
_aliasToClass
=
new
FastMap<QName, Class<?>
>();
121
125
public
XMLBinding
() {}
126
133
public
void
setAlias
(Class<?> cls,
QName
qName) {
134
_classToAlias
.put(cls, qName);
135
_aliasToClass
.put(qName, cls);
136
}
137
145
public
final
void
setAlias
(Class<?> cls, String alias) {
146
setAlias
(cls,
QName
.
valueOf
(alias));
147
}
148
157
public
void
setClassAttribute
(
QName
classAttribute) {
158
_classAttribute
= classAttribute;
159
}
160
167
public
final
void
setClassAttribute
(String name) {
168
setClassAttribute
(name ==
null
?
null
:
QName
.
valueOf
(name));
169
}
170
179
protected
XMLFormat<?>
getFormat
(Class<?> forClass)
180
throws
XMLStreamException
{
181
return
XMLContext
.
getFormat
(forClass);
182
}
183
203
protected
Class<?>
readClass
(
XMLStreamReader
reader,
boolean
useAttributes)
204
throws
XMLStreamException
{
205
try
{
206
QName
classQName;
207
if
(useAttributes) {
208
if
(
_classAttribute
==
null
)
209
throw
new
XMLStreamException
(
210
"Binding has no class attribute defined, cannot retrieve class"
);
211
classQName =
QName
.
valueOf
(reader.getAttributeValue(
212
_classAttribute
.
getNamespaceURI
(),
213
_classAttribute
.
getLocalName
()));
214
if
(classQName ==
null
)
215
throw
new
XMLStreamException
(
216
"Cannot retrieve class (class attribute not found)"
);
217
}
else
{
218
classQName =
QName
.
valueOf
(reader.getNamespaceURI(),
219
reader.getLocalName());
220
}
221
222
// Searches aliases with namespace URI.
223
Class<?> cls =
_aliasToClass
.get(classQName);
224
if
(cls !=
null
)
225
return
cls;
226
227
// Searches aliases without namespace URI.
228
cls =
_aliasToClass
.get(
QName
.
valueOf
(classQName.
getLocalName
()));
229
if
(cls !=
null
)
230
return
cls;
231
232
// Finally convert the qualified name to a class (ignoring namespace URI).
233
cls = Class.forName(classQName.
getLocalName
().toString());
234
if
(cls ==
null
)
235
throw
new
XMLStreamException
(
236
"Class "
237
+ classQName.
getLocalName
()
238
+
" not found (see javolution.lang.Reflection to support additional class loader)"
);
239
_aliasToClass
.put(classQName, cls);
240
return
cls;
241
}
catch
(ClassNotFoundException ex) {
242
throw
new
RuntimeException(ex);
243
}
244
}
245
264
protected
void
writeClass
(Class<?> cls,
XMLStreamWriter
writer,
265
boolean
useAttributes)
throws
XMLStreamException
{
266
QName
qName = (
QName
)
_classToAlias
.get(cls);
267
String name = qName !=
null
? qName.
toString
() : cls.getName();
268
if
(useAttributes) {
269
if
(
_classAttribute
==
null
)
270
return
;
271
if
(
_classAttribute
.
getNamespaceURI
() ==
null
) {
272
writer.writeAttribute(
_classAttribute
.
getLocalName
(), name);
273
}
else
{
274
writer.writeAttribute(
_classAttribute
.
getNamespaceURI
(),
275
_classAttribute
.
getLocalName
(), name);
276
}
277
}
else
{
278
if
(qName !=
null
) {
279
if
(qName.
getNamespaceURI
() ==
null
) {
280
writer.writeStartElement(qName.
getLocalName
());
281
}
else
{
282
writer.writeStartElement(qName.
getNamespaceURI
(),
283
qName.
getLocalName
());
284
}
285
}
else
{
286
writer.writeStartElement(name);
287
}
288
}
289
}
290
291
public
void
reset
() {
292
_classAttribute
=
QName
.
valueOf
(
"class"
);
293
_aliasToClass
.clear();
294
_classToAlias
.clear();
295
}
296
297
private
static
final
long
serialVersionUID
= 6611041662550083919L;
298
}
javolution.xml.XMLBinding.reset
void reset()
Definition:
XMLBinding.java:291
javolution
javolution.util.FastMap
Definition:
FastMap.java:98
javolution.xml.XMLSerializable
Definition:
XMLSerializable.java:43
javolution.xml.QName.getLocalName
CharSequence getLocalName()
Definition:
QName.java:140
javolution.xml.XMLBinding._classToAlias
final FastMap< Class<?>, QName > _classToAlias
Definition:
XMLBinding.java:115
javolution.xml.QName.valueOf
static QName valueOf(CharSequence name)
Definition:
QName.java:82
javolution.xml.XMLBinding.readClass
Class<?> readClass(XMLStreamReader reader, boolean useAttributes)
Definition:
XMLBinding.java:203
javolution.xml.XMLContext
Definition:
XMLContext.java:31
javolution.xml.XMLBinding._aliasToClass
final FastMap< QName, Class<?> > _aliasToClass
Definition:
XMLBinding.java:120
javolution.xml.stream.XMLStreamException
Definition:
XMLStreamException.java:17
javolution.xml.XMLBinding
Definition:
XMLBinding.java:100
javolution.xml.stream.XMLStreamWriter
Definition:
XMLStreamWriter.java:47
javolution.xml.XMLFormat
Definition:
XMLFormat.java:116
javolution.xml.XMLBinding.getFormat
XMLFormat<?> getFormat(Class<?> forClass)
Definition:
XMLBinding.java:179
javolution.xml.XMLBinding.serialVersionUID
static final long serialVersionUID
Definition:
XMLBinding.java:297
javolution.xml.stream.XMLStreamReader
Definition:
XMLStreamReader.java:50
javolution.xml.XMLBinding.DEFAULT
static final XMLBinding DEFAULT
Definition:
XMLBinding.java:105
javolution.xml.QName
Definition:
QName.java:37
javolution.xml.XMLBinding.XMLBinding
XMLBinding()
Definition:
XMLBinding.java:125
javolution.xml.XMLBinding.setAlias
final void setAlias(Class<?> cls, String alias)
Definition:
XMLBinding.java:145
javolution.xml.XMLContext.getFormat
static< T > XMLFormat< T > getFormat(Class<? extends T > type)
Definition:
XMLContext.java:49
javolution.xml.QName.getNamespaceURI
CharSequence getNamespaceURI()
Definition:
QName.java:150
javolution.xml.XMLBinding.setClassAttribute
void setClassAttribute(QName classAttribute)
Definition:
XMLBinding.java:157
javolution.xml
Definition:
DefaultXMLFormat.java:9
javolution.xml.stream
Definition:
Location.java:9
javolution.xml.XMLBinding.setAlias
void setAlias(Class<?> cls, QName qName)
Definition:
XMLBinding.java:133
javolution.xml.XMLBinding._classAttribute
QName _classAttribute
Definition:
XMLBinding.java:110
javolution.util
Definition:
FastBitSet.java:9
javolution.xml.XMLBinding.writeClass
void writeClass(Class<?> cls, XMLStreamWriter writer, boolean useAttributes)
Definition:
XMLBinding.java:264
javolution.xml.XMLBinding.setClassAttribute
final void setClassAttribute(String name)
Definition:
XMLBinding.java:167
javolution.xml.QName.toString
String toString()
Definition:
QName.java:169
core-java
src
main
java
javolution
xml
XMLBinding.java
Generated by
1.8.18