/* */ }
/* 1259 */ if (propertyGroup == null)
/* */ {
/* 1261 */ if (xmlModelGroup.kind().equals("sequence"))
/* */ {
/* 1263 */ propertyGroup = new SequenceBinding(this.schemaBinding);
/* */ }
/* 1265 */ else if (xmlModelGroup.kind().equals("choice"))
/* */ {
/* 1267 */ propertyGroup = new ChoiceBinding(this.schemaBinding);
/* */ }
/* 1269 */ else if (xmlModelGroup.kind().equals("all"))
/* */ {
/* 1271 */ propertyGroup = new AllBinding(this.schemaBinding);
/* */ }
/* */ else
/* */ {
/* 1275 */ throw new IllegalStateException("Unexpected JBossXmlModelGroup.kind=" + xmlModelGroup.kind());
/* */ }
/* */
/* 1278 */ if (groupName != null)
/* */ {
/* 1281 */ propertyGroup.setQName(groupName);
/* 1282 */ this.schemaBinding.addGroup(propertyGroup.getQName(), propertyGroup);
/* */ }
/* */
/* 1285 */ propertyGroup.setSkip(Boolean.FALSE);
/* */
/* 1288 */ BeanInfo propBeanInfo = JBossXBBuilder.configuration.getBeanInfo(propClassInfo);
/* 1289 */ BeanAdapterFactory propBeanAdapterFactory = null;
/* */ try
/* */ {
/* 1293 */ BeanInfo propBeanAdapterBuilderInfo = JBossXBBuilder.configuration.getBeanInfo(DefaultBeanAdapterBuilder.class);
/* */
/* 1295 */ BeanAdapterBuilder propBeanAdapterBuilder = (BeanAdapterBuilder)propBeanAdapterBuilderInfo.newInstance();
/* */
/* 1297 */ propBeanAdapterFactory = propBeanAdapterBuilder.newFactory(propBeanInfo, null);
/* */ }
/* */ catch (Throwable t)
/* */ {
/* 1301 */ throw new RuntimeException("Error creating BeanAdapterFactory for " + DefaultBeanAdapterBuilder.class.getName(), t);
/* */ }
/* */
/* 1304 */ BeanHandler propHandler = new BeanHandler(propBeanInfo.getName(), propBeanAdapterFactory);
/* 1305 */ propertyGroup.setHandler(propHandler);
/* */
/* 1307 */ String[] memberOrder = xmlModelGroup.propOrder();
/* 1308 */ if ((memberOrder.length == 0) || (memberOrder[0].length() == 0))
/* */ {
/* 1310 */ List propNames = new ArrayList();
/* 1311 */ for (PropertyInfo prop : propBeanInfo.getProperties())
/* */ {
/* 1313 */ propNames.add(prop.getName());
/* */ }
/* 1315 */ memberOrder = (String[])propNames.toArray(new String[propNames.size()]);
/* */ }
/* */
/* 1318 */ if (this.trace) {
/* 1319 */ log.trace("Property order for " + xmlModelGroup.kind() + " property " + property.getName() + ": " + Arrays.asList(memberOrder));
/* */ }
/* */
/* 1323 */ for (String memberPropName : memberOrder)
/* */ {
/* 1325 */ if ("class".equals(memberPropName))
/* */ {
/* */ continue;
/* */ }
/* */
/* 1330 */ PropertyInfo memberProp = propBeanInfo.getProperty(memberPropName);
/* 1331 */ TypeInfo memberTypeInfo = memberProp.getType();
/* 1332 */ String memberNamespace = null;
/* */
/* 1334 */ JBossXmlNsPrefix nsPrefix = (JBossXmlNsPrefix)memberProp.getUnderlyingAnnotation(JBossXmlNsPrefix.class);
/* 1335 */ if (nsPrefix != null)
/* */ {
/* 1337 */ memberNamespace = this.schemaBinding.getNamespace(nsPrefix.prefix());
/* 1338 */ if ((memberNamespace == null) && (nsPrefix.schemaTargetIfNotMapped()))
/* */ {
/* 1340 */ throw new IllegalStateException("Prefix '" + nsPrefix.prefix() + "' is not mapped to any namespace!");
/* */ }
/* */
/* */ }
/* */
/* 1345 */ String memberName = null;
/* 1346 */ XmlElement memberXmlElement = (XmlElement)memberProp.getUnderlyingAnnotation(XmlElement.class);
/* 1347 */ if (memberXmlElement != null)
/* */ {
/* 1349 */ if (!XmlElement.DEFAULT.class.equals(memberXmlElement.type()))
/* */ {
/* 1351 */ memberTypeInfo = memberTypeInfo.getTypeInfoFactory().getTypeInfo(memberXmlElement.type());
/* */ }
/* */
/* 1354 */ if (memberNamespace == null)
/* 1355 */ memberNamespace = memberXmlElement.namespace();
/* 1356 */ memberName = memberXmlElement.name();
/* */ }
/* */
/* 1359 */ if (memberNamespace == null)
/* */ {
/* 1361 */ memberNamespace = this.defaultNamespace;
/* */ }
/* */
/* 1364 */ boolean isCol = false;
/* 1365 */ AbstractPropertyHandler memberPropertyHandler = null;
/* 1366 */ if (memberProp.getType().isCollection())
/* */ {
/* 1368 */ memberPropertyHandler = new CollectionPropertyHandler(memberProp, memberProp.getType());
/* 1369 */ isCol = true;
/* */
/* 1371 */ if ((memberXmlElement == null) || (XmlElement.DEFAULT.class.equals(memberXmlElement.type())))
/* */ {
/* 1373 */ JBossXmlCollection jbossXmlCollection = (JBossXmlCollection)memberProp.getUnderlyingAnnotation(JBossXmlCollection.class);
/* */
/* 1375 */ if (jbossXmlCollection != null)
/* */ {
/* 1377 */ memberTypeInfo = memberTypeInfo.getTypeInfoFactory().getTypeInfo(jbossXmlCollection.type());
/* */ }
/* 1379 */ memberTypeInfo = findComponentType((ClassInfo)memberTypeInfo);
/* */ }
/* */
/* */ }
/* 1383 */ else if (memberTypeInfo.isCollection())
/* */ {
/* 1385 */ memberPropertyHandler = new CollectionPropertyHandler(memberProp, memberTypeInfo);
/* 1386 */ isCol = true;
/* 1387 */ memberTypeInfo = findComponentType((ClassInfo)memberTypeInfo);
/* */ }
/* */ else
/* */ {
/* 1391 */ memberPropertyHandler = new PropertyHandler(memberProp, memberTypeInfo);
/* */ }
/* */
/* 1394 */ QName memberQName = generateXmlName(memberProp.getName(), this.elementForm, memberNamespace, memberName);
/* 1395 */ propBeanAdapterFactory.addProperty(memberQName, memberPropertyHandler);
/* */
/* 1397 */ XBValueAdapter valueAdapter = null;
/* 1398 */ XmlJavaTypeAdapter xmlTypeAdapter = (XmlJavaTypeAdapter)memberProp.getUnderlyingAnnotation(XmlJavaTypeAdapter.class);
/* 1399 */ if (xmlTypeAdapter != null)
/* */ {
/* 1401 */ valueAdapter = new XBValueAdapter(xmlTypeAdapter.value(), memberTypeInfo.getTypeInfoFactory());
/* 1402 */ memberTypeInfo = valueAdapter.getAdaptedTypeInfo();
/* */ }
/* */
/* 1405 */ TypeBinding memberTypeBinding = resolveTypeBinding(memberTypeInfo);
/* 1406 */ ElementBinding memberElement = createElementBinding(memberTypeInfo, memberTypeBinding, memberQName, false);
/* */
/* 1408 */ memberElement.setNillable(true);
/* 1409 */ memberElement.setValueAdapter(valueAdapter);
/* 1410 */ ParticleBinding memberParticle = new ParticleBinding(memberElement, 0, 1, isCol);
/* 1411 */ propertyGroup.addParticle(memberParticle);
/* */
/* 1413 */ if (this.trace) {
/* 1414 */ log.trace("added " + memberParticle + " to " + xmlModelGroup.kind() + ", property " + property.getName());
/* */ }
/* */ }
/* */ }
/* */
/* 1419 */ model.addParticle(new ParticleBinding(propertyGroup));
/* */
/* 1423 */ AbstractPropertyHandler propertyHandler = null;
/* 1424 */ if (propertyType.isCollection()) {
/* 1425 */ propertyHandler = new CollectionPropertyHandler(property, propClassInfo);
/* */ }
/* */ else {
/* 1428 */ propertyHandler = new PropertyHandler(property, propClassInfo);
/* */ }
/* 1430 */ beanAdapterFactory.addProperty(propertyGroup.getQName(), propertyHandler);
/* 1431 */ return;
/* */ }
/* */
/* */ }
/* */
/* 1436 */ XmlElement[] elements = null;
/* 1437 */ XmlElement xmlElement = (XmlElement)property.getUnderlyingAnnotation(XmlElement.class);
/* 1438 */ if (xmlElement != null)
/* */ {
/* 1441 */ elements = new XmlElement[] { xmlElement };
/* */ }
/* */ else
/* */ {
/* 1447 */ XmlElements xmlElements = (XmlElements)property.getUnderlyingAnnotation(XmlElements.class);
/* 1448 */ if (xmlElements != null) {
/* 1449 */ elements = xmlElements.value();
/* */ }
/* */ }
/* */
/* 1453 */ if ((elements == null) || (elements.length == 0)) {
/* 1454 */ elements = new XmlElement[1];
/* */ }
/* */
/* 1457 */ JBossXmlNsPrefix xmlNsPrefix = (JBossXmlNsPrefix)property.getUnderlyingAnnotation(JBossXmlNsPrefix.class);
/* */
/* 1461 */ XmlElementWrapper xmlWrapper = (XmlElementWrapper)property.getUnderlyingAnnotation(XmlElementWrapper.class);
/* 1462 */ if (xmlWrapper != null)
/* */ {
/* 1464 */ String wrapperNamespace = xmlWrapper.namespace();
/* 1465 */ String wrapperName = xmlWrapper.name();
/* 1466 */ boolean wrapperNillable = xmlWrapper.nillable();
/* */
/* 1468 */ QName wrapperQName = generateXmlName(property.getName(), this.elementForm, wrapperNamespace, wrapperName);
/* */
/* 1470 */ TypeBinding wrapperType = new TypeBinding();
/* 1471 */ SequenceBinding seq = new SequenceBinding(this.schemaBinding);
/* 1472 */ seq.setHandler(BuilderParticleHandler.INSTANCE);
/* 1473 */ ParticleBinding particle = new ParticleBinding(seq);
/* 1474 */ wrapperType.setParticle(particle);
/* 1475 */ wrapperType.setHandler(new DefaultElementHandler());
/* */
/* 1477 */ ElementBinding wrapperElement = createElementBinding(propertyType, wrapperType, wrapperQName, false);