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 mv...@apache.org on 2006/10/26 17:26:48 UTC
svn commit: r468073 -
/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/
Author: mvescovi
Date: Thu Oct 26 10:26:46 2006
New Revision: 468073
URL: http://svn.apache.org/viewvc?view=rev&rev=468073
Log:
Initial refactor of <interface> IDL grammar rule and its derivation rules.
Modified:
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/AttributeVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ConstVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DefinitionVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ExceptionVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/OperationVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PortTypeVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PrimitiveTypesVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ScopedNameVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/SimpleTypeSpecVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StringVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StructVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TemplateTypeSpecVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypeDclVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypedefVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypesVisitor.java
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/AttributeVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/AttributeVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/AttributeVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/AttributeVisitor.java Thu Oct 26 10:26:46 2006
@@ -88,6 +88,14 @@
binding = wsdlBinding;
}
+ public static boolean accept(AST node) {
+ if (node.getType() == IDLTokenTypes.LITERAL_readonly
+ || node.getType() == IDLTokenTypes.LITERAL_attribute) {
+ return true;
+ }
+ return false;
+ }
+
public void visit(AST attributeNode) {
AST node = attributeNode.getFirstChild();
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ConstVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ConstVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ConstVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ConstVisitor.java Thu Oct 26 10:26:46 2006
@@ -38,6 +38,13 @@
super(xmlSchemas, xmlSchema, typeMappingType);
}
+ public static boolean accept(AST node) {
+ if (node.getType() == IDLTokenTypes.LITERAL_const) {
+ return true;
+ }
+ return false;
+ }
+
public void visit(AST constNode) {
AST constTypeNode = constNode.getFirstChild();
AST constNameNode = TypesUtils.getPrimitiveCorbaTypeNameNode(constTypeNode);
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DefinitionVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DefinitionVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DefinitionVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DefinitionVisitor.java Thu Oct 26 10:26:46 2006
@@ -76,22 +76,33 @@
break;
}
case IDLTokenTypes.LITERAL_interface: {
- PortTypeVisitor portTypeVisitor = new PortTypeVisitor(definition, typesVisitor);
+ PortTypeVisitor portTypeVisitor = new PortTypeVisitor(schemas,
+ schema,
+ typeMap,
+ definition,
+ typesVisitor);
portTypeVisitor.visit(node);
break;
}
case IDLTokenTypes.LITERAL_exception: {
- ExceptionVisitor exceptionVisitor = new ExceptionVisitor(schemas, schema, typeMap);
+ ExceptionVisitor exceptionVisitor = new ExceptionVisitor(schemas,
+ schema,
+ typeMap);
exceptionVisitor.visit(node);
break;
}
case IDLTokenTypes.LITERAL_const: {
- ConstVisitor constVisitor = new ConstVisitor(schemas, schema, typeMap);
+ ConstVisitor constVisitor = new ConstVisitor(schemas,
+ schema,
+ typeMap);
constVisitor.visit(node);
break;
}
default: {
- TypeDclVisitor typeDclVisitor = new TypeDclVisitor(schemas, schema, typeMap, typesVisitor);
+ TypeDclVisitor typeDclVisitor = new TypeDclVisitor(schemas,
+ schema,
+ typeMap,
+ typesVisitor);
typeDclVisitor.visit(node);
}
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ExceptionVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ExceptionVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ExceptionVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ExceptionVisitor.java Thu Oct 26 10:26:46 2006
@@ -39,11 +39,18 @@
public class ExceptionVisitor extends TypesVisitorBase {
public ExceptionVisitor(XmlSchemaCollection xmlSchemas,
- XmlSchema xmlSchema,
- TypeMappingType typeMappingType) {
+ XmlSchema xmlSchema,
+ TypeMappingType typeMappingType) {
super(xmlSchemas, xmlSchema, typeMappingType);
}
+ public static boolean accept(AST node) {
+ if (node.getType() == IDLTokenTypes.LITERAL_exception) {
+ return true;
+ }
+ return false;
+ }
+
public void visit(AST node) {
// <exception_dcl> ::= "exception" <identifier> "{" <member>* "}"
// <member> ::= <type_spec> <declarators> ";"
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/OperationVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/OperationVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/OperationVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/OperationVisitor.java Thu Oct 26 10:26:46 2006
@@ -53,6 +53,24 @@
binding = wsdlBinding;
}
+ public static boolean accept(AST node) {
+ boolean result = false;
+ AST node2 = node.getFirstChild();
+ if (node2.getType() == IDLTokenTypes.LITERAL_oneway) {
+ result = true;
+ } else {
+ int type = node2.getType();
+ result =
+ type == IDLTokenTypes.LITERAL_void
+ || PrimitiveTypesVisitor.accept(node2)
+ || StringVisitor.accept(node2);
+ // || ScopedNameVisitor.accept(node);
+ // REVISIT: previous line should not be commented out
+ // FIXME fix ScopedNameVisitor
+ }
+ return result;
+ }
+
public void visit(AST node) {
MessageVisitor msgVisitor = new MessageVisitor(definition, typesVisitor);
Operation op = definition.createOperation();
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PortTypeVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PortTypeVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PortTypeVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PortTypeVisitor.java Thu Oct 26 10:26:46 2006
@@ -34,6 +34,10 @@
import antlr.collections.AST;
import org.apache.schemas.yoko.bindings.corba.BindingType;
+import org.apache.schemas.yoko.bindings.corba.TypeMappingType;
+
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaCollection;
import org.apache.yoko.wsdl.CorbaConstants;
@@ -46,7 +50,18 @@
TypesVisitor typesVisitor;
String module;
- public PortTypeVisitor(Definition wsdlDefinition, TypesVisitor typeVisitor) {
+ private XmlSchemaCollection schemas;
+ private XmlSchema schema;
+ private TypeMappingType typeMap;
+
+ public PortTypeVisitor(XmlSchemaCollection xmlSchemas,
+ XmlSchema xmlSchema,
+ TypeMappingType corbaTypeMap,
+ Definition wsdlDefinition,
+ TypesVisitor typeVisitor) {
+ schemas = xmlSchemas;
+ schema = xmlSchema;
+ typeMap = corbaTypeMap;
definition = wsdlDefinition;
typesVisitor = typeVisitor;
extReg = definition.getExtensionRegistry();
@@ -60,44 +75,71 @@
}
}
+ public static boolean accept(AST node) {
+ if (node.getType() == IDLTokenTypes.LITERAL_interface) {
+ return true;
+ }
+ return false;
+ }
+
public void visit(AST node) {
- portType = definition.createPortType();
- AST interfaceNode = node.getFirstChild();
- String intfName = interfaceNode.toString();
+ // <interface> ::= <interface_dcl>
+ // | <forward_dcl>
+ // <interface_dcl> ::= <interface_header> "{" <interface_body> "}"
+ // <forward_dcl> ::= ["abstract" | "local"] "interface" <identifier>
+ // <interface_header> ::= ["abstract" | "local"] "interface" <identifier>
+ // [<interface_inheritance_spec>]
+ // <interface_body> ::= <export>*
+ // <export> ::= <type_dcl> ";"
+ // | <const_dcl> ";"
+ // | <except_dcl> ";"
+ // | <attr_dcl> ";"
+ // | <op_dcl> ";"
+ // <interface_inheritance_spec> ::= ":" <interface_name> { "," <interface_name> }*
+ // <interface_name> ::= <scoped_name>
+
+
+ AST identifierNode = node.getFirstChild();
+ String interfaceName = identifierNode.toString();
if (module != null) {
- intfName = module + "." + intfName;
+ interfaceName = module + "." + interfaceName;
}
- portType.setQName(new QName(definition.getTargetNamespace(), intfName));
+
+ portType = definition.createPortType();
+ portType.setQName(new QName(definition.getTargetNamespace(), interfaceName));
portType.setUndefined(false);
definition.addPortType(portType);
Binding binding = createBinding();
- AST node2 = interfaceNode.getNextSibling();
- while (node2 != null) {
- switch (node2.getType()) {
- case IDLTokenTypes.LITERAL_struct:
- case IDLTokenTypes.LITERAL_exception:
- case IDLTokenTypes.LITERAL_const:
- case IDLTokenTypes.LITERAL_enum:
- case IDLTokenTypes.LITERAL_union:
- case IDLTokenTypes.LITERAL_typedef:
- typesVisitor.visit(node2);
- break;
- case IDLTokenTypes.LITERAL_attribute:
+
+ AST exportNode = identifierNode.getNextSibling();
+ while (exportNode != null) {
+
+ if (TypeDclVisitor.accept(exportNode)) {
+ TypeDclVisitor visitor = new TypeDclVisitor(schemas, schema, typeMap, typesVisitor);
+ visitor.visit(exportNode);
+ } else if (ConstVisitor.accept(exportNode)) {
+ ConstVisitor visitor = new ConstVisitor(schemas, schema, typeMap);
+ visitor.visit(exportNode);
+ } else if (ExceptionVisitor.accept(exportNode)) {
+ ExceptionVisitor visitor = new ExceptionVisitor(schemas, schema, typeMap);
+ visitor.visit(exportNode);
+ } else if (AttributeVisitor.accept(exportNode)) {
AttributeVisitor attributeVisitor = new AttributeVisitor(definition,
typesVisitor,
portType,
binding);
- attributeVisitor.visit(node2);
- break;
- default:
- OperationVisitor operationVisitor = new OperationVisitor(definition,
- typesVisitor,
- portType,
- binding);
- operationVisitor.visit(node2);
- break;
+ attributeVisitor.visit(exportNode);
+ } else if (OperationVisitor.accept(exportNode)) {
+ OperationVisitor visitor = new OperationVisitor(definition,
+ typesVisitor,
+ portType,
+ binding);
+ visitor.visit(exportNode);
+ } else {
+ throw new RuntimeException("InterfaceVisitor: invalid IDL!");
}
- node2 = node2.getNextSibling();
+
+ exportNode = exportNode.getNextSibling();
}
}
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PrimitiveTypesVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PrimitiveTypesVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PrimitiveTypesVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PrimitiveTypesVisitor.java Thu Oct 26 10:26:46 2006
@@ -44,8 +44,8 @@
PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_boolean));
PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_any));
PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_octet));
- PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_string));
- PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_wstring));
+// PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_string));
+// PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_wstring));
PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_any));
}
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ScopedNameVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ScopedNameVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ScopedNameVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ScopedNameVisitor.java Thu Oct 26 10:26:46 2006
@@ -50,6 +50,10 @@
}
public void visit(AST node) {
+ // <scoped_name> ::= <identifier>
+ // | :: <identifier>
+ // | <scoped_name> "::" <identifier>
+
setSchemaType(TypesUtils.findType(schemas, schema, node));
setCorbaType(TypesUtils.findCorbaType(typeMap, getSchemaType().getQName()));
}
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/SimpleTypeSpecVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/SimpleTypeSpecVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/SimpleTypeSpecVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/SimpleTypeSpecVisitor.java Thu Oct 26 10:26:46 2006
@@ -56,19 +56,19 @@
TypeSpecVisitor visitor = null;
- // simple_type_spec - base_type_spec
+
if (PrimitiveTypesVisitor.accept(node)) {
+ // simple_type_spec - base_type_spec
visitor = new PrimitiveTypesVisitor(schemas, schema, typeMap);
- }
-
- // simple_type_spec - template_type_spec
- if (TemplateTypeSpecVisitor.accept(node)) {
+
+ } else if (TemplateTypeSpecVisitor.accept(node)) {
+ // simple_type_spec - template_type_spec
visitor = new TemplateTypeSpecVisitor(schemas, schema, typeMap);
- }
-
- // simple_type_spec - scoped_name
- if (ScopedNameVisitor.accept(schemas, schema, node)) {
+
+ } else if (ScopedNameVisitor.accept(schemas, schema, node)) {
+ // simple_type_spec - scoped_name
visitor = new ScopedNameVisitor(schemas, schema, typeMap);
+
}
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StringVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StringVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StringVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StringVisitor.java Thu Oct 26 10:26:46 2006
@@ -94,6 +94,8 @@
simpleType.setContent(restriction);
// xmlschema:simpleType
+ schema.getItems().add(simpleType);
+ schema.addType(simpleType);
setSchemaType(simpleType);
@@ -138,53 +140,59 @@
+ CorbaConstants.IDL_VERSION);
// add corba:alias
+ typeMap.getStructOrExceptionOrUnion().add(alias);
setCorbaType(alias);
}
private void visitUnboundedString() {
// REVISIT: code in this block is very similar to TypedefVisitor.visitAlias() method
-// // xmlschema:simpleType
-// XmlSchemaSimpleType simpleType = new XmlSchemaSimpleType(schema);
-// simpleType.setName(stringName);
-// XmlSchemaSimpleTypeRestriction restriction = new XmlSchemaSimpleTypeRestriction();
-// restriction.setBaseTypeName(Constants.XSD_STRING);
-// simpleType.setContent(restriction);
-//
-// // add xmlschema:simpleType
-// setSchemaType(simpleType);
- setSchemaType(schemas.getTypeByQName(Constants.XSD_STRING));
-
-// // corba:alias
-// Alias alias = new Alias();
-// alias.setQName(new QName(typeMap.getTargetNamespace(), stringName));
-// if (stringNode.getType() == IDLTokenTypes.LITERAL_string) {
-// alias.setBasetype(CorbaConstants.NT_CORBA_STRING);
-// } else if (stringNode.getType() == IDLTokenTypes.LITERAL_wstring) {
-// alias.setBasetype(CorbaConstants.NT_CORBA_WSTRING);
-// } else {
-// // should never get here
-// throw new RuntimeException("StringVisitor attempted to visit an invalid node");
-// }
-// alias.setType(Constants.XSD_STRING);
-// alias.setRepositoryID(CorbaConstants.REPO_STRING
-// + stringName
-// + CorbaConstants.IDL_VERSION);
-//
-// // add corba:alias
-// setCorbaType(alias);
- CorbaTypeImpl corbaString = new CorbaTypeImpl();
+ // xmlschema:simpleType
+ XmlSchemaSimpleType simpleType = new XmlSchemaSimpleType(schema);
+ simpleType.setName(stringName);
+ XmlSchemaSimpleTypeRestriction restriction = new XmlSchemaSimpleTypeRestriction();
+ restriction.setBaseTypeName(Constants.XSD_STRING);
+ simpleType.setContent(restriction);
+
+ // add xmlschema:simpleType
+ schema.getItems().add(simpleType);
+ schema.addType(simpleType);
+ setSchemaType(simpleType);
+
+// setSchemaType(schemas.getTypeByQName(Constants.XSD_STRING));
+
+ // corba:alias
+ Alias alias = new Alias();
+ alias.setQName(new QName(typeMap.getTargetNamespace(), stringName));
if (stringNode.getType() == IDLTokenTypes.LITERAL_string) {
- corbaString.setQName(CorbaConstants.NT_CORBA_STRING);
+ alias.setBasetype(CorbaConstants.NT_CORBA_STRING);
} else if (stringNode.getType() == IDLTokenTypes.LITERAL_wstring) {
- corbaString.setQName(CorbaConstants.NT_CORBA_WSTRING);
+ alias.setBasetype(CorbaConstants.NT_CORBA_WSTRING);
} else {
// should never get here
throw new RuntimeException("StringVisitor attempted to visit an invalid node");
}
- corbaString.setName(Constants.XSD_STRING.getLocalPart());
- corbaString.setType(Constants.XSD_STRING);
- setCorbaType(corbaString);
+ alias.setType(Constants.XSD_STRING);
+ alias.setRepositoryID(CorbaConstants.REPO_STRING
+ + stringName
+ + CorbaConstants.IDL_VERSION);
+
+ // add corba:alias
+ typeMap.getStructOrExceptionOrUnion().add(alias);
+ setCorbaType(alias);
+
+// CorbaTypeImpl corbaString = new CorbaTypeImpl();
+// if (stringNode.getType() == IDLTokenTypes.LITERAL_string) {
+// corbaString.setQName(CorbaConstants.NT_CORBA_STRING);
+// } else if (stringNode.getType() == IDLTokenTypes.LITERAL_wstring) {
+// corbaString.setQName(CorbaConstants.NT_CORBA_WSTRING);
+// } else {
+// // should never get here
+// throw new RuntimeException("StringVisitor attempted to visit an invalid node");
+// }
+// corbaString.setName(Constants.XSD_STRING.getLocalPart());
+// corbaString.setType(Constants.XSD_STRING);
+// setCorbaType(corbaString);
}
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StructVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StructVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StructVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StructVisitor.java Thu Oct 26 10:26:46 2006
@@ -53,6 +53,10 @@
}
public void visit(AST node) {
+ // <struct_type> ::= "struct" <identifier> "{" <member_list> "}"
+ // <member_list> ::= <member>+
+ // <member> ::= <type_spec> <declarators> ";"
+
AST structNode = node.getFirstChild();
// xmlschema:struct
@@ -100,9 +104,9 @@
memberTypeNode = memberNode.getNextSibling();
}
+ // declaration phase
XmlSchemaType schemaType = complexType;
CorbaTypeImpl corbaType = struct;
- // declaration phase
DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(schemas, schema, typeMap);
declaratorVisitor.visit(structNode, schemaType, corbaType);
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TemplateTypeSpecVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TemplateTypeSpecVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TemplateTypeSpecVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TemplateTypeSpecVisitor.java Thu Oct 26 10:26:46 2006
@@ -59,12 +59,14 @@
TypeSpecVisitor visitor = null;
if (SequenceVisitor.accept(node)) {
+ // <sequence_type>
visitor = new SequenceVisitor(schemas, schema, typeMap);
- }
- if (StringVisitor.accept(node)) {
+ } else if (StringVisitor.accept(node)) {
+ // <string_type>
+ // <wstring_type>
visitor = new StringVisitor(schemas, schema, typeMap);
- }
- if (FixedVisitor.accept(node)) {
+ } else if (FixedVisitor.accept(node)) {
+ // <fixed_pt_type>
visitor = new FixedVisitor(schemas, schema, typeMap);
}
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypeDclVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypeDclVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypeDclVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypeDclVisitor.java Thu Oct 26 10:26:46 2006
@@ -45,6 +45,15 @@
typesVisitor = typesVisitorRef;
}
+ public static boolean accept(AST node) {
+ boolean result =
+ TypedefVisitor.accept(node)
+ || StructVisitor.accept(node)
+ || UnionVisitor.accept(node)
+ || EnumVisitor.accept(node);
+ return result;
+ }
+
public void visit(AST node) {
// <type_dcl> ::= "typedef" <type_declarator>
// | <struct_type>
@@ -56,24 +65,25 @@
TypeSpecVisitor visitor = null;
if (TypedefVisitor.accept(node)) {
+ // "typedef" <type_declarator>
visitor = new TypedefVisitor(schemas, schema, typeMap, typesVisitor);
- }
-
- if (StructVisitor.accept(node)) {
+ } else if (StructVisitor.accept(node)) {
+ // <struct_type>
visitor = new StructVisitor(schemas, schema, typeMap);
- }
-
- if (UnionVisitor.accept(node)) {
+ } else if (UnionVisitor.accept(node)) {
+ // <union_type>
visitor = new UnionVisitor(schemas, schema, typeMap);
- }
-
- if (EnumVisitor.accept(node)) {
+ } else if (EnumVisitor.accept(node)) {
+ // <enum_type>
visitor = new EnumVisitor(schemas, schema, typeMap);
+ } else if (node.getType() == IDLTokenTypes.LITERAL_native) {
+ // "native" <simple_declarator>
+ //
+ // native type not supported
+ throw new RuntimeException("[TypeDclVisitor: native type not supported!]");
}
-
- // native type not supported
-
- // TBD: forward declaration <constr_forward_declaration>
+
+ // TODO forward declaration <constr_forward_declaration>
visitor.visit(node);
}
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypedefVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypedefVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypedefVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypedefVisitor.java Thu Oct 26 10:26:46 2006
@@ -66,10 +66,9 @@
// Handle cases "typedef sequence"
// "typedef fixed"
- boolean doAlias =
- SequenceVisitor.accept(typeDeclaratorNode)
- || FixedVisitor.accept(typeDeclaratorNode);
- if (!doAlias) {
+ // "typedef string"
+ // "typedef wstring"
+ if (!TemplateTypeSpecVisitor.accept(typeDeclaratorNode)) {
generateAlias(TypesUtils.getPrimitiveCorbaTypeNameNode(typedefNode.getFirstChild()),
//typedefNode.getFirstChild().getNextSibling(),
schemaType,
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypesVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypesVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypesVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypesVisitor.java Thu Oct 26 10:26:46 2006
@@ -146,30 +146,26 @@
TypeSpecVisitor visitor = null;
- // type_spec - constr_type_spec
+
if (ConstrTypeSpecVisitor.accept(node)) {
+ // type_spec - constr_type_spec
visitor = new ConstrTypeSpecVisitor(schemas, schema, typeMap);
- }
-
- // type_spec - simple_type_spec
- if (SimpleTypeSpecVisitor.accept(node)) {
+ } else if (SimpleTypeSpecVisitor.accept(node)) {
+ // type_spec - simple_type_spec
visitor = new SimpleTypeSpecVisitor(schemas, schema, typeMap);
- }
-
-
- // REVISIT: !!!!!
- // This is ugly. It should be done in the SimpleTypeSpecVisitor.accept(node) method.
- // More precisely, that accept method should contained an ORed
- // ScopedNameVisitor.accept(schemas, schema, node)
- // It is not done currently because that would require changing accept method signature
- // to accept(schemas, schema, node).
- // Perhaps passing a pointer to DefinitionVisitor or some other class (to be designed)
- // would be a better solution.
- //
- // To work around that redesign and get things working now, I am assuming that if visitor
- // is null at this point, then it has to be a scoped_name.
- // REVISIT!!!
- if (visitor == null) {
+ } else if (visitor == null) {
+ // REVISIT: !!!!!
+ // This is ugly. It should be done in the SimpleTypeSpecVisitor.accept(node) method.
+ // More precisely, that accept method should contained an ORed
+ // ScopedNameVisitor.accept(schemas, schema, node)
+ // It is not done currently because that would require changing accept method signature
+ // to accept(schemas, schema, node).
+ // Perhaps passing a pointer to DefinitionVisitor or some other class (to be designed)
+ // would be a better solution.
+ //
+ // To work around that redesign and get things working now, I am assuming that if visitor
+ // is null at this point, then it has to be a scoped_name.
+ // REVISIT!!!
visitor = new ScopedNameVisitor(schemas, schema, typeMap);
}