Skip to content

Commit 5bd96c2

Browse files
committed
removed WeakReference from XMLReader
1 parent 466595f commit 5bd96c2

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

src/main/java/org/xmlobjects/stream/XMLReader.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
import javax.xml.transform.stax.StAXSource;
4747
import java.io.IOException;
4848
import java.io.StringWriter;
49-
import java.lang.ref.WeakReference;
5049
import java.net.URI;
5150
import java.util.IdentityHashMap;
5251
import java.util.Map;
@@ -57,7 +56,7 @@ public class XMLReader implements AutoCloseable {
5756
private final DepthXMLStreamReader reader;
5857

5958
private final Map<Class<?>, ObjectBuilder<?>> builderCache = new IdentityHashMap<>();
60-
private WeakReference<?> parent = new WeakReference<>(null);
59+
private Object parent;
6160
private boolean createDOMAsFallback;
6261
private Properties properties;
6362
private Transformer transformer;
@@ -126,8 +125,8 @@ public void close() throws XMLReadException {
126125
} catch (XMLStreamException e) {
127126
throw new XMLReadException("Caused by:", e);
128127
} finally {
129-
parent.clear();
130128
builderCache.clear();
129+
parent = null;
131130
}
132131
}
133132

@@ -187,7 +186,7 @@ public <T> T getObject(Class<T> type) throws ObjectBuildException, XMLReadExcept
187186
QName name = reader.getName();
188187
ObjectBuilder<T> builder = xmlObjects.getBuilder(name, type);
189188
if (builder != null) {
190-
T object = builder.createObject(name, parent.get());
189+
T object = builder.createObject(name, parent);
191190
if (object == null) {
192191
throw new ObjectBuildException("The builder " + builder.getClass().getName() + " created a null value.");
193192
}
@@ -208,7 +207,7 @@ public <T> T getObjectUsingBuilder(ObjectBuilder<T> builder) throws ObjectBuildE
208207
}
209208

210209
QName name = reader.getName();
211-
T object = builder.createObject(name, parent.get());
210+
T object = builder.createObject(name, parent);
212211
if (object == null) {
213212
throw new ObjectBuildException("The builder " + builder.getClass().getName() + " created a null value.");
214213
}
@@ -248,9 +247,9 @@ public <T> T fillObjectUsingBuilder(T object, ObjectBuilder<T> builder) throws O
248247
}
249248

250249
private <T> T processObject(T object, QName name, ObjectBuilder<T> builder) throws ObjectBuildException, XMLReadException {
251-
WeakReference<?> previous = parent;
250+
Object previous = parent;
252251
try {
253-
parent = new WeakReference<>(object);
252+
parent = object;
254253
int stopAt = reader.getDepth() - 1;
255254
int childLevel = reader.getDepth() + 1;
256255

0 commit comments

Comments
 (0)