You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yoko-commits@incubator.apache.org by br...@apache.org on 2007/03/28 12:55:27 UTC
svn commit: r523301 - in
/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba:
runtime/CorbaStaxObject.java types/CorbaHandlerUtils.java
utils/CorbaUtils.java
Author: bravi
Date: Wed Mar 28 05:55:26 2007
New Revision: 523301
URL: http://svn.apache.org/viewvc?view=rev&rev=523301
Log:
[YOKO-314] - Adding alias type support.
Modified:
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStaxObject.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStaxObject.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStaxObject.java?view=diff&rev=523301&r1=523300&r2=523301
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStaxObject.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStaxObject.java Wed Mar 28 05:55:26 2007
@@ -43,6 +43,7 @@
import org.apache.cxf.service.model.ServiceInfo;
import org.apache.cxf.wsdl11.WSDLServiceBuilder;
+import org.apache.schemas.yoko.bindings.corba.Alias;
import org.apache.schemas.yoko.bindings.corba.Anonarray;
import org.apache.schemas.yoko.bindings.corba.Anonsequence;
import org.apache.schemas.yoko.bindings.corba.Array;
@@ -166,6 +167,18 @@
boolean isNested)
throws CorbaBindingException {
TypeCode tc = CorbaUtils.getTypeCode(orb, idlType, typeMaps);
+ try {
+ while (tc.kind().value() == TCKind._tk_alias) {
+ Alias alias = (Alias) CorbaUtils.getCorbaType(idlType, typeMaps);
+ if (alias == null) {
+ throw new CorbaBindingException("Couldn't find corba alias type: " + idlType);
+ }
+ tc = tc.content_type();
+ idlType = alias.getBasetype();
+ }
+ } catch (Throwable ex) {
+ throw new CorbaBindingException(ex);
+ }
CorbaObjectHandler obj = null;
if (CorbaUtils.isPrimitiveIdlType(idlType)) {
LOG.log(Level.INFO, "Reading primitive type from XML reader");
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java?view=diff&rev=523301&r1=523300&r2=523301
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java Wed Mar 28 05:55:26 2007
@@ -25,6 +25,7 @@
import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.schemas.yoko.bindings.corba.Alias;
import org.apache.schemas.yoko.bindings.corba.Anonarray;
import org.apache.schemas.yoko.bindings.corba.Anonsequence;
import org.apache.schemas.yoko.bindings.corba.Array;
@@ -44,6 +45,7 @@
import org.apache.ws.commons.schema.XmlSchemaObjectCollection;
import org.apache.ws.commons.schema.XmlSchemaType;
+import org.apache.yoko.bindings.corba.CorbaBindingException;
import org.apache.yoko.bindings.corba.CorbaTypeMap;
import org.apache.yoko.bindings.corba.utils.CorbaUtils;
import org.apache.yoko.wsdl.CorbaTypeImpl;
@@ -62,6 +64,18 @@
ServiceInfo serviceInfo) {
CorbaObjectHandler handler = null;
TypeCode tc = CorbaUtils.getTypeCode(orb, idlType, typeMaps);
+ try {
+ while (tc.kind().value() == TCKind._tk_alias) {
+ Alias alias = (Alias) CorbaUtils.getCorbaType(idlType, typeMaps);
+ if (alias == null) {
+ throw new CorbaBindingException("Couldn't find corba alias type: " + idlType);
+ }
+ tc = tc.content_type();
+ idlType = alias.getBasetype();
+ }
+ } catch (Throwable ex) {
+ throw new CorbaBindingException(ex);
+ }
if (CorbaUtils.isPrimitiveIdlType(idlType)) {
// Any is a special primitive
if (tc.kind().value() == TCKind._tk_any) {
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java?view=diff&rev=523301&r1=523300&r2=523301
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java Wed Mar 28 05:55:26 2007
@@ -34,7 +34,7 @@
import org.apache.cxf.service.model.SchemaInfo;
import org.apache.cxf.service.model.ServiceInfo;
-//import org.apache.schemas.yoko.bindings.corba.Alias;
+import org.apache.schemas.yoko.bindings.corba.Alias;
import org.apache.schemas.yoko.bindings.corba.Anonarray;
import org.apache.schemas.yoko.bindings.corba.Anonfixed;
import org.apache.schemas.yoko.bindings.corba.Anonsequence;
@@ -115,6 +115,9 @@
}
tc = getComplexTypeCode(orb, type, obj, typeMaps);
}
+ if (tc == null) {
+ throw new CorbaBindingException("Corba type node with qname " + type + " is not supported");
+ }
return tc;
}
@@ -139,16 +142,83 @@
public static TypeCode getComplexTypeCode(ORB orb, QName type, Object obj, List<CorbaTypeMap> typeMaps) {
- TypeCode tc = null;
+ TypeCode tc = getAnonTypeCode(orb, type, obj, typeMaps);
- // Split all of these up into separate get*** methods. One big method will not satisfy checkstyle
- // rules
- //if (obj instanceof Alias) {
- // Alias aliasType = (Alias)obj;
- // tc = orb.create_alias_tc(aliasType.getRepositoryID(),
- // aliasType.getName(),
- // getTypeCode(orb, aliasType.getBasetype(), typeMaps));
- //} else if (obj instanceof Anonarray) {
+ if (tc == null) {
+ if (obj instanceof Alias) {
+ Alias aliasType = (Alias)obj;
+ tc = orb.create_alias_tc(aliasType.getRepositoryID(),
+ aliasType.getName(),
+ getTypeCode(orb, aliasType.getBasetype(), typeMaps));
+ } else if (obj instanceof Array) {
+ Array arrayType = (Array)obj;
+ tc = orb.create_array_tc((int) arrayType.getBound(),
+ getTypeCode(orb, arrayType.getElemtype(), typeMaps));
+ //} else if (obj instanceof Const) {
+ // Const constType = (Const)obj;
+ // tc = getTypeCode(orb, constType.getIdltype(), typeMaps);
+ } else if (obj instanceof Enum) {
+ Enum enumType = (Enum)obj;
+ String name = enumType.getName();
+ List enums = enumType.getEnumerator();
+ String[] members = new String[enums.size()];
+
+ for (int i = 0; i < members.length; ++i) {
+ members[i] = ((Enumerator) 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;
+
+ // TODO: check to see if this is a recursive type.
+ List list = exceptType.getMember();
+ StructMember[] members = new StructMember[list.size()];
+ for (int i = 0; i < members.length; ++i) {
+ MemberType member = (MemberType) list.get(i);
+ members[i] = new StructMember(member.getName(),
+ getTypeCode(orb, member.getIdltype(), typeMaps), 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.schemas.yoko.bindings.corba.Object) {
+ org.apache.schemas.yoko.bindings.corba.Object objType =
+ (org.apache.schemas.yoko.bindings.corba.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(), typeMaps));
+ } else if (obj instanceof Struct) {
+ Struct structType = (Struct)obj;
+
+ // TODO: check to see if this is a recursive type.
+ List list = structType.getMember();
+ StructMember[] members = new StructMember[list.size()];
+ for (int i = 0; i < members.length; ++i) {
+ MemberType member = (MemberType) list.get(i);
+ members[i] = new StructMember(member.getName(),
+ getTypeCode(orb, member.getIdltype(), typeMaps), null);
+ }
+ String name = getTypeCodeName(structType.getName());
+ tc = orb.create_struct_tc(structType.getRepositoryID(), name, members);
+ } else if (obj instanceof Union) {
+ tc = getUnionTypeCode(orb, obj, typeMaps);
+ }
+ }
+ return tc;
+ }
+
+ private static TypeCode getAnonTypeCode(ORB orb, QName type, Object obj, List<CorbaTypeMap> typeMaps) {
+ TypeCode tc = null;
if (obj instanceof Anonarray) {
Anonarray anonArrayType = (Anonarray)obj;
tc = orb.create_array_tc((int) anonArrayType.getBound(),
@@ -166,71 +236,10 @@
} else if (obj instanceof Anonwstring) {
Anonwstring anonWStringType = (Anonwstring)obj;
tc = orb.create_wstring_tc((int)anonWStringType.getBound());
- } else if (obj instanceof Array) {
- Array arrayType = (Array)obj;
- tc = orb.create_array_tc((int) arrayType.getBound(),
- getTypeCode(orb, arrayType.getElemtype(), typeMaps));
- //} else if (obj instanceof Const) {
- // Const constType = (Const)obj;
- // tc = getTypeCode(orb, constType.getIdltype(), typeMaps);
- } else if (obj instanceof Enum) {
- Enum enumType = (Enum)obj;
- String name = enumType.getName();
- List enums = enumType.getEnumerator();
- String[] members = new String[enums.size()];
-
- for (int i = 0; i < members.length; ++i) {
- members[i] = ((Enumerator) 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;
-
- // TODO: check to see if this is a recursive type.
- List list = exceptType.getMember();
- StructMember[] members = new StructMember[list.size()];
- for (int i = 0; i < members.length; ++i) {
- MemberType member = (MemberType) list.get(i);
- members[i] = new StructMember(member.getName(),
- getTypeCode(orb, member.getIdltype(), typeMaps), 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.schemas.yoko.bindings.corba.Object) {
- org.apache.schemas.yoko.bindings.corba.Object objType =
- (org.apache.schemas.yoko.bindings.corba.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(), typeMaps));
- } else if (obj instanceof Struct) {
- Struct structType = (Struct)obj;
-
- // TODO: check to see if this is a recursive type.
- List list = structType.getMember();
- StructMember[] members = new StructMember[list.size()];
- for (int i = 0; i < members.length; ++i) {
- MemberType member = (MemberType) list.get(i);
- members[i] = new StructMember(member.getName(),
- getTypeCode(orb, member.getIdltype(), typeMaps), null);
- }
- String name = getTypeCodeName(structType.getName());
- tc = orb.create_struct_tc(structType.getRepositoryID(), name, members);
- } else if (obj instanceof Union) {
- tc = getUnionTypeCode(orb, obj, typeMaps);
}
return tc;
}
-
+
public static TypeCode getUnionTypeCode(ORB orb, Object obj, List<CorbaTypeMap> typeMaps) {
Union unionType = (Union)obj;