svn commit: r1084548 - /axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java
Author: eranga Date: Wed Mar 23 11:46:40 2011 New Revision: 1084548 URL: http://svn.apache.org/viewvc?rev=1084548&view=rev Log: AXIS2-4780 - unions within structs not supported Modified: axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java Modified: axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java?rev=1084548&r1=1084547&r2=1084548&view=diff == --- axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java (original) +++ axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java Wed Mar 23 11:46:40 2011 @@ -338,6 +338,7 @@ public class IDLVisitor /*implements AST private DataType findDataType(AST typeNode, String parentName) throws InvalidIDLException { return findDataType(typeNode, parentName, true, false); } + private DataType findDataType(AST typeNode, String parentName, boolean root, boolean noTypeDefForSeqs) throws InvalidIDLException { // Check for sequences if (typeNode.getType()==IDLTokenTypes.LITERAL_sequence) { @@ -387,6 +388,36 @@ public class IDLVisitor /*implements AST } else { typeName = "long"; } +} else if (typeNode.getType() == IDLTokenTypes.LITERAL_struct) { +String innerModule = module + parentName + INNERTYPE_SUFFIX + CompositeDataType.MODULE_SEPERATOR; +Struct innerElem = visitStruct(typeNode); +innerElem.setModule(innerModule); +idl.addType(innerElem); +return innerElem; +} else if (typeNode.getType() == IDLTokenTypes.LITERAL_valuetype) { +String innerModule = module + parentName + INNERTYPE_SUFFIX + CompositeDataType.MODULE_SEPERATOR; +ValueType innerElem = visitValueType(typeNode); +innerElem.setModule(innerModule); +idl.addType(innerElem); +return innerElem; +} else if (typeNode.getType() == IDLTokenTypes.LITERAL_exception) { +String innerModule = module + parentName + INNERTYPE_SUFFIX + CompositeDataType.MODULE_SEPERATOR; +Struct innerElem = visitException(typeNode); +innerElem.setModule(innerModule); +idl.addType(innerElem); +return innerElem; +} else if (typeNode.getType() == IDLTokenTypes.LITERAL_enum) { +String innerModule = module + parentName + INNERTYPE_SUFFIX + CompositeDataType.MODULE_SEPERATOR; +EnumType innerElem = visitEnum(typeNode); +innerElem.setModule(innerModule); +idl.addType(innerElem); +return innerElem; +} else if (typeNode.getType() == IDLTokenTypes.LITERAL_union) { +String innerModule = module + parentName + INNERTYPE_SUFFIX + CompositeDataType.MODULE_SEPERATOR; +UnionType innerElem = visitUnion(typeNode); +innerElem.setModule(innerModule); +idl.addType(innerElem); +return innerElem; } else { typeName = getTypeName(typeNode); }
svn commit: r1085895 - /axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java
Author: eranga Date: Sun Mar 27 09:13:39 2011 New Revision: 1085895 URL: http://svn.apache.org/viewvc?rev=1085895&view=rev Log: AXIS2-4987 - Cannot use constants as discriminators in CORBA union data types Fixed. Updated the parseValue method. Modified: axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java Modified: axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java?rev=1085895&r1=1085894&r2=1085895&view=diff == --- axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java (original) +++ axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java Sun Mar 27 09:13:39 2011 @@ -631,7 +631,8 @@ public class CorbaUtil implements CorbaC return null; value = value.trim(); Object ret = null; -switch(type.getTypeCode().kind().value()) { +int kind = type.getTypeCode().kind().value(); +switch(kind) { case TCKind._tk_long : ret = Integer.valueOf(value); break; case TCKind._tk_ulong : ret = Integer.valueOf(value); break; case TCKind._tk_longlong : ret = Long.valueOf(value); break; @@ -653,8 +654,14 @@ public class CorbaUtil implements CorbaC enumValue.setValue(i); ret = enumValue; break; +case TCKind._tk_alias: +Typedef typedef = (Typedef) type; +AliasValue aliasValue = new AliasValue(typedef); +aliasValue.setValue(parseValue(typedef.getDataType(), value)); +ret = aliasValue; +break; default: -log.error("ERROR! Invalid dataType"); +log.error("ERROR! Invalid dataType (" + kind + ")"); break; } return ret;
svn commit: r1087700 - /axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java
Author: eranga Date: Fri Apr 1 13:25:48 2011 New Revision: 1087700 URL: http://svn.apache.org/viewvc?rev=1087700&view=rev Log: Use an empty sequence when there are no parameters in the CORBA operation. Modified: axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java Modified: axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java?rev=1087700&r1=1087699&r2=1087700&view=diff == --- axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java (original) +++ axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java Fri Apr 1 13:25:48 2011 @@ -203,13 +203,11 @@ public class SchemaGenerator implements } uniqueMethods.put(operationName, operation); //create the schema type for the method wrapper -List paras = operation.getParams(); -if (paras != null && paras.size() > 0) { -sequence = new XmlSchemaSequence(); -methodSchemaType = createSchemaTypeForMethodPart(operationName); -methodSchemaType.setParticle(sequence); -} +sequence = new XmlSchemaSequence(); +methodSchemaType = createSchemaTypeForMethodPart(operationName); +methodSchemaType.setParticle(sequence); +List paras = operation.getParams(); List outparas = null; if (paras != null) { for (int j = 0; j < paras.size(); j++) {
svn commit: r1088207 - in /axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba: deployer/ idl/parser/ idl/types/ idl/values/ receivers/
Author: eranga Date: Sun Apr 3 05:04:58 2011 New Revision: 1088207 URL: http://svn.apache.org/viewvc?rev=1088207&view=rev Log: AXIS2-4988 (The CORBA module does not fully support the 'any' data type.) Fixed. Now, the CORBA module supports 'any' data type as defined in CORBA-WSDL/SOAP Interworking (C2WSDL) 1.2.1 (http://www.omg.org/spec/C2WSDL/1.2.1) Added: axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/SchemaToIDLMapping.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/types/AnyType.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/values/AnyValue.java Modified: axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/CorbaConstants.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/CorbaDeployer.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/types/Operation.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/types/PrimitiveDataType.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/receivers/CorbaInOnlyMessageReceiver.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/receivers/CorbaInOutAsyncMessageReceiver.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/receivers/CorbaInvoker.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/receivers/CorbaMessageReceiver.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java Modified: axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/CorbaConstants.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/CorbaConstants.java?rev=1088207&r1=1088206&r2=1088207&view=diff == --- axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/CorbaConstants.java (original) +++ axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/CorbaConstants.java Sun Apr 3 05:04:58 2011 @@ -58,4 +58,8 @@ public interface CorbaConstants { String DEFAULT_SCHEMA_NAMESPACE_PREFIX = "xs"; String URI_2001_SCHEMA_XSD = "http://www.w3.org/2001/XMLSchema";; String FORM_DEFAULT_UNQUALIFIED = "unqualified"; + +String SCHEMA_TO_IDL_MAPPING_LITERAL = "SchemaToIDLMapping"; +String ANY_TYPE_NAME = "CORBA.Any"; +String TYPECODE_TYPE_NAME = "CORBA.TypeCode"; } Modified: axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/CorbaDeployer.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/CorbaDeployer.java?rev=1088207&r1=1088206&r2=1088207&view=diff == --- axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/CorbaDeployer.java (original) +++ axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/CorbaDeployer.java Sun Apr 3 05:04:58 2011 @@ -466,6 +466,7 @@ public class CorbaDeployer extends Abstr axisService.addSchema(schemas); axisService.setSchemaTargetNamespace(schemaGenerator.getSchemaTargetNameSpace()); axisService.setTypeTable(schemaGenerator.getTypeTable()); +axisService.addParameter(SCHEMA_TO_IDL_MAPPING_LITERAL, schemaGenerator.getSchemaToIDLMapping()); if (Java2WSDLConstants.DEFAULT_TARGET_NAMESPACE.equals( axisService.getTargetNamespace())) { axisService.setTargetNamespace(schemaGenerator.getTargetNamespace()); @@ -548,23 +549,16 @@ public class CorbaDeployer extends Abstr AxisOperation operation; String opName = corbaOperation.getName(); DataType returnType = corbaOperation.getReturnType(); -if (returnType == null || CorbaUtil.getQualifiedName(returnType).equals(VOID)) { -if (corbaOperation.hasRaises()) { -operation = AxisOperationFactory.getAxisOperation(WSDLConstants.MEP_CONSTANT_IN_OUT); -AxisMessage outMessage = operation.getMessage( -WSDLConstants.MESSAGE_LABEL_OUT_VALUE); -outMessage.setElementQName(table.getQNamefortheType(opName + RESPONSE)); -outMessage.setName(opName + RESPONSE); -} else { -operation = AxisOperationFactory.getAxisOperation(WSDLConstants.MEP_CONSTANT_IN_ONLY); -} + +if (re
svn commit: r1089383 - in /axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba: deployer/ idl/parser/ idl/types/ idl/values/ receivers/
Author: eranga Date: Wed Apr 6 10:19:19 2011 New Revision: 1089383 URL: http://svn.apache.org/viewvc?rev=1089383&view=rev Log: AXIS2-4779 (Datatype fixed is not supported) Fixed. Bow this CORBA module supports fixed data type as well Added: axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/types/FixedType.java Modified: axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/parser/ExpressionUtil.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/values/AbstractValue.java axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java Modified: axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java?rev=1089383&r1=1089382&r2=1089383&view=diff == --- axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java (original) +++ axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java Wed Apr 6 10:19:19 2011 @@ -30,6 +30,7 @@ import org.apache.ws.commons.schema.*; import org.apache.ws.commons.schema.utils.NamespaceMap; import javax.xml.namespace.QName; +import java.math.BigDecimal; import java.net.URI; import java.util.*; @@ -343,29 +344,74 @@ public class SchemaGenerator implements typeTable.addComplexSchema(name, eltOuter.getQName()); } else { -XmlSchemaComplexType complexType = new XmlSchemaComplexType(xmlSchema); -XmlSchemaSequence sequence = new XmlSchemaSequence(); -XmlSchemaElement eltOuter = new XmlSchemaElement(); -eltOuter.setName(simpleName); -eltOuter.setQName(schemaTypeName); -complexType.setParticle(sequence); -complexType.setName(simpleName); - -xmlSchema.getItems().add(eltOuter); -xmlSchema.getElements().add(schemaTypeName, eltOuter); -eltOuter.setSchemaTypeName(complexType.getQName()); - -xmlSchema.getItems().add(complexType); -xmlSchema.getSchemaTypes().add(schemaTypeName, complexType); - -// adding this type to the table -typeTable.addComplexSchema(name, eltOuter.getQName()); if (dataType instanceof Typedef) { Typedef typedef = (Typedef) dataType; DataType aliasType = typedef.getDataType(); - sequence.getItems().add(generateSchemaforFieldsandProperties(xmlSchema, aliasType, "item", false)); +if (aliasType instanceof FixedType) { +XmlSchemaSimpleType simpleType = new XmlSchemaSimpleType(xmlSchema); +XmlSchemaElement eltOuter = new XmlSchemaElement(); +eltOuter.setName(simpleName); +eltOuter.setQName(schemaTypeName); +simpleType.setName(simpleName); + +xmlSchema.getItems().add(eltOuter); +xmlSchema.getElements().add(schemaTypeName, eltOuter); +eltOuter.setSchemaTypeName(simpleType.getQName()); + +xmlSchema.getItems().add(simpleType); +xmlSchema.getSchemaTypes().add(schemaTypeName, simpleType); + +typeTable.addComplexSchema(name, eltOuter.getQName()); +XmlSchemaElement elt1 = new XmlSchemaElement(); +elt1.setName(name); + +XmlSchemaSimpleTypeRestriction restriction = new XmlSchemaSimpleTypeRestriction(); + restriction.setBaseTypeName(typeTable.getSimpleSchemaTypeName(BigDecimal.class.getName())); + +FixedType fixedType = (FixedType) aliasType; +XmlSchemaTotalDigitsFacet totalDigits = new XmlSchemaTotalDigitsFacet(fixedType.getDigits(), false); +restriction.getFacets().add(totalDigits); +XmlSchemaFractionDigitsFacet fractionDigits = new XmlSchemaFractionDigitsFacet(fixedType.getScale(), true); +restriction.getFacets().add(fractionDigits); + +simpleType.setContent(restriction); +} else { +XmlSchemaComplexType complexType = new XmlSchemaComplexType(xmlSchema); +XmlSchemaSequence sequen