* <p>
* To fix the cyclic reference issue, the main part of the initialization needs to be done
* after a {@link StructureLoader} is set to {@link ClassBeanInfoImpl#loader}.
*/
public void init( JAXBContextImpl context, ClassBeanInfoImpl beanInfo, Accessor<?,Map<QName,String>> attWildcard) {
UnmarshallerChain chain = new UnmarshallerChain(context);
for (ClassBeanInfoImpl bi = beanInfo; bi != null; bi = bi.superClazz) {
for (int i = bi.properties.length - 1; i >= 0; i--) {
Property p = bi.properties[i];
switch(p.getKind()) {
case ATTRIBUTE:
if(attUnmarshallers==null)
attUnmarshallers = new QNameMap<TransducedAccessor>();
AttributeProperty ap = (AttributeProperty) p;
attUnmarshallers.put(ap.attName.toQName(),ap.xacc);
break;
case ELEMENT:
case REFERENCE:
case MAP:
case VALUE:
p.buildChildElementUnmarshallers(chain,childUnmarshallers);
break;
}
}
}
this.frameSize = chain.getScopeSize();
textHandler = childUnmarshallers.get(StructureLoaderBuilder.TEXT_HANDLER);
catchAll = childUnmarshallers.get(StructureLoaderBuilder.CATCH_ALL);
if(attWildcard!=null) {