Package org.apache.yoko.bindings.corba.types

Examples of org.apache.yoko.bindings.corba.types.CorbaSequenceHandler


        TypeCode objTypeCode = CorbaUtils.getTypeCode(orb, objIdlType, staxObject.getTypeMaps());
        CorbaTypeImpl type = CorbaUtils.getCorbaType(objIdlType, staxObject.getTypeMaps());
        assertTrue(type instanceof Sequence);

        Sequence seqType = (Sequence)type;
        CorbaSequenceHandler obj = new CorbaSequenceHandler(objName, objIdlType, objTypeCode, seqType);
        assertNotNull(obj);

        List<CorbaObjectHandler> objElements = new ArrayList<CorbaObjectHandler>();
        short seqData[] = { 1, 3, 5, 7 };
        for (int i = 0 ; i < seqData.length; ++i) {
            QName elName = new QName("item");
            QName elIdlType = CorbaConstants.NT_CORBA_SHORT;
            TypeCode elTC = orb.get_primitive_tc(TCKind.tk_short);
            CorbaPrimitiveHandler el = new CorbaPrimitiveHandler(elName, elIdlType, elTC, null);
            el.setValue(Short.valueOf(seqData[i]));
            obj.addElement(el);
            objElements.add(el);
        }
       
        XMLInputFactory inputFactory = XMLInputFactory.newInstance();
        XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
        outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE);
     
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        XMLEventWriter evtWriter = null;
        try {
            evtWriter = outputFactory.createXMLEventWriter(outStream);
        } catch (XMLStreamException ex) {
        }
        assertNotNull(evtWriter);
       
        try {
            XMLEventFactory factory = XMLEventFactory.newInstance();
            staxObject.writeObjectToStax(obj, evtWriter, factory);
            evtWriter.flush();
        } catch (XMLStreamException ex) {
           
        }
        ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray());       
        XMLEventReader evtReader = null;
        try {           
            evtReader = inputFactory.createXMLEventReader(inStream);
            // read the first tag which should be a start document
            XMLEvent evt = evtReader.nextEvent();
            assertTrue(evt.isStartDocument());
        } catch (XMLStreamException ex) {
        }
        assertNotNull(evtReader);
       
        CorbaObjectHandler result = staxObject.readObjectFromStax(evtReader,
                                                                  obj.getIdlType());
        assertNotNull(result);
       
        assertTrue(result instanceof CorbaSequenceHandler);
        CorbaSequenceHandler resultObj = (CorbaSequenceHandler)result;
        assertTrue(resultObj.getName().equals(obj.getName()));
        assertTrue(resultObj.getIdlType().equals(obj.getIdlType()));
        assertTrue(resultObj.getTypeCode().equal(obj.getTypeCode()));
        List<CorbaObjectHandler> resultElements = resultObj.getElements();
        for (int i = 0; i < resultElements.size(); ++i) {
            assertTrue(resultElements.get(i) instanceof CorbaPrimitiveHandler);
            CorbaPrimitiveHandler resultEl = (CorbaPrimitiveHandler)resultElements.get(i);
            CorbaPrimitiveHandler objEl = (CorbaPrimitiveHandler)objElements.get(i);
            assertTrue(resultEl.getDataFromValue().equals(objEl.getDataFromValue()));
View Full Code Here


        boolean readOctets = type.getType().equals(W3CConstants.NT_SCHEMA_BASE64)
            || type.getType().equals(W3CConstants.NT_SCHEMA_HBIN);
        if ((schemaType == null) && (!readOctets)) {
            throw new CorbaBindingException("Couldn't find xml schema object for : " + idlType);
        }
        CorbaSequenceHandler obj = null;
        try {
            QName seqElementType = null;
            long bound = 0;
            if (type instanceof Anonsequence) {
                Anonsequence anonSeqType = (Anonsequence)type;
                seqElementType = anonSeqType.getElemtype();
                bound = anonSeqType.getBound();
            } else {
                Sequence seqType = (Sequence)type;
                seqElementType = seqType.getElemtype();
                bound = seqType.getBound();
            }

            QName name = null;
            if (schemaType instanceof XmlSchemaElement) {
                name = ((XmlSchemaElement) schemaType).getQName();
            }
            if (isTopLevel) {
                name = reader.nextEvent().asStartElement().getName();
            }
            if (name == null) {
                throw new CorbaBindingException("Couldn't find Schema element for corba:sequence " + idlType);
            }

            obj = new CorbaSequenceHandler(name,
                                           idlType,
                                           tc,
                                           type);
            if (!readOctets) {
                addElementsToSequence(obj, reader, seqElementType, bound, schemaType);
            } else {
                QName valueQName = new QName("value");
                TypeCode valueTC = orb.get_primitive_tc(TCKind.from_int(TCKind._tk_octet));
                CorbaPrimitiveHandler handler = new CorbaPrimitiveHandler(valueQName,
                                                                          seqElementType,
                                                                          valueTC,
                                                                          null);
                obj.setTemplateElement(handler);
                XMLEvent evt = reader.nextEvent();
                Characters charEl = evt.asCharacters();
                String data = charEl.getData();
                byte[] value = data.getBytes();
                for (int i = 0; i < data.length(); i++) {
                    handler = new CorbaPrimitiveHandler(valueQName,
                                                        seqElementType,
                                                        valueTC,
                                                        null);
                    handler.setValue(new Byte(value[i]));
                    obj.addElement(handler);
                }
            }
            if (isTopLevel) {
                reader.nextEvent().asEndElement();
            }
View Full Code Here

            StartElement startEl = factory.createStartElement(name, null, null);
            writer.add(startEl);
        }
        if (!writeOctets) {
            XmlSchemaElement el = CorbaHandlerUtils.getXmlSchemaSequenceElement(schemaType, serviceInfo);
            CorbaSequenceHandler seqHandler = (CorbaSequenceHandler)obj;
            List<CorbaObjectHandler> elements = seqHandler.getElements();
            for (Iterator<CorbaObjectHandler> elementsIter = elements.iterator(); elementsIter.hasNext();) {
                CorbaObjectHandler handler = elementsIter.next();
                QName objName = handler.getName();
                boolean nestedSequence = isNestedSequence(handler.getTypeCode());
                if (nestedSequence) {
                    StartElement startEl = factory.createStartElement(objName, null, null);
                    writer.add(startEl);
                }
                writeObjectToStax(handler, el, writer, factory, true);
                if (nestedSequence) {
                    EndElement endEl = factory.createEndElement(objName, null);
                    writer.add(endEl);
                }
            }
        } else {
            CorbaSequenceHandler seqHandler = (CorbaSequenceHandler) obj;
            List<CorbaObjectHandler> elements = seqHandler.getElements();
            byte[] value = new byte[elements.size()];
            for (int i = 0; i < elements.size(); i++) {
                CorbaPrimitiveHandler handler = (CorbaPrimitiveHandler) elements.get(i);
                value[i] = ((Byte) handler.getValue()).byteValue();
            }
View Full Code Here

        seqType.setElemtype(stringIdlType);       
        // name and respoitory ID of the sequence are not needed for this test

        // build the object holder for a sequence.
        TypeCode seqTC = orb.create_sequence_tc(data.length, orb.get_primitive_tc(TCKind.tk_string));
        CorbaSequenceHandler obj = new CorbaSequenceHandler(new QName("Seq"), seqIdlType, seqTC, seqType);
        for (int i = 0; i < data.length; ++i) {
            CorbaPrimitiveHandler nestedObj =
                new CorbaPrimitiveHandler(new QName("item"), stringIdlType,
                                      orb.get_primitive_tc(TCKind.tk_string), null);
            nestedObj.setValueFromData(data[i]);
            obj.addElement(nestedObj);
        }
       
        Buffer buf = new Buffer();
        OutputStream oStream = new OutputStream(buf);
        CorbaObjectWriter writer =  new CorbaObjectWriter(oStream);
View Full Code Here

            this.write(arrayElements.get(i));
        }
    }

    public void writeSequence(CorbaObjectHandler obj) throws CorbaBindingException {
        CorbaSequenceHandler seqHandler = (CorbaSequenceHandler)obj;
        List<CorbaObjectHandler> seqElements = seqHandler.getElements();
        int length = seqElements.size();
        stream.write_ulong(length);

        for (int i = 0; i < length; ++i) {
            this.write(seqElements.get(i));
View Full Code Here

            this.read(arrayElements.get(i));
        }
    }

    public void readSequence(CorbaObjectHandler obj) throws CorbaBindingException {
        CorbaSequenceHandler sequenceObj = (CorbaSequenceHandler)obj;
        List<CorbaObjectHandler> seqElements = sequenceObj.getElements();

        int length = stream.read_ulong();

        long bound = 0;
        if (obj.getType() instanceof Anonsequence) {
            Anonsequence anonSeqType = (Anonsequence) obj.getType();
            bound = anonSeqType.getBound();
        } else {
            Sequence seqType = (Sequence) obj.getType();
            bound = seqType.getBound();
        }
        if (bound == 0) {
            seqElements.clear();
            // No predefined elements means an unbounded sequence.  Use the template element
            // to construct each object that is in the input stream.
            CorbaObjectHandler template = sequenceObj.getTemplateElement();
            Class<?> templateClass = template.getClass();
            // we know that we are after the 4 parameter version of the constructor
            Class[] paramClasses = new Class[4];
            Object[] params = new Object[4];
            paramClasses[0] = QName.class;
            params[0] = template.getName();
            paramClasses[1] = QName.class;
            params[1] = template.getIdlType();
            paramClasses[2] = TypeCode.class;
            params[2] = template.getTypeCode();
            paramClasses[3] = Object.class;
            params[3] = template.getType();
            Constructor templateConstructor = null;
            try {
                templateConstructor = templateClass.getConstructor(paramClasses);
               
            } catch (java.lang.NoSuchMethodException ex) {
                throw new CorbaBindingException("Exception while reading unbounded sequence", ex);
            }
          
            for (int i = 0; i < length; ++i) {
                CorbaObjectHandler seqElement = null;
                try {
                    seqElement = (CorbaObjectHandler)templateConstructor.newInstance(params);
                    // A special case arises if we have a unbounded sequence of unbounded sequences.  We
                    // need to obtain the template object so that all nested unbounded sequences can be
                    // correctly constructed.
                    if (template instanceof CorbaSequenceHandler) {
                        CorbaSequenceHandler templateSeq = (CorbaSequenceHandler)template;
                        ((CorbaSequenceHandler)seqElement).
                            setTemplateElement(templateSeq.getTemplateElement());
                    }
                } catch (java.lang.Exception ex) {
                    throw new CorbaBindingException("Unable to instantiate sequence element", ex);
                }                   
                read(seqElement);
View Full Code Here

        seqType.setElemtype(stringIdlType);       
        // name and respoitory ID of the sequence are not needed for this test

        // build the object holder for a sequence.
        TypeCode seqTC = orb.create_sequence_tc(data.length, orb.get_primitive_tc(TCKind.tk_string));
        CorbaSequenceHandler obj = new CorbaSequenceHandler(new QName("Seq"), seqIdlType, seqTC, seqType);
        for (int i = 0; i < data.length; ++i) {
            CorbaPrimitiveHandler nestedObj =
                new CorbaPrimitiveHandler(new QName("item"), stringIdlType,
                                      orb.get_primitive_tc(TCKind.tk_string), null);
            obj.addElement(nestedObj);
        }
       
        reader.readSequence(obj);
        int length = obj.getElements().size();
        for (int i = 0; i < length; ++i) {
            assertTrue(((CorbaPrimitiveHandler)obj.getElement(i)).getDataFromValue().equals(data[i]));
        }
    }
View Full Code Here

        seqType.setElemtype(stringIdlType);       
        // name and respoitory ID of the sequence are not needed for this test

        // build the object holder for a sequence.
        TypeCode seqTC = orb.create_sequence_tc(data.length, orb.get_primitive_tc(TCKind.tk_string));
        CorbaSequenceHandler obj = new CorbaSequenceHandler(new QName("Seq"), seqIdlType, seqTC, seqType);
        for (int i = 0; i < data.length; ++i) {
            CorbaPrimitiveHandler nestedObj =
                new CorbaPrimitiveHandler(new QName("item"), stringIdlType,
                                      orb.get_primitive_tc(TCKind.tk_string), null);
            obj.addElement(nestedObj);
        }
       
        reader.readSequence(obj);
        int length = obj.getElements().size();
        for (int i = 0; i < length; ++i) {
            assertTrue(((CorbaPrimitiveHandler)obj.getElement(i)).getValueData().equals(data[i]));
        }
    }
View Full Code Here

        seqType.setElemtype(stringIdlType);       
        // name and respoitory ID of the sequence are not needed for this test

        // build the object holder for a sequence.
        TypeCode seqTC = orb.create_sequence_tc(data.length, orb.get_primitive_tc(TCKind.tk_string));
        CorbaSequenceHandler obj = new CorbaSequenceHandler(new QName("Seq"), seqIdlType, seqTC, seqType);
        for (int i = 0; i < data.length; ++i) {
            CorbaPrimitiveHandler nestedObj =
                new CorbaPrimitiveHandler(new QName("item"), stringIdlType,
                                      orb.get_primitive_tc(TCKind.tk_string), null);
            nestedObj.setValueFromData(data[i]);
            obj.addElement(nestedObj);
        }
       
        Buffer buf = new Buffer();
        OutputStream oStream = new OutputStream(buf);
        CorbaObjectWriter writer =  new CorbaObjectWriter(oStream);
View Full Code Here

        TypeCode objTypeCode = CorbaUtils.getTypeCode(orb, objIdlType, staxBindingImpl.getCorbaTypeMaps());
        CorbaTypeImpl type = CorbaUtils.getCorbaType(objIdlType, staxBindingImpl.getCorbaTypeMaps());
        assertTrue(type instanceof Sequence);

        Sequence seqType = (Sequence)type;
        CorbaSequenceHandler obj = new CorbaSequenceHandler(objName, objIdlType, objTypeCode, seqType);
        assertNotNull(obj);

        List<CorbaObjectHandler> objElements = new ArrayList<CorbaObjectHandler>();
        short seqData[] = { 1, 3, 5, 7 };
        for (int i = 0 ; i < seqData.length; ++i) {
            QName elName = new QName("item");
            QName elIdlType = CorbaConstants.NT_CORBA_SHORT;
            TypeCode elTC = orb.get_primitive_tc(TCKind.tk_short);
            CorbaPrimitiveHandler el = new CorbaPrimitiveHandler(elName, elIdlType, elTC, null);
            el.setValue(Short.valueOf(seqData[i]));
            obj.addElement(el);
            objElements.add(el);
        }
       
        XMLInputFactory inputFactory = XMLInputFactory.newInstance();
        XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
        outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE);
     
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        XMLEventWriter evtWriter = null;
        try {
            evtWriter = outputFactory.createXMLEventWriter(outStream);
        } catch (XMLStreamException ex) {
        }
        assertNotNull(evtWriter);
       
        try {
            XMLEventFactory factory = XMLEventFactory.newInstance();
            StartElement startEl = factory.createStartElement(obj.getName(), null, null);
            evtWriter.add(startEl);
            staxBindingImpl.writeSequenceToStax(obj, evtWriter, factory);
            EndElement endEl = factory.createEndElement(obj.getName(), null);
            evtWriter.add(endEl);
            evtWriter.flush();
        } catch (XMLStreamException ex) {
           
        }

        ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray());       
        XMLEventReader evtReader = null;
        try {           
            evtReader = inputFactory.createXMLEventReader(inStream);
            // read the first tag which should be a start document
            XMLEvent evt = evtReader.nextEvent();
            assertTrue(evt.isStartDocument());
        } catch (XMLStreamException ex) {
        }
        assertNotNull(evtReader);
       
        CorbaObjectHandler result = staxBindingImpl.readSequenceFromStax(evtReader,
                                                                     obj.getIdlType(),
                                                                     obj.getTypeCode());
        assertNotNull(result);
       
        assertTrue(result instanceof CorbaSequenceHandler);
        CorbaSequenceHandler resultObj = (CorbaSequenceHandler)result;
       
        assertTrue(resultObj.getName().equals(obj.getName()));
        assertTrue(resultObj.getIdlType().equals(obj.getIdlType()));
        assertTrue(resultObj.getTypeCode().equal(obj.getTypeCode()));
        List<CorbaObjectHandler> resultElements = resultObj.getElements();
        for (int i = 0; i < resultElements.size(); ++i) {
            assertTrue(resultElements.get(i) instanceof CorbaPrimitiveHandler);
            CorbaPrimitiveHandler resultEl = (CorbaPrimitiveHandler)resultElements.get(i);
            CorbaPrimitiveHandler objEl = (CorbaPrimitiveHandler)objElements.get(i);
            assertTrue(resultEl.getValueData().equals(objEl.getValueData()));
View Full Code Here

TOP

Related Classes of org.apache.yoko.bindings.corba.types.CorbaSequenceHandler

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.