Skip to content

Commit 6e221a3

Browse files
committed
Fixing further bugs.
1 parent e9c57a4 commit 6e221a3

File tree

1 file changed

+32
-10
lines changed

1 file changed

+32
-10
lines changed

runtime/src/main/java/org/jvnet/jaxb2_commons/xml/bind/model/concrete/CMInfoFactory.java

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ private void createElementInfos(final CMModel<T, C> model) {
118118
.getAllElements();
119119
for (ElementInfo<T, C> element : elements) {
120120
final EI ei = (EI) element;
121-
elementInfos.put(ei, createElementInfo(ei));
121+
getElementInfo(ei);
122122
}
123123
for (ElementInfo<T, C> element : elements) {
124124
model.addElementInfo(getElementInfo((EI) element));
@@ -131,7 +131,7 @@ private void createEnumLeafInfos(final CMModel<T, C> model) {
131131
for (EnumLeafInfo<T, C> enumLeafInfo : enums) {
132132
@SuppressWarnings("unchecked")
133133
final ELI eli = (ELI) enumLeafInfo;
134-
enumLeafInfos.put(eli, createEnumLeafInfo(eli));
134+
getTypeInfo(eli);
135135
}
136136
for (Map.Entry<ELI, MEnumLeafInfo<T, C>> entry : enumLeafInfos
137137
.entrySet()) {
@@ -148,7 +148,7 @@ private void createBuiltinLeafInfos(final CMModel<T, C> model) {
148148
for (BuiltinLeafInfo<T, C> builtinLeafInfo : builtins) {
149149
@SuppressWarnings("unchecked")
150150
final BLI bli = (BLI) builtinLeafInfo;
151-
builtinLeafInfos.put(bli, createBuiltinLeafInfo(bli));
151+
getTypeInfo(bli);
152152
}
153153
for (BuiltinLeafInfo<T, C> builtinLeafInfo : builtins) {
154154
model.addBuiltinLeafInfo(getTypeInfo((BLI) builtinLeafInfo));
@@ -158,11 +158,10 @@ private void createBuiltinLeafInfos(final CMModel<T, C> model) {
158158
private void createClassInfos(final CMModel<T, C> model) {
159159
Collection<? extends ClassInfo<T, C>> beans = typeInfoSet.beans()
160160
.values();
161-
162161
for (ClassInfo<T, C> classInfo : beans) {
163162
@SuppressWarnings("unchecked")
164163
final CI ci = (CI) classInfo;
165-
classInfos.put(ci, createClassInfo(ci));
164+
getTypeInfo(ci);
166165
}
167166
for (Map.Entry<CI, MClassInfo<T, C>> entry : classInfos.entrySet()) {
168167
populateClassInfo(entry.getKey(), entry.getValue());
@@ -220,8 +219,14 @@ protected MTypeInfo<T, C> getTypeInfo(TI typeInfo) {
220219
}
221220
}
222221

223-
private MBuiltinLeafInfo<T, C> getTypeInfo(BLI typeInfo) {
224-
return builtinLeafInfos.get(typeInfo);
222+
private MBuiltinLeafInfo<T, C> getTypeInfo(BLI info) {
223+
MBuiltinLeafInfo<T, C> builtinLeafInfo = builtinLeafInfos.get(info);
224+
if (builtinLeafInfo == null)
225+
{
226+
builtinLeafInfo = createBuiltinLeafInfo(info);
227+
builtinLeafInfos.put(info, builtinLeafInfo);
228+
}
229+
return builtinLeafInfo;
225230
}
226231

227232
private MTypeInfo<T, C> getTypeInfo(EI info) {
@@ -234,11 +239,22 @@ private MTypeInfo<T, C> getTypeInfo(EI info) {
234239
}
235240

236241
protected MClassInfo<T, C> getTypeInfo(CI info) {
237-
return classInfos.get(info);
242+
243+
MClassInfo<T, C> classInfo = classInfos.get(info);
244+
if (classInfo == null) {
245+
classInfo = createClassInfo(info);
246+
classInfos.put(info, classInfo);
247+
}
248+
return classInfo;
238249
}
239250

240251
private MEnumLeafInfo<T, C> getTypeInfo(ELI info) {
241-
return enumLeafInfos.get(info);
252+
MEnumLeafInfo<T, C> enumLeafInfo = enumLeafInfos.get(info);
253+
if (enumLeafInfo == null) {
254+
enumLeafInfo = createEnumLeafInfo(info);
255+
enumLeafInfos.put(info, enumLeafInfo);
256+
}
257+
return enumLeafInfo;
242258

243259
}
244260

@@ -254,7 +270,13 @@ private void populateEnumLeafInfo(ELI info, MEnumLeafInfo<T, C> enumLeafInfo) {
254270
}
255271

256272
protected MElementInfo<T, C> getElementInfo(EI info) {
257-
return elementInfos.get(info);
273+
MElementInfo<T, C> elementInfo = elementInfos.get(info);
274+
if (elementInfo == null)
275+
{
276+
elementInfo = createElementInfo(info);
277+
elementInfos.put(info, elementInfo);
278+
}
279+
return elementInfo;
258280

259281
}
260282

0 commit comments

Comments
 (0)