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/05/21 17:03:35 UTC
svn commit: r540203 [2/2] - in
/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba:
./ interceptors/ runtime/ types/ utils/
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterSequenceEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterSequenceEventProducer.java?view=diff&rev=540203&r1=540202&r2=540203
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterSequenceEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterSequenceEventProducer.java Mon May 21 10:03:31 2007
@@ -18,19 +18,25 @@
*/
package org.apache.yoko.bindings.corba.types;
-import java.util.List;
-
import javax.xml.namespace.QName;
+import org.apache.cxf.service.model.ServiceInfo;
+
import org.apache.yoko.bindings.corba.CorbaTypeMap;
+import org.omg.CORBA.ORB;
+
public class ParameterSequenceEventProducer extends AbstractStartEndEventProducer {
public ParameterSequenceEventProducer(QName wrapperElementQName,
HandlerIterator paramIterator,
- List<CorbaTypeMap> typeMaps) {
+ CorbaTypeMap typeMap,
+ ServiceInfo service,
+ ORB orbRef) {
name = wrapperElementQName;
iterator = paramIterator;
- this.typeMaps = typeMaps;
+ this.typeMap = typeMap;
+ serviceInfo = service;
+ orb = orbRef;
}
}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java?view=diff&rev=540203&r1=540202&r2=540203
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java Mon May 21 10:03:31 2007
@@ -85,41 +85,32 @@
return EMPTY_QNAME;
}
- public static TypeCode getTypeCode(ORB orb, QName type, List<CorbaTypeMap> typeMaps) {
- return getTypeCode(orb, type, null, typeMaps);
+ public static TypeCode getTypeCode(ORB orb, QName type, CorbaTypeMap typeMap) {
+ return getTypeCode(orb, type, null, typeMap);
}
- public static TypeCode getTypeCode(ORB orb, QName type, CorbaType obj, List<CorbaTypeMap> typeMaps) {
+ public static TypeCode getTypeCode(ORB orb, QName type, CorbaType obj, CorbaTypeMap typeMap) {
TypeCode tc = null;
// first see if it is a primitive
tc = getPrimitiveTypeCode(orb, type);
if (tc == null) {
- // this means it is not a primitive type
- CorbaTypeMap currentMap = null;
- for (int i = 0; i < typeMaps.size(); ++i) {
- if (typeMaps.get(i).getTargetNamespace().equals(type.getNamespaceURI())) {
- currentMap = typeMaps.get(i);
- break;
- }
- }
-
- if (currentMap == null) {
+ if (typeMap == null) {
throw new CorbaBindingException("Unable to locate typemap for namespace \""
+ type.getNamespaceURI() + "\"");
}
- tc = currentMap.getTypeCode(type);
+ tc = typeMap.getTypeCode(type);
if (tc == null) {
if (obj == null) {
- obj = currentMap.getType(type.getLocalPart());
+ obj = typeMap.getType(type.getLocalPart());
if (obj == null) {
throw new CorbaBindingException("Unable to locate object definition");
}
}
- tc = getComplexTypeCode(orb, type, obj, typeMaps);
+ tc = getComplexTypeCode(orb, type, obj, typeMap);
if (tc != null) {
- currentMap.addTypeCode(type, tc);
+ typeMap.addTypeCode(type, tc);
}
}
}
@@ -148,20 +139,20 @@
return null;
}
- public static TypeCode getComplexTypeCode(ORB orb, QName type, Object obj, List<CorbaTypeMap> typeMaps) {
+ public static TypeCode getComplexTypeCode(ORB orb, QName type, Object obj, CorbaTypeMap typeMap) {
- TypeCode tc = getAnonTypeCode(orb, type, obj, typeMaps);
+ TypeCode tc = getAnonTypeCode(orb, type, obj, typeMap);
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(), typeMaps));
+ getTypeCode(orb, aliasType.getBasetype(), typeMap));
} else if (obj instanceof Array) {
Array arrayType = (Array)obj;
tc = orb.create_array_tc((int) arrayType.getBound(),
- getTypeCode(orb, arrayType.getElemtype(), typeMaps));
+ getTypeCode(orb, arrayType.getElemtype(), typeMap));
} else if (obj instanceof Enum) {
Enum enumType = (Enum)obj;
String name = enumType.getName();
@@ -182,7 +173,7 @@
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);
+ getTypeCode(orb, member.getIdltype(), typeMap), null);
}
String name = getTypeCodeName(exceptType.getName());
tc = orb.create_exception_tc(exceptType.getRepositoryID(), name, members);
@@ -201,7 +192,7 @@
} else if (obj instanceof Sequence) {
Sequence seqType = (Sequence)obj;
tc = orb.create_sequence_tc((int) seqType.getBound(),
- getTypeCode(orb, seqType.getElemtype(), typeMaps));
+ getTypeCode(orb, seqType.getElemtype(), typeMap));
} else if (obj instanceof Struct) {
Struct structType = (Struct)obj;
@@ -211,30 +202,30 @@
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);
+ getTypeCode(orb, member.getIdltype(), typeMap), 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);
+ tc = getUnionTypeCode(orb, obj, typeMap);
}
}
return tc;
}
- private static TypeCode getAnonTypeCode(ORB orb, QName type, Object obj, List<CorbaTypeMap> typeMaps) {
+ private static TypeCode getAnonTypeCode(ORB orb, QName type, Object obj, CorbaTypeMap typeMap) {
TypeCode tc = null;
if (obj instanceof Anonarray) {
Anonarray anonArrayType = (Anonarray)obj;
tc = orb.create_array_tc((int) anonArrayType.getBound(),
- getTypeCode(orb, anonArrayType.getElemtype(), typeMaps));
+ getTypeCode(orb, anonArrayType.getElemtype(), typeMap));
} else if (obj instanceof Anonfixed) {
Anonfixed anonFixedType = (Anonfixed) obj;
tc = orb.create_fixed_tc((short) anonFixedType.getDigits(), (short) anonFixedType.getScale());
} else if (obj instanceof Anonsequence) {
Anonsequence anonSeqType = (Anonsequence)obj;
tc = orb.create_sequence_tc((int) anonSeqType.getBound(),
- getTypeCode(orb, anonSeqType.getElemtype(), typeMaps));
+ getTypeCode(orb, anonSeqType.getElemtype(), typeMap));
} else if (obj instanceof Anonstring) {
Anonstring anonStringType = (Anonstring)obj;
tc = orb.create_string_tc((int)anonStringType.getBound());
@@ -245,10 +236,10 @@
return tc;
}
- public static TypeCode getUnionTypeCode(ORB orb, Object obj, List<CorbaTypeMap> typeMaps) {
+ public static TypeCode getUnionTypeCode(ORB orb, Object obj, CorbaTypeMap typeMap) {
Union unionType = (Union)obj;
- TypeCode discTC = getTypeCode(orb, unionType.getDiscriminator(), typeMaps);
+ TypeCode discTC = getTypeCode(orb, unionType.getDiscriminator(), typeMap);
Map<String, UnionMember> members = new LinkedHashMap<String, UnionMember>();
List<Unionbranch> branches = unionType.getUnionbranch();
for (Iterator<Unionbranch> branchIter = branches.iterator(); branchIter.hasNext();) {
@@ -259,7 +250,7 @@
if (!members.containsKey(cs.getLabel())) {
UnionMember member = new UnionMember();
member.name = branch.getName();
- member.type = getTypeCode(orb, branch.getIdltype(), typeMaps);
+ member.type = getTypeCode(orb, branch.getIdltype(), typeMap);
member.label = orb.create_any();
// We need to insert the labels in a way that depends on the type of the discriminator.
// According to the CORBA specification, the following types are permissable as
@@ -297,7 +288,7 @@
break;
case TCKind._tk_enum:
org.omg.CORBA.portable.OutputStream out = member.label.create_output_stream();
- Enum enumVal = (Enum)getCorbaType(unionType.getDiscriminator(), typeMaps);
+ Enum enumVal = (Enum)getCorbaType(unionType.getDiscriminator(), typeMap);
List<Enumerator> enumerators = enumVal.getEnumerator();
for (int i = 0; i < enumerators.size(); ++i) {
Enumerator e = enumerators.get(i);
@@ -323,10 +314,9 @@
}
public static String getTypeCodeName(String name) {
- int pos = name.indexOf(".");
- while (pos != -1) {
+ int pos = name.lastIndexOf(".");
+ if (pos != -1) {
name = name.substring(pos + 1);
- pos = name.indexOf(".");
}
return name;
}
@@ -355,59 +345,40 @@
return PRIMITIVE_TYPECODES.values().contains(tc.kind());
}
- public static CorbaTypeImpl getCorbaType(QName idlType, List<CorbaTypeMap> typeMaps) {
+ public static CorbaTypeImpl getCorbaType(QName idlType, CorbaTypeMap typeMap) {
CorbaTypeMap currentMap = null;
- if (!isPrimitiveIdlType(idlType)) {
- for (int i = 0; i < typeMaps.size(); ++i) {
- currentMap = typeMaps.get(i);
- if (currentMap.getTargetNamespace().equals(idlType.getNamespaceURI())) {
- return (CorbaTypeImpl) currentMap.getType(idlType.getLocalPart());
- }
- }
+ if (!isPrimitiveIdlType(idlType) && (typeMap != null)) {
+ return (CorbaTypeImpl) typeMap.getType(idlType.getLocalPart());
}
return null;
}
- public static void createCorbaTypeMap(List<CorbaTypeMap> typeMaps, List<TypeMappingType> tmTypes) {
+ public static CorbaTypeMap createCorbaTypeMap(List<TypeMappingType> tmTypes) {
+ CorbaTypeMap map = null;
if (tmTypes != null) {
- for (int i = 0; i < tmTypes.size(); i++) {
- TypeMappingType tmType = tmTypes.get(i);
-
- CorbaTypeMap map = null;
- for (Iterator<CorbaTypeMap> it = typeMaps.iterator(); it.hasNext();) {
- CorbaTypeMap tm = it.next();
- if (tm.getTargetNamespace().equals(tmType.getTargetNamespace())) {
- LOG.info("Found an existing typemap with the same namespace");
- map = tm;
- break;
- }
- }
-
- if (map == null) {
- map = new CorbaTypeMap(tmType.getTargetNamespace());
- typeMaps.add(map);
+ //Currently, only one type map
+ TypeMappingType tmType = tmTypes.get(0);
+ map = new CorbaTypeMap(tmType.getTargetNamespace());
+
+ List<CorbaTypeImpl> types = tmType.getStructOrExceptionOrUnion();
+ LOG.info("Found " + types.size() + " types defined in the typemap");
+ for (Iterator<CorbaTypeImpl> it = types.iterator(); it.hasNext();) {
+ CorbaTypeImpl corbaType = it.next();
+ String name = corbaType.getName();
+ // There can be some instances where a prefix is added to the name by the tool
+ // (e.g. Object Reference Names). Since the name is read as a string, this
+ // prefix is added to the types name. Remove this as it is not needed.
+ int pos = name.lastIndexOf(":");
+ if (pos != -1) {
+ name = name.substring(pos + 1);
+ corbaType.setName(name);
}
-
- LOG.info("Found typemap in WSDL (Namespace: " + tmType.getTargetNamespace() + ")");
-
- List<CorbaTypeImpl> types = tmType.getStructOrExceptionOrUnion();
- LOG.info("Found " + types.size() + " types defined in the typemap");
- for (Iterator<CorbaTypeImpl> it = types.iterator(); it.hasNext();) {
- CorbaTypeImpl corbaType = it.next();
- String name = corbaType.getName();
- // There can be some instances where a prefix is added to the name by the tool
- // (e.g. Object Reference Names). Since the name is read as a string, this
- // prefix is added to the types name. Remove this as it is not needed.
- if (name.indexOf(':') >= 0) {
- name = name.substring(name.lastIndexOf(':') + 1);
- corbaType.setName(name);
- }
- map.addType(name, corbaType);
- LOG.info("Adding type " + name);
- }
+ map.addType(name, corbaType);
+ LOG.info("Adding type " + name);
}
}
+ return map;
}
public static void exportObjectReferenceToFile(org.omg.CORBA.Object obj, ORB orb, String iorFile)
@@ -528,6 +499,17 @@
return isAttributeFormQualified(extSchema.getSchema(), uri);
}
return false;
+ }
+
+
+ public static QName processQName(QName qname, ServiceInfo serviceInfo) {
+ QName result = qname;
+ if ((qname.getNamespaceURI() != null)
+ && (!qname.getNamespaceURI().equals(""))
+ && (!isElementFormQualified(serviceInfo, qname.getNamespaceURI()))) {
+ result = new QName("", qname.getLocalPart());
+ }
+ return result;
}
static {