Search in sources :

Example 6 with Array

use of org.apache.cxf.binding.corba.wsdl.Array in project cxf by apache.

the class WSDLToIDLAction method createType.

protected IdlType createType(QName idlType, String[] name, CorbaType corbaType) throws Exception {
    if (idlType.getLocalPart().equals("CORBA.Object")) {
        return IdlInterface.create(null, "Object");
    }
    CorbaType corbaTypeImpl = corbaType;
    if (corbaTypeImpl == null) {
        corbaTypeImpl = getCorbaType(idlType);
    }
    if (corbaTypeImpl == null) {
        String msgStr = "Type " + idlType.getLocalPart() + " not found.";
        org.apache.cxf.common.i18n.Message msg = new org.apache.cxf.common.i18n.Message(msgStr, LOG);
        throw new Exception(msg.toString());
    }
    IdlScopeBase scope = root;
    StringBuilder dotScopedName = new StringBuilder("");
    for (int i = 0; i < name.length - 1; ++i) {
        dotScopedName.append(name[i]);
        // name array.
        if ("CORBA".equals(dotScopedName.toString()) && name.length == 2 && i == 0 && name[1].equals("Object")) {
            break;
        }
        IdlDefn idlDef = scope.lookup(name[i]);
        if (idlDef == null) {
            // Before creating module, check to see if a Corba type
            // represent this name aleady exists.
            // For example if type is a.b.c and we are about to create
            // module b, look to see if a.b
            // is an interface that needs to be processed
            QName qname = new QName(corbaTypeImpl.getType().getNamespaceURI(), dotScopedName.toString());
            // Check to see if CORBAType exists. If so, create type for it
            // otherwise
            // create module for this scope
            CorbaType possibleCorbaType = getCorbaType(qname);
            if (possibleCorbaType != null) {
                idlDef = findType(qname);
            }
            if (idlDef == null) {
                idlDef = IdlModule.create(scope, name[i]);
                scope.addToScope(idlDef);
            }
        }
        dotScopedName.append(".");
        scope = (IdlScopeBase) idlDef;
    }
    IdlType result = null;
    String local = name[name.length - 1];
    if (corbaTypeImpl instanceof Enum) {
        result = createEnum((Enum) corbaTypeImpl, scope, local);
    } else if (corbaTypeImpl instanceof Sequence) {
        result = createSequence((Sequence) corbaTypeImpl, scope, local);
    } else if (corbaTypeImpl instanceof Anonsequence) {
        result = createAnonSequence((Anonsequence) corbaTypeImpl, scope, local);
    } else if (corbaTypeImpl instanceof org.apache.cxf.binding.corba.wsdl.Exception) {
        result = createIdlException((org.apache.cxf.binding.corba.wsdl.Exception) corbaTypeImpl, scope, local);
    } else if (corbaTypeImpl instanceof Struct) {
        result = createStruct((Struct) corbaTypeImpl, scope, local);
    } else if (corbaTypeImpl instanceof Union) {
        result = createUnion((Union) corbaTypeImpl, scope, local);
    } else if (corbaTypeImpl instanceof Alias) {
        result = createTypedef((Alias) corbaTypeImpl, scope, local);
    } else if (corbaTypeImpl instanceof Array) {
        result = createArray((Array) corbaTypeImpl, scope, local);
    } else if (corbaTypeImpl instanceof Anonarray) {
        result = createAnonArray((Anonarray) corbaTypeImpl, scope, local);
    } else if (corbaTypeImpl instanceof Fixed) {
        result = createFixed((Fixed) corbaTypeImpl, scope, local);
    } else if (corbaTypeImpl instanceof Anonfixed) {
        result = createAnonFixed((Anonfixed) corbaTypeImpl, scope, local);
    } else if (corbaTypeImpl instanceof Const) {
        result = createConst((Const) corbaTypeImpl, scope, local);
    } else {
        result = checkAnon(corbaTypeImpl, scope, local);
    }
    if (result == null && corbaTypeImpl instanceof org.apache.cxf.binding.corba.wsdl.Object) {
        result = createInterface((org.apache.cxf.binding.corba.wsdl.Object) corbaTypeImpl, scope, local);
    }
    return result;
}
Also used : IdlEnum(org.apache.cxf.tools.corba.common.idltypes.IdlEnum) Enum(org.apache.cxf.binding.corba.wsdl.Enum) IdlString(org.apache.cxf.tools.corba.common.idltypes.IdlString) IdlType(org.apache.cxf.tools.corba.common.idltypes.IdlType) Union(org.apache.cxf.binding.corba.wsdl.Union) IdlUnion(org.apache.cxf.tools.corba.common.idltypes.IdlUnion) IdlStruct(org.apache.cxf.tools.corba.common.idltypes.IdlStruct) Struct(org.apache.cxf.binding.corba.wsdl.Struct) Anonarray(org.apache.cxf.binding.corba.wsdl.Anonarray) IdlFixed(org.apache.cxf.tools.corba.common.idltypes.IdlFixed) IdlAnonFixed(org.apache.cxf.tools.corba.common.idltypes.IdlAnonFixed) Fixed(org.apache.cxf.binding.corba.wsdl.Fixed) QName(javax.xml.namespace.QName) IdlDefn(org.apache.cxf.tools.corba.common.idltypes.IdlDefn) Const(org.apache.cxf.binding.corba.wsdl.Const) IdlConst(org.apache.cxf.tools.corba.common.idltypes.IdlConst) IdlScopeBase(org.apache.cxf.tools.corba.common.idltypes.IdlScopeBase) IdlAnonSequence(org.apache.cxf.tools.corba.common.idltypes.IdlAnonSequence) Sequence(org.apache.cxf.binding.corba.wsdl.Sequence) IdlSequence(org.apache.cxf.tools.corba.common.idltypes.IdlSequence) IdlException(org.apache.cxf.tools.corba.common.idltypes.IdlException) IdlAnonArray(org.apache.cxf.tools.corba.common.idltypes.IdlAnonArray) Array(org.apache.cxf.binding.corba.wsdl.Array) IdlArray(org.apache.cxf.tools.corba.common.idltypes.IdlArray) Anonfixed(org.apache.cxf.binding.corba.wsdl.Anonfixed) CorbaType(org.apache.cxf.binding.corba.wsdl.CorbaType) Alias(org.apache.cxf.binding.corba.wsdl.Alias) Anonsequence(org.apache.cxf.binding.corba.wsdl.Anonsequence)

Example 7 with Array

use of org.apache.cxf.binding.corba.wsdl.Array in project cxf by apache.

the class ArrayVisitor method generateCorbaArray.

private Array generateCorbaArray(Scope scopedName, Long size, CorbaType type, XmlSchemaType stype, Scope fQName) {
    Array array = new Array();
    array.setQName(new QName(typeMap.getTargetNamespace(), scopedName.toString()));
    array.setBound(size);
    array.setRepositoryID(scopedName.toIDLRepositoryID());
    array.setType(stype.getQName());
    // REVISIT, if we add qualification option, then change below.
    array.setElemname(new QName("", ELEMENT_NAME));
    if (type != null) {
        array.setElemtype(type.getQName());
    } else {
        ArrayDeferredAction arrayAction = new ArrayDeferredAction(array);
        wsdlVisitor.getDeferredActions().add(fQName, arrayAction);
    }
    return array;
}
Also used : Array(org.apache.cxf.binding.corba.wsdl.Array) QName(javax.xml.namespace.QName)

Example 8 with Array

use of org.apache.cxf.binding.corba.wsdl.Array in project cxf by apache.

the class CorbaHandlerUtils method initializeArrayHandler.

public static void initializeArrayHandler(ORB orb, CorbaObjectHandler obj, CorbaTypeMap typeMap, ServiceInfo serviceInfo, Map<QName, CorbaObjectHandler> seenTypes) {
    QName arrayElementType = null;
    long arrayBound = 0;
    CorbaType baseType = obj.getType();
    QName elementName;
    if (baseType instanceof Array) {
        Array arrayType = (Array) baseType;
        arrayElementType = arrayType.getElemtype();
        arrayBound = arrayType.getBound();
        elementName = arrayType.getElemname();
    } else {
        Anonarray anonArrayType = (Anonarray) baseType;
        arrayElementType = anonArrayType.getElemtype();
        arrayBound = anonArrayType.getBound();
        elementName = anonArrayType.getElemname();
    }
    for (int i = 0; i < arrayBound; ++i) {
        CorbaObjectHandler elementObj = initializeObjectHandler(orb, elementName, arrayElementType, typeMap, serviceInfo, seenTypes);
        ((CorbaArrayHandler) obj).addElement(elementObj);
    }
}
Also used : Array(org.apache.cxf.binding.corba.wsdl.Array) CorbaType(org.apache.cxf.binding.corba.wsdl.CorbaType) QName(javax.xml.namespace.QName) Anonarray(org.apache.cxf.binding.corba.wsdl.Anonarray)

Example 9 with Array

use of org.apache.cxf.binding.corba.wsdl.Array in project cxf by apache.

the class CorbaUtils method getComplexTypeCode.

public static TypeCode getComplexTypeCode(ORB orb, QName type, Object obj, CorbaTypeMap typeMap, Stack<QName> seenTypes) {
    TypeCode tc = getAnonTypeCode(orb, type, obj, typeMap, seenTypes);
    if (tc == null) {
        if (obj instanceof Alias) {
            Alias aliasType = (Alias) obj;
            tc = orb.create_alias_tc(aliasType.getRepositoryID(), getTypeCodeName(aliasType.getName()), getTypeCode(orb, aliasType.getBasetype(), typeMap, seenTypes));
        } else if (obj instanceof Array) {
            Array arrayType = (Array) obj;
            tc = orb.create_array_tc((int) arrayType.getBound(), getTypeCode(orb, arrayType.getElemtype(), typeMap, seenTypes));
        } else if (obj instanceof Enum) {
            Enum enumType = (Enum) obj;
            String name = enumType.getName();
            List<Enumerator> enums = enumType.getEnumerator();
            String[] members = new String[enums.size()];
            for (int i = 0; i < members.length; ++i) {
                members[i] = enums.get(i).getValue();
            }
            name = getTypeCodeName(name);
            tc = orb.create_enum_tc(enumType.getRepositoryID(), name, members);
        } else if (obj instanceof Exception) {
            Exception exceptType = (Exception) obj;
            List<MemberType> list = exceptType.getMember();
            StructMember[] members = new StructMember[list.size()];
            for (int i = 0; i < members.length; ++i) {
                MemberType member = list.get(i);
                members[i] = new StructMember(member.getName(), getTypeCode(orb, member.getIdltype(), typeMap, seenTypes), null);
            }
            String name = getTypeCodeName(exceptType.getName());
            tc = orb.create_exception_tc(exceptType.getRepositoryID(), name, members);
        } else if (obj instanceof Fixed) {
            Fixed fixedType = (Fixed) obj;
            tc = orb.create_fixed_tc((short) fixedType.getDigits(), (short) fixedType.getScale());
        } else if (obj instanceof org.apache.cxf.binding.corba.wsdl.Object) {
            org.apache.cxf.binding.corba.wsdl.Object objType = (org.apache.cxf.binding.corba.wsdl.Object) obj;
            if (objType.getName().equals("CORBA.Object")) {
                tc = orb.create_interface_tc(objType.getRepositoryID(), "Object");
            } else {
                tc = orb.create_interface_tc(objType.getRepositoryID(), getTypeCodeName(objType.getName()));
            }
        } else if (obj instanceof Sequence) {
            Sequence seqType = (Sequence) obj;
            tc = orb.create_sequence_tc((int) seqType.getBound(), getTypeCode(orb, seqType.getElemtype(), typeMap, seenTypes));
        } else if (obj instanceof Struct) {
            Struct structType = (Struct) obj;
            if (seenTypes.contains(new QName(structType.getName()))) {
                tc = orb.create_recursive_tc(structType.getRepositoryID());
            } else {
                seenTypes.push(new QName(structType.getName()));
                List<MemberType> list = structType.getMember();
                StructMember[] members = new StructMember[list.size()];
                for (int i = 0; i < members.length; ++i) {
                    MemberType member = list.get(i);
                    members[i] = new StructMember(member.getName(), getTypeCode(orb, member.getIdltype(), typeMap, seenTypes), null);
                }
                String name = getTypeCodeName(structType.getName());
                tc = orb.create_struct_tc(structType.getRepositoryID(), name, members);
                seenTypes.pop();
            }
        } else if (obj instanceof Union) {
            tc = getUnionTypeCode(orb, obj, typeMap, seenTypes);
        }
    }
    return tc;
}
Also used : Enum(org.apache.cxf.binding.corba.wsdl.Enum) Union(org.apache.cxf.binding.corba.wsdl.Union) Struct(org.apache.cxf.binding.corba.wsdl.Struct) Enumerator(org.apache.cxf.binding.corba.wsdl.Enumerator) NVList(org.omg.CORBA.NVList) List(java.util.List) Fixed(org.apache.cxf.binding.corba.wsdl.Fixed) TypeCode(org.omg.CORBA.TypeCode) QName(javax.xml.namespace.QName) Sequence(org.apache.cxf.binding.corba.wsdl.Sequence) StructMember(org.omg.CORBA.StructMember) Exception(org.apache.cxf.binding.corba.wsdl.Exception) CorbaBindingException(org.apache.cxf.binding.corba.CorbaBindingException) Array(org.apache.cxf.binding.corba.wsdl.Array) MemberType(org.apache.cxf.binding.corba.wsdl.MemberType) Alias(org.apache.cxf.binding.corba.wsdl.Alias)

Example 10 with Array

use of org.apache.cxf.binding.corba.wsdl.Array in project cxf by apache.

the class WSDLToCorbaBindingTest method assertMixedArraysMappingEasyTypes.

/**
 * @param typeMap
 */
private void assertMixedArraysMappingEasyTypes(CorbaTypeMap typeMap) {
    Sequence p1 = (Sequence) typeMap.getType("p1-unwrapped-sequenceArray");
    assertEquals(new QName("", "p1-unwrapped-sequence"), p1.getElemname());
    assertEquals(new QName(CorbaConstants.NU_WSDL_CORBA, "string"), p1.getElemtype());
    Sequence p1q = (Sequence) typeMap.getType("p1-unwrapped-sequence-qArray");
    assertEquals(new QName("http://schemas.apache.org/idltypes/anon.idl", "p1-unwrapped-sequence-q"), p1q.getElemname());
    assertFalse(p1.isWrapped());
    Sequence p2 = (Sequence) typeMap.getType("UnboundedArray");
    assertEquals(new QName("", "item"), p2.getElemname());
    assertEquals(new QName(CorbaConstants.NU_WSDL_CORBA, "string"), p2.getElemtype());
    assertTrue(p2.isWrapped());
    Array p3 = (Array) typeMap.getType("p3-unwrapped-arrayArray");
    assertEquals(new QName("", "p3-unwrapped-array"), p3.getElemname());
    assertEquals(new QName(CorbaConstants.NU_WSDL_CORBA, "string"), p3.getElemtype());
    Array p3q = (Array) typeMap.getType("p3-unwrapped-array-qArray");
    assertEquals(new QName("http://schemas.apache.org/idltypes/anon.idl", "p3-unwrapped-array-q"), p3q.getElemname());
    assertFalse(p3.isWrapped());
    Array p4 = (Array) typeMap.getType("FixedArray");
    assertEquals(new QName("", "item"), p4.getElemname());
    assertEquals(new QName(CorbaConstants.NU_WSDL_CORBA, "string"), p4.getElemtype());
    assertTrue(p4.isWrapped());
    Sequence p5 = (Sequence) typeMap.getType("p5-anonymous-unwrapped-sequenceArray");
    assertEquals(new QName("", "p5-anonymous-unwrapped-sequence"), p5.getElemname());
    assertEquals(new QName(CorbaConstants.NU_WSDL_CORBA, "string"), p5.getElemtype());
    Sequence p5q = (Sequence) typeMap.getType("p5-anonymous-unwrapped-sequence-qArray");
    assertEquals(new QName("http://schemas.apache.org/idltypes/anon.idl", "p5-anonymous-unwrapped-sequence-q"), p5q.getElemname());
    assertFalse(p5.isWrapped());
    Anonsequence p6 = (Anonsequence) typeMap.getType("MixedArrayType.p6-anonymous-wrapped-sequenceType");
    assertEquals(new QName("", "item"), p6.getElemname());
    assertEquals(new QName(CorbaConstants.NU_WSDL_CORBA, "string"), p6.getElemtype());
    assertFalse(p6.isQualified());
    assertTrue(p6.isWrapped());
    Anonsequence p6q = (Anonsequence) typeMap.getType("MixedArrayType.p6-anonymous-wrapped-sequence-qType");
    assertEquals(new QName("http://schemas.apache.org/idltypes/anon.idl", "item"), p6q.getElemname());
    assertEquals(new QName(CorbaConstants.NU_WSDL_CORBA, "string"), p6q.getElemtype());
    assertTrue(p6q.isQualified());
    assertTrue(p6q.isWrapped());
    Array p7 = (Array) typeMap.getType("p7-anonymous-unwrapped-arrayArray");
    assertEquals(new QName("", "p7-anonymous-unwrapped-array"), p7.getElemname());
    assertEquals(new QName(CorbaConstants.NU_WSDL_CORBA, "string"), p7.getElemtype());
    assertFalse(p7.isQualified());
    assertFalse(p7.isWrapped());
    Array p7q = (Array) typeMap.getType("p7-anonymous-unwrapped-array-qArray");
    assertEquals(new QName("http://schemas.apache.org/idltypes/anon.idl", "p7-anonymous-unwrapped-array-q"), p7q.getElemname());
    assertEquals(new QName(CorbaConstants.NU_WSDL_CORBA, "string"), p7q.getElemtype());
    assertTrue(p7q.isQualified());
    assertFalse(p7q.isWrapped());
    Anonarray p8 = (Anonarray) typeMap.getType("MixedArrayType.p8-anonymous-wrapped-arrayType");
    assertEquals(new QName("", "item"), p8.getElemname());
    assertEquals(new QName(CorbaConstants.NU_WSDL_CORBA, "string"), p8.getElemtype());
    assertFalse(p8.isQualified());
    assertTrue(p8.isWrapped());
    Anonarray p8q = (Anonarray) typeMap.getType("MixedArrayType.p8-anonymous-wrapped-array-qType");
    assertEquals(new QName("http://schemas.apache.org/idltypes/anon.idl", "item"), p8q.getElemname());
    assertEquals(new QName(CorbaConstants.NU_WSDL_CORBA, "string"), p8q.getElemtype());
    assertTrue(p8q.isQualified());
    assertTrue(p8q.isWrapped());
}
Also used : Array(org.apache.cxf.binding.corba.wsdl.Array) QName(javax.xml.namespace.QName) Sequence(org.apache.cxf.binding.corba.wsdl.Sequence) Anonarray(org.apache.cxf.binding.corba.wsdl.Anonarray) Anonsequence(org.apache.cxf.binding.corba.wsdl.Anonsequence)

Aggregations

Array (org.apache.cxf.binding.corba.wsdl.Array)11 QName (javax.xml.namespace.QName)9 Anonarray (org.apache.cxf.binding.corba.wsdl.Anonarray)6 CorbaType (org.apache.cxf.binding.corba.wsdl.CorbaType)4 Test (org.junit.Test)4 Anonsequence (org.apache.cxf.binding.corba.wsdl.Anonsequence)3 Sequence (org.apache.cxf.binding.corba.wsdl.Sequence)3 Struct (org.apache.cxf.binding.corba.wsdl.Struct)3 TypeCode (org.omg.CORBA.TypeCode)3 CorbaArrayHandler (org.apache.cxf.binding.corba.types.CorbaArrayHandler)2 CorbaPrimitiveHandler (org.apache.cxf.binding.corba.types.CorbaPrimitiveHandler)2 Alias (org.apache.cxf.binding.corba.wsdl.Alias)2 Enum (org.apache.cxf.binding.corba.wsdl.Enum)2 Fixed (org.apache.cxf.binding.corba.wsdl.Fixed)2 Union (org.apache.cxf.binding.corba.wsdl.Union)2 InputStream (org.omg.CORBA.portable.InputStream)2 OutputStream (org.omg.CORBA.portable.OutputStream)2 File (java.io.File)1 HashMap (java.util.HashMap)1 List (java.util.List)1