Javolution 6.0.0 java
XMLReferenceResolver.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
.
text
.
CharArray
;
12
import
javolution
.
text
.
TextBuilder
;
13
import
javolution
.
util
.
FastMap
;
14
import
javolution
.
util
.
FastTable
;
15
import
javolution
.
util
.
Index
;
16
import
javolution
.
util
.
function
.
Equalities
;
17
import
javolution
.
xml
.
stream
.
XMLStreamException
;
18
30
public
class
XMLReferenceResolver
{
31
35
private
FastMap<Object, Index>
_objectToId
=
new
FastMap<Object, Index>
(
36
Equalities
.
IDENTITY
);
37
41
private
FastTable<Object>
_idToObject
=
new
FastTable<Object>
();
42
46
private
int
_counter
;
47
51
private
String
_idName
=
"id"
;
52
56
private
String
_idURI
=
null
;
57
61
private
String
_refName
=
"ref"
;
62
66
private
String
_refURI
=
null
;
67
71
public
XMLReferenceResolver
() {}
72
80
public
void
setIdentifierAttribute
(String name) {
81
setIdentifierAttribute
(name,
null
);
82
}
83
91
public
void
setIdentifierAttribute
(String localName, String uri) {
92
_idName
= localName;
93
_idURI
= uri;
94
}
95
103
public
void
setReferenceAttribute
(String name) {
104
setReferenceAttribute
(name,
null
);
105
}
106
114
public
void
setReferenceAttribute
(String localName, String uri) {
115
_refName
= localName;
116
_refURI
= uri;
117
}
118
130
public
boolean
writeReference
(Object obj,
XMLFormat
.
OutputElement
xml)
131
throws
XMLStreamException
{
132
Index
id
= (
Index
)
_objectToId
.get(obj);
133
if
(
id
==
null
) {
// New identifier.
134
id
=
Index
.
valueOf
(
_counter
++);
135
_objectToId
.put(obj,
id
);
136
_tmp
.
clear
().
append
(
id
.intValue());
137
if
(
_idURI
==
null
) {
138
xml.getStreamWriter().writeAttribute(
_idName
,
_tmp
);
139
}
else
{
140
xml.getStreamWriter().writeAttribute(
_idURI
,
_idName
,
_tmp
);
141
}
142
return
false
;
143
}
144
_tmp
.
clear
().
append
(
id
.intValue());
145
if
(
_refURI
==
null
) {
146
xml._writer.writeAttribute(
_refName
,
_tmp
);
147
}
else
{
148
xml._writer.writeAttribute(
_refURI
,
_refName
,
_tmp
);
149
}
150
return
true
;
151
}
152
153
private
TextBuilder
_tmp
=
new
TextBuilder
();
154
164
public
Object
readReference
(
XMLFormat
.
InputElement
xml)
165
throws
XMLStreamException
{
166
CharArray
value = xml._reader.getAttributeValue(
_refURI
,
_refName
);
167
if
(value ==
null
)
168
return
null
;
169
int
ref = value.
toInt
();
170
if
(ref >=
_idToObject
.
size
())
171
throw
new
XMLStreamException
(
"Reference: "
+ value +
" not found"
);
172
return
_idToObject
.
get
(ref);
173
}
174
184
public
void
createReference
(Object obj,
XMLFormat
.
InputElement
xml)
185
throws
XMLStreamException
{
186
CharArray
value = xml._reader.getAttributeValue(
_idURI
,
_idName
);
187
if
(value ==
null
)
188
return
;
189
int
i = value.
toInt
();
190
if
(
_idToObject
.
size
() != i)
191
throw
new
XMLStreamException
(
"Identifier discontinuity detected "
192
+
"(expected "
+
_idToObject
.
size
() +
" found "
+ i +
")"
);
193
_idToObject
.
add
(obj);
194
}
195
196
public
void
reset
() {
197
_idName
=
"id"
;
198
_idURI
=
null
;
199
_refName
=
"ref"
;
200
_refURI
=
null
;
201
_idToObject
.
clear
();
202
_objectToId
.clear();
203
_counter
= 0;
204
}
205
206
}
javolution.util.function.Equalities.IDENTITY
static final Equality< Object > IDENTITY
Definition:
Equalities.java:40
javolution.text.CharArray
Definition:
CharArray.java:36
javolution.xml.XMLReferenceResolver._objectToId
FastMap< Object, Index > _objectToId
Definition:
XMLReferenceResolver.java:35
javolution
javolution.xml.XMLReferenceResolver._idURI
String _idURI
Definition:
XMLReferenceResolver.java:56
javolution.text.CharArray.toInt
int toInt()
Definition:
CharArray.java:303
javolution.xml.XMLReferenceResolver.createReference
void createReference(Object obj, XMLFormat.InputElement xml)
Definition:
XMLReferenceResolver.java:184
javolution.util.FastMap
Definition:
FastMap.java:98
javolution.text.TextBuilder.append
final TextBuilder append(char c)
Definition:
TextBuilder.java:202
javolution.xml.XMLReferenceResolver._refURI
String _refURI
Definition:
XMLReferenceResolver.java:66
javolution.text.TextBuilder
Definition:
TextBuilder.java:29
javolution.text.TextBuilder.clear
final TextBuilder clear()
Definition:
TextBuilder.java:725
javolution.xml.XMLReferenceResolver._idName
String _idName
Definition:
XMLReferenceResolver.java:51
javolution.xml.XMLReferenceResolver.setReferenceAttribute
void setReferenceAttribute(String localName, String uri)
Definition:
XMLReferenceResolver.java:114
javolution.xml.XMLFormat.OutputElement
Definition:
XMLFormat.java:622
javolution.xml.XMLReferenceResolver.setIdentifierAttribute
void setIdentifierAttribute(String localName, String uri)
Definition:
XMLReferenceResolver.java:91
javolution.util.Index.valueOf
static Index valueOf(int value)
Definition:
Index.java:111
javolution.util.FastTable.add
void add(int index, E element)
Definition:
FastTable.java:182
javolution.xml.stream.XMLStreamException
Definition:
XMLStreamException.java:17
javolution.util.FastTable.size
int size()
Definition:
FastTable.java:165
javolution.util.function.Equalities
Definition:
Equalities.java:20
javolution.util.FastTable.get
E get(int index)
Definition:
FastTable.java:204
javolution.text
Definition:
CharArray.java:9
javolution.xml.XMLReferenceResolver.setIdentifierAttribute
void setIdentifierAttribute(String name)
Definition:
XMLReferenceResolver.java:80
javolution.util.Index
Definition:
Index.java:44
javolution.xml.XMLFormat
Definition:
XMLFormat.java:116
javolution.xml.XMLReferenceResolver.setReferenceAttribute
void setReferenceAttribute(String name)
Definition:
XMLReferenceResolver.java:103
javolution.util.function
Definition:
Consumer.java:9
javolution.xml.XMLReferenceResolver._idToObject
FastTable< Object > _idToObject
Definition:
XMLReferenceResolver.java:41
javolution.util.FastTable.clear
void clear()
Definition:
FastTable.java:171
javolution.xml.XMLReferenceResolver.writeReference
boolean writeReference(Object obj, XMLFormat.OutputElement xml)
Definition:
XMLReferenceResolver.java:130
javolution.xml.XMLReferenceResolver._counter
int _counter
Definition:
XMLReferenceResolver.java:46
javolution.xml.XMLReferenceResolver.reset
void reset()
Definition:
XMLReferenceResolver.java:196
javolution.xml.XMLReferenceResolver.readReference
Object readReference(XMLFormat.InputElement xml)
Definition:
XMLReferenceResolver.java:164
javolution.xml.XMLReferenceResolver._tmp
TextBuilder _tmp
Definition:
XMLReferenceResolver.java:153
javolution.xml.XMLFormat.InputElement
Definition:
XMLFormat.java:186
javolution.xml
Definition:
DefaultXMLFormat.java:9
javolution.xml.stream
Definition:
Location.java:9
javolution.xml.XMLReferenceResolver._refName
String _refName
Definition:
XMLReferenceResolver.java:61
javolution.util
Definition:
FastBitSet.java:9
javolution.xml.XMLReferenceResolver
Definition:
XMLReferenceResolver.java:30
javolution.xml.XMLReferenceResolver.XMLReferenceResolver
XMLReferenceResolver()
Definition:
XMLReferenceResolver.java:71
javolution.util.FastTable
Definition:
FastTable.java:88
core-java
src
main
java
javolution
xml
XMLReferenceResolver.java
Generated by
1.8.18