Package org.jboss.xb.binding.sunday.unmarshalling

Examples of org.jboss.xb.binding.sunday.unmarshalling.SequenceBinding


    * @param localModel the current model
    * @return the new local model
    */
   private ModelGroupBinding createCollection(ModelGroupBinding localModel)
   {
      SequenceBinding sequenceBinding = new SequenceBinding(schemaBinding);
      sequenceBinding.setHandler(BuilderParticleHandler.INSTANCE);
      ParticleBinding particle = new ParticleBinding(sequenceBinding);
      particle.setMinOccurs(0);
      particle.setMaxOccursUnbounded(true);
      localModel.addParticle(particle);
      return sequenceBinding;
View Full Code Here


/*      */     }
/*      */     else
/*      */     {
/*  959 */       if (this.trace)
/*  960 */         log.trace("SequenceBinding for type=" + beanInfo.getName());
/*  961 */       model = new SequenceBinding(this.schemaBinding);
/*      */     }
/*  963 */     model.setHandler(BuilderParticleHandler.INSTANCE);
/*  964 */     ParticleBinding typeParticle = new ParticleBinding(model);
/*  965 */     typeParticle.setMinOccurs(1);
/*  966 */     typeParticle.setMaxOccurs(1);
View Full Code Here

/*      */         }
/* 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);
View Full Code Here

/*      */     }
/*      */   }
/*      */
/*      */   private ModelGroupBinding createArray(ModelGroupBinding localModel)
/*      */   {
/* 1744 */     SequenceBinding sequenceBinding = new SequenceBinding(this.schemaBinding);
/* 1745 */     sequenceBinding.setHandler(BuilderParticleHandler.INSTANCE);
/* 1746 */     ArraySequenceBinding arraySequenceBinding = new ArraySequenceBinding(this.schemaBinding);
/* 1747 */     arraySequenceBinding.setHandler(BuilderParticleHandler.INSTANCE);
/* 1748 */     ParticleBinding particle = new ParticleBinding(sequenceBinding);
/* 1749 */     particle.setMinOccurs(0);
/* 1750 */     particle.setMaxOccursUnbounded(true);
View Full Code Here

/* 1754 */     return sequenceBinding;
/*      */   }
/*      */
/*      */   private ModelGroupBinding createCollection(ModelGroupBinding localModel)
/*      */   {
/* 1765 */     SequenceBinding sequenceBinding = new SequenceBinding(this.schemaBinding);
/* 1766 */     sequenceBinding.setHandler(BuilderParticleHandler.INSTANCE);
/* 1767 */     ParticleBinding particle = new ParticleBinding(sequenceBinding);
/* 1768 */     particle.setMinOccurs(0);
/* 1769 */     particle.setMaxOccursUnbounded(true);
/* 1770 */     localModel.addParticle(particle);
/* 1771 */     return sequenceBinding;
View Full Code Here

            }
         });
        
         // have to override string type's handlers
         ElementBinding global = SCHEMA.getElement(new QName("http://jboss.org/ns/test", "global"));
         SequenceBinding sequence = (SequenceBinding) global.getType().getParticle().getTerm();
         Iterator<ParticleBinding> iter = sequence.getParticles().iterator();
         iter.next(); // stringType element
         ElementBinding stringElement = (ElementBinding) iter.next().getTerm();
         stringElement.setBeforeMarshallingCallback(new TermBeforeMarshallingCallback()
         {
            public Object beforeMarshalling(Object o, MarshallingContext ctx)
            {
               ParticleBinding particle = ctx.getParticleBinding();
               assertNotNull(particle);
               assertTrue(particle.getTerm().isElement());
               ElementBinding element = (ElementBinding) particle.getTerm();
               assertEquals(new QName("http://jboss.org/ns/test", "stringElement"), element.getQName());
              
               TypeBinding type = element.getType();
               assertEquals(Constants.QNAME_STRING, type.getQName());
              
               return o == null ? null : (String)o;
            }
         });        
         stringElement.setBeforeSetParentCallback(new TermBeforeSetParentCallback()
         {
            public Object beforeSetParent(Object o, UnmarshallingContext ctx)
            {
               ParticleBinding particle = ctx.getParticle();
               assertNotNull(particle);
               assertTrue(particle.getTerm().isElement());
               ElementBinding element = (ElementBinding) particle.getTerm();
               assertEquals(new QName("http://jboss.org/ns/test", "stringElement"), element.getQName());
              
               assertTrue(ctx.getParentValue() instanceof GlobalElement);
               TermBinding parentTerm = ctx.getParentParticle().getTerm();
               assertTrue(parentTerm.isElement());
               assertEquals("global", ((ElementBinding)parentTerm).getQName().getLocalPart());

               assertEquals(String.class, ctx.resolvePropertyType());

               return o == null ? null : (String)o;
            }
         });
        
         // sequence
         sequence = (SequenceBinding) ((ParticleBinding)iter.next()).getTerm();
         sequence.setBeforeMarshallingCallback(new TermBeforeMarshallingCallback()
         {
            public Object beforeMarshalling(Object o, MarshallingContext ctx)
            {
               ParticleBinding particle = ctx.getParticleBinding();
               assertNotNull(particle);
               assertTrue(particle.getTerm() instanceof SequenceBinding);

               if(o != null)
               {
                  GlobalElement.Sequence seq = new GlobalElement.Sequence();
                  seq.item = (StringType) o;
                  o = seq;
               }
               return o;
            }
         });
         sequence.setBeforeSetParentCallback(new TermBeforeSetParentCallback()
         {
            public Object beforeSetParent(Object o, UnmarshallingContext ctx)
            {
               ParticleBinding particle = ctx.getParticle();
               assertTrue(particle.getTerm() instanceof SequenceBinding);
View Full Code Here

               return o;
            }
         };

         ElementBinding e = SCHEMA.getElement(new javax.xml.namespace.QName("http://www.jboss.org/xml/test/xop", "e"));
         SequenceBinding seq = (SequenceBinding) e.getType().getParticle().getTerm();
         for(Iterator<?> i = seq.getParticles().iterator(); i.hasNext();)
         {
            ParticleBinding particle = (ParticleBinding) i.next();
            ElementBinding child = (ElementBinding) particle.getTerm();
            if(! "xopContent".equals( child.getQName().getLocalPart()))
               child.setBeforeSetParentCallback(callback);
View Full Code Here

      ParticleBinding particle = type.getParticle();
      assertNotNull(particle);
      TermBinding term = particle.getTerm();
      assertNotNull(term);
      assertTrue(term instanceof SequenceBinding);
      SequenceBinding sequence = (SequenceBinding) term;
      Collection<ParticleBinding> particles = sequence.getParticles();
      assertNotNull(particles);
      assertEquals(1, particles.size());
      particle = particles.iterator().next();
      term = particle.getTerm();
      assertTrue(group == term);
View Full Code Here

TOP

Related Classes of org.jboss.xb.binding.sunday.unmarshalling.SequenceBinding

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.