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/11/03 14:37:42 UTC
svn commit: r470835 - in
/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src:
main/java/org/apache/yoko/tools/processors/idl/ test/resources/idl/
Author: mvescovi
Date: Fri Nov 3 06:37:41 2006
New Revision: 470835
URL: http://svn.apache.org/viewvc?view=rev&rev=470835
Log:
Fixed StringVisitor simple string handling problems
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/DeclaratorVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/EnumVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ModuleVisitor.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/ParamTypeSpecVisitor.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/Scope.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/TypedefVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/UnionVisitor.java
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_String.wsdl
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_Typedef.wsdl
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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov 3 06:37:41 2006
@@ -35,7 +35,6 @@
import javax.xml.namespace.QName;
-import antlr.ASTVisitor;
import antlr.collections.AST;
import org.apache.schemas.yoko.bindings.corba.ArgType;
@@ -74,7 +73,6 @@
XmlSchema xmlSchema,
TypeMappingType typeMap,
Definition wsdlDefinition,
- TypesVisitor typesVisitor,
PortType wsdlPortType,
Binding wsdlBinding) {
super(scope, xmlSchemas, xmlSchema, typeMap);
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DeclaratorVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DeclaratorVisitor.java?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DeclaratorVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DeclaratorVisitor.java Fri Nov 3 06:37:41 2006
@@ -29,7 +29,7 @@
import org.apache.yoko.wsdl.CorbaTypeImpl;
-public class DeclaratorVisitor {
+public class DeclaratorVisitor extends VisitorBase {
// <declarators> ::= <declarator> {"," <declarator> }*
// <declarator> ::= <simple_declarator>
// | <complex_declarator>
@@ -38,21 +38,38 @@
// <array_declarator> ::= <identifier> <fixed_array_size>+
// <fixed_array_size> ::= "[" <positive_int_const> "]"
- private XmlSchemaCollection schemas;
- private XmlSchema schema;
- private TypeMappingType typeMap;
-
- public DeclaratorVisitor(XmlSchemaCollection xmlSchemas,
+ private XmlSchemaType schemaType;
+ private CorbaTypeImpl corbaType;
+
+ public DeclaratorVisitor(Scope scope,
+ XmlSchemaCollection xmlSchemas,
XmlSchema xmlSchema,
- TypeMappingType corbaTypeMap) {
- schemas = xmlSchemas;
- schema = xmlSchema;
- typeMap = corbaTypeMap;
+ TypeMappingType corbaTypeMap,
+ XmlSchemaType schemaTypeRef,
+ CorbaTypeImpl corbaTypeRef) {
+ super(scope, xmlSchemas, xmlSchema, corbaTypeMap);
+ schemaType = schemaTypeRef;
+ corbaType = corbaTypeRef;
}
// REVISIT: parameter node should be the first declarator node
// and visit should loop through all declarators.
- public void visit(AST node, XmlSchemaType schemaType, CorbaTypeImpl corbaType) {
+ public void visit(AST node) {
+
+// // handle named or anonymous types
+// String name = null;
+// if (node == null) {
+// // anonymous
+//
+// //name = "_1_" + getScope().tail();
+//
+// } else {
+// name = node.toString();
+// }
+// schemaType.setName(name);
+// corbaType.setQName(new QName(typeMap.getTargetNamespace(), name));
+
+
// add schemaType
schema.getItems().add(schemaType);
schema.addType(schemaType);
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/EnumVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/EnumVisitor.java?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/EnumVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/EnumVisitor.java Fri Nov 3 06:37:41 2006
@@ -56,6 +56,10 @@
}
public void visit(AST enumNode) {
+ // <enum_type> ::= "enum" <identifier> "{" <enumerator> {"," <enumerator>}* "}"
+ // <enumerator> ::= <identifier>
+
+
AST enumNameNode = enumNode.getFirstChild();
// xmlschema:enum
@@ -96,8 +100,13 @@
XmlSchemaType schemaType = enumSchemaSimpleType;
CorbaTypeImpl corbaType = corbaEnum;
// declaration phase
- DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(schemas, schema, typeMap);
- declaratorVisitor.visit(node, schemaType, corbaType);
+ DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(getScope(),
+ schemas,
+ schema,
+ typeMap,
+ schemaType,
+ corbaType);
+ declaratorVisitor.visit(enumNameNode);
// REVISIT: are there assignments needed?
setSchemaType(enumSchemaSimpleType);
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ModuleVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ModuleVisitor.java?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ModuleVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ModuleVisitor.java Fri Nov 3 06:37:41 2006
@@ -21,7 +21,6 @@
import javax.wsdl.Definition;
-import antlr.ASTVisitor;
import antlr.collections.AST;
import org.apache.schemas.yoko.bindings.corba.TypeMappingType;
@@ -52,12 +51,13 @@
AST definitionNode = identifierNode.getNextSibling();
while (definitionNode != null) {
- DefinitionVisitor definitionVisitor = new DefinitionVisitor(new Scope(getScope(), identifierNode.toString()),
- definition,
- typesVisitor,
- schemas,
- schema,
- typeMap);
+ DefinitionVisitor definitionVisitor =
+ new DefinitionVisitor(new Scope(getScope(), identifierNode.toString()),
+ definition,
+ typesVisitor,
+ schemas,
+ schema,
+ typeMap);
definitionVisitor.visit(definitionNode);
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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov 3 06:37:41 2006
@@ -36,7 +36,6 @@
import javax.wsdl.extensions.ExtensionRegistry;
import javax.xml.namespace.QName;
-import antlr.ASTVisitor;
import antlr.collections.AST;
import org.apache.schemas.yoko.bindings.corba.ArgType;
@@ -65,7 +64,6 @@
private static final String RETURN_PARAMETER = "return";
private Definition definition;
- private TypesVisitor typesVisitor;
private ExtensionRegistry extReg;
private PortType portType;
private Binding binding;
@@ -83,18 +81,17 @@
XmlSchema xmlSchema,
TypeMappingType typeMapRef,
Definition wsdlDefinition,
- TypesVisitor typeVisitor,
PortType wsdlPortType,
Binding wsdlBinding) {
super(scope, xmlSchemas, xmlSchema, typeMapRef);
definition = wsdlDefinition;
- typesVisitor = typeVisitor;
extReg = definition.getExtensionRegistry();
portType = wsdlPortType;
binding = wsdlBinding;
}
- public static boolean accept(XmlSchemaCollection schemas, XmlSchema schema, AST node) {
+ public static boolean accept(XmlSchemaCollection schemas, XmlSchema schema,
+ TypeMappingType typeMap, AST node) {
boolean result = false;
AST node2 = node.getFirstChild();
if (node2.getType() == IDLTokenTypes.LITERAL_oneway) {
@@ -105,7 +102,7 @@
type == IDLTokenTypes.LITERAL_void
|| PrimitiveTypesVisitor.accept(node2)
|| StringVisitor.accept(node2)
- || ScopedNameVisitor.accept(schemas, schema, node2);
+ || ScopedNameVisitor.accept(schemas, schema, typeMap, node2);
}
return result;
}
@@ -370,7 +367,7 @@
// binding - operation - corba:operation - corba:raises
RaisesType raisesType = new RaisesType();
- raisesType.setException(new QName(typesVisitor.getCorbaTypeMapping().getTargetNamespace(),
+ raisesType.setException(new QName(typeMap.getTargetNamespace(),
exceptionName));
corbaOperation.getRaises().add(raisesType);
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamTypeSpecVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamTypeSpecVisitor.java?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamTypeSpecVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamTypeSpecVisitor.java Fri Nov 3 06:37:41 2006
@@ -54,7 +54,7 @@
// wstring_type_spec
visitor = new StringVisitor(getScope(), schemas, schema, typeMap, false);
- } else if (ScopedNameVisitor.accept(schemas, schema, node)) {
+ } else if (ScopedNameVisitor.accept(schemas, schema, typeMap, node)) {
// scoped_name
visitor = new ScopedNameVisitor(getScope(), schemas, schema, typeMap);
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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov 3 06:37:41 2006
@@ -30,7 +30,6 @@
import javax.xml.namespace.QName;
-import antlr.ASTVisitor;
import antlr.collections.AST;
import org.apache.schemas.yoko.bindings.corba.BindingType;
@@ -136,17 +135,15 @@
schema,
typeMap,
definition,
- typesVisitor,
portType,
binding);
attributeVisitor.visit(exportNode);
- } else if (OperationVisitor.accept(schemas, schema, exportNode)) {
+ } else if (OperationVisitor.accept(schemas, schema, typeMap, exportNode)) {
OperationVisitor visitor = new OperationVisitor(interfaceScope,
schemas,
schema,
typeMap,
definition,
- typesVisitor,
portType,
binding);
visitor.visit(exportNode);
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Scope.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Scope.java?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Scope.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Scope.java Fri Nov 3 06:37:41 2006
@@ -27,7 +27,7 @@
public final class Scope {
- private final static String SEPARATOR = ".";
+ private static final String SEPARATOR = ".";
private List<String> scope;
public Scope() {
@@ -70,4 +70,5 @@
}
return result.toString();
}
+
}
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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov 3 06:37:41 2006
@@ -19,12 +19,19 @@
package org.apache.yoko.tools.processors.idl;
+import javax.xml.namespace.QName;
+
import antlr.collections.AST;
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.ws.commons.schema.XmlSchemaType;
+
+import org.apache.ws.commons.schema.constants.Constants;
+
+import org.apache.yoko.wsdl.CorbaTypeImpl;
public class ScopedNameVisitor extends VisitorBase {
@@ -35,12 +42,14 @@
super(scope, xmlSchemas, xmlSchema, corbaTypeMap);
}
- public static boolean accept(XmlSchemaCollection schemas, XmlSchema schema, AST node) {
- // REVISIT
- if (TypesUtils.findType(schemas, schema, node) != null) {
- return true;
+ public static boolean accept(XmlSchemaCollection schemas,
+ XmlSchema schema,
+ TypeMappingType typeMap,
+ AST node) {
+ if (findSchemaType(schemas, schema, typeMap, node) == null) {
+ return false;
}
- return false;
+ return true;
}
public void visit(AST node) {
@@ -48,8 +57,38 @@
// | :: <identifier>
// | <scoped_name> "::" <identifier>
- setSchemaType(TypesUtils.findType(schemas, schema, node));
+
+ setSchemaType(findSchemaType(schemas, schema, typeMap, node));
setCorbaType(TypesUtils.findCorbaType(typeMap, getSchemaType().getQName()));
+
+ }
+
+ private static XmlSchemaType findSchemaType(XmlSchemaCollection schemas,
+ XmlSchema schema,
+ TypeMappingType typeMap,
+ AST node) {
+ // REVISIT remove dependency on TypesUtils
+
+ XmlSchemaType result = TypesUtils.findType(schemas, schema, node);
+ // handle special case of simple string alias
+ // a plain xsd:string has no corresponding XmlSchemaType in the XmlSchema
+ // so the previous findType() method would return null.
+ // As a temporary workaround, we query the typeMap for a corba:string with
+ // same name. If the string is there, then it had been previously properly
+ // declared and we can use it here.
+ if (result == null) {
+ QName corbaStringQname = new QName(typeMap.getTargetNamespace(), node.toString());
+ CorbaTypeImpl ctype = TypesUtils.findCorbaType(typeMap, corbaStringQname);
+ if (ctype != null
+ && ctype.getType() == Constants.XSD_STRING) {
+ result = schemas.getTypeByQName(Constants.XSD_STRING);
+ } else {
+ throw new RuntimeException("[ScopedNameVisitor: Corba type "
+ + corbaStringQname.toString()
+ + " not found in typeMap]");
+ }
+ }
+ return result;
}
}
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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov 3 06:37:41 2006
@@ -59,7 +59,7 @@
// simple_type_spec - template_type_spec
visitor = new TemplateTypeSpecVisitor(getScope(), schemas, schema, typeMap);
- } else if (ScopedNameVisitor.accept(schemas, schema, node)) {
+ } else if (ScopedNameVisitor.accept(schemas, schema, typeMap, node)) {
// simple_type_spec - scoped_name
visitor = new ScopedNameVisitor(getScope(), 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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov 3 06:37:41 2006
@@ -45,8 +45,7 @@
private AST boundNode;
private AST identifierNode;
private String stringName;
-
- private boolean declarationMode;
+
public StringVisitor(Scope scope,
XmlSchemaCollection xmlSchemas,
@@ -58,7 +57,6 @@
boundNode = null;
identifierNode = null;
stringName = null;
- declarationMode = mode;
}
public static boolean accept(AST node) {
@@ -68,6 +66,13 @@
}
return false;
}
+
+ public static boolean isBounded(AST node) {
+ if (node.getFirstChild() == null) {
+ return false;
+ }
+ return true;
+ }
public void visit(AST node) {
// <string_type> ::= "string" "<" <positive_int_const> ">"
@@ -101,7 +106,6 @@
restriction.getFacets().add(maxLengthFacet);
simpleType.setContent(restriction);
- // xmlschema:simpleType
setSchemaType(simpleType);
@@ -113,10 +117,7 @@
anonstring.setQName(new QName(typeMap.getTargetNamespace(), anonstringName));
anonstring.setBound(new Long(boundNode.toString()));
anonstring.setType(simpleType.getQName());
-
- // add corba:anonstring
- typeMap.getStructOrExceptionOrUnion().add(anonstring);
-
+
anon = anonstring;
} else if (stringNode.getType() == IDLTokenTypes.LITERAL_wstring) {
@@ -126,9 +127,6 @@
anonwstring.setBound(new Long(boundNode.toString()));
anonwstring.setType(simpleType.getQName());
- // add corba:anonwstring
- typeMap.getStructOrExceptionOrUnion().add(anonwstring);
-
anon = anonwstring;
} else {
@@ -136,6 +134,9 @@
throw new RuntimeException("StringVisitor attempted to visit an invalid node");
}
+ // add corba:anonstring
+ typeMap.getStructOrExceptionOrUnion().add(anon);
+
// corba:alias
Alias alias = new Alias();
alias.setQName(new QName(typeMap.getTargetNamespace(), stringName));
@@ -144,67 +145,37 @@
alias.setRepositoryID(CorbaConstants.REPO_STRING
+ stringName
+ CorbaConstants.IDL_VERSION);
-
+
// add corba:alias
setCorbaType(alias);
}
private void visitUnboundedString() {
- if (declarationMode
- && stringName != null) {
- // 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);
-
- // 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);
+ // schema type
+ setSchemaType(schemas.getTypeByQName(Constants.XSD_STRING));
- // add corba:alias
- setCorbaType(alias);
-
- } else {
- setSchemaType(schemas.getTypeByQName(Constants.XSD_STRING));
-
- CorbaTypeImpl corbaString = new CorbaTypeImpl();
- if (stringNode.getType() == IDLTokenTypes.LITERAL_string) {
- corbaString.setQName(CorbaConstants.NT_CORBA_STRING);
- corbaString.setName(CorbaConstants.NT_CORBA_STRING.getLocalPart());
- } else if (stringNode.getType() == IDLTokenTypes.LITERAL_wstring) {
- corbaString.setQName(CorbaConstants.NT_CORBA_WSTRING);
- corbaString.setName(CorbaConstants.NT_CORBA_STRING.getLocalPart());
- } else {
- // should never get here
- throw new RuntimeException("StringVisitor attempted to visit an invalid node");
- }
- corbaString.setType(Constants.XSD_STRING);
-
- setCorbaType(corbaString);
+
+ // corba type
+ CorbaTypeImpl corbaString = new CorbaTypeImpl();
+ if (stringNode.getType() == IDLTokenTypes.LITERAL_string) {
+ corbaString.setQName(CorbaConstants.NT_CORBA_STRING);
+ corbaString.setName(CorbaConstants.NT_CORBA_STRING.getLocalPart());
+ } else if (stringNode.getType() == IDLTokenTypes.LITERAL_wstring) {
+ corbaString.setQName(CorbaConstants.NT_CORBA_WSTRING);
+ corbaString.setName(CorbaConstants.NT_CORBA_STRING.getLocalPart());
+ } else {
+ // should never get here
+ throw new RuntimeException("StringVisitor attempted to visit an invalid node");
}
+ corbaString.setType(Constants.XSD_STRING);
+
+ setCorbaType(corbaString);
}
- private String getIdentifier(AST typeNode) {
+ private String getIdentifier(AST node) {
String result = null;
- if (identifierNode != null) {
- String identifierName = identifierNode.toString();
+ if (node != null) {
+ String identifierName = node.toString();
if (isValidIdentifier(identifierName)) {
result = identifierName;
}
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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov 3 06:37:41 2006
@@ -82,49 +82,12 @@
while (memberTypeNode != null) {
AST memberNode = memberTypeNode.getNextSibling();
- // xmlschema:member
- XmlSchemaElement member = new XmlSchemaElement();
- String memberName = memberNode.toString();
- member.setName(memberName);
- // type
- XmlSchemaType schemaType = TypesUtils.findType(schemas, schema, memberTypeNode);
- member.setSchemaType(schemaType);
- member.setSchemaTypeName(schemaType.getQName());
-
- sequence.getItems().add(member);
-
-
- // corba:member
- MemberType memberType = new MemberType();
- memberType.setName(memberName);
- QName idlType = TypesUtils.findCorbaType(typeMap, schemaType.getQName()).getQName();
- memberType.setIdltype(idlType);
- struct.getMember().add(memberType);
-
- memberTypeNode = memberNode.getNextSibling();
-
-
-
-// XmlSchemaType schemaType = null;
-// CorbaTypeImpl corbaType = null;
-// try {
-// TypesVisitor visitor = new TypesVisitor(new Scope(getScope(), identifierNode),
-// schemas,
-// schema,
-// typeMap);
-// visitor.visit(memberTypeNode);
-//
-// schemaType = visitor.getSchemaType();
-// corbaType = visitor.getCorbaType();
-//
-// } catch (Exception ex) {
-//
-// }
-//
// // xmlschema:member
// XmlSchemaElement member = new XmlSchemaElement();
// String memberName = memberNode.toString();
// member.setName(memberName);
+// // type
+// XmlSchemaType schemaType = TypesUtils.findType(schemas, schema, memberTypeNode);
// member.setSchemaType(schemaType);
// member.setSchemaTypeName(schemaType.getQName());
//
@@ -134,17 +97,60 @@
// // corba:member
// MemberType memberType = new MemberType();
// memberType.setName(memberName);
-// memberType.setIdltype(corbaType.getQName());
+// QName idlType = TypesUtils.findCorbaType(typeMap, schemaType.getQName()).getQName();
+// memberType.setIdltype(idlType);
// struct.getMember().add(memberType);
//
// memberTypeNode = memberNode.getNextSibling();
+
+
+
+ XmlSchemaType schemaType = null;
+ CorbaTypeImpl corbaType = null;
+ try {
+ TypesVisitor visitor = new TypesVisitor(new Scope(getScope(), identifierNode),
+ schemas,
+ schema,
+ typeMap);
+ visitor.visit(memberTypeNode);
+
+ schemaType = visitor.getSchemaType();
+ corbaType = visitor.getCorbaType();
+
+ } catch (Exception ex) {
+ System.out.println(ex.getMessage());
+ System.exit(1);
+ }
+
+ // xmlschema:member
+ XmlSchemaElement member = new XmlSchemaElement();
+ String memberName = memberNode.toString();
+ member.setName(memberName);
+ member.setSchemaType(schemaType);
+ member.setSchemaTypeName(schemaType.getQName());
+
+ sequence.getItems().add(member);
+
+
+ // corba:member
+ MemberType memberType = new MemberType();
+ memberType.setName(memberName);
+ memberType.setIdltype(corbaType.getQName());
+ struct.getMember().add(memberType);
+
+ memberTypeNode = memberNode.getNextSibling();
}
// declaration phase
XmlSchemaType schemaType = complexType;
CorbaTypeImpl corbaType = struct;
- DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(schemas, schema, typeMap);
- declaratorVisitor.visit(identifierNode, schemaType, corbaType);
+ DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(getScope(),
+ schemas,
+ schema,
+ typeMap,
+ schemaType,
+ corbaType);
+ declaratorVisitor.visit(identifierNode);
// REVISIT: are there assignment needed?
setSchemaType(complexType);
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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov 3 06:37:41 2006
@@ -31,6 +31,7 @@
import org.apache.ws.commons.schema.XmlSchemaSimpleType;
import org.apache.ws.commons.schema.XmlSchemaSimpleTypeRestriction;
import org.apache.ws.commons.schema.XmlSchemaType;
+import org.apache.ws.commons.schema.constants.Constants;
import org.apache.yoko.wsdl.CorbaConstants;
import org.apache.yoko.wsdl.CorbaTypeImpl;
@@ -59,34 +60,82 @@
// "typedef" <type_declarator>
// <type_declarator> ::= <type_spec> <declarators>
- AST typeDeclaratorNode = typedefNode.getFirstChild();
+ AST typeDeclaratorNode = typedefNode.getFirstChild();
+ AST identifierNode = TypesUtils.getPrimitiveCorbaTypeNameNode(typeDeclaratorNode);
+
typesVisitor.visit(typeDeclaratorNode);
XmlSchemaType schemaType = typesVisitor.getSchemaType();
CorbaTypeImpl corbaType = typesVisitor.getCorbaType();
- if (TemplateTypeSpecVisitor.accept(typeDeclaratorNode)) {
+
+ if (SequenceVisitor.accept(typeDeclaratorNode)
+ || FixedVisitor.accept(typeDeclaratorNode)) {
// Handle cases "typedef sequence"
// "typedef fixed"
- // "typedef string"
+ DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(getScope(),
+ schemas,
+ schema,
+ typeMap,
+ schemaType,
+ corbaType);
+ declaratorVisitor.visit(identifierNode);
+
+ } else if (StringVisitor.accept(typeDeclaratorNode)) {
+ // Handle cases "typedef string"
// "typedef wstring"
- setSchemaType(schemaType);
- setCorbaType(corbaType);
+
+ if (StringVisitor.isBounded(typeDeclaratorNode)) {
+ DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(getScope(),
+ schemas,
+ schema,
+ typeMap,
+ schemaType,
+ corbaType);
+ declaratorVisitor.visit(identifierNode);
+
+ } else {
+ Alias corbaString = new Alias();
+ if (typeDeclaratorNode.getType() == IDLTokenTypes.LITERAL_string) {
+ corbaString.setBasetype(CorbaConstants.NT_CORBA_STRING);
+ } else if (typeDeclaratorNode.getType() == IDLTokenTypes.LITERAL_wstring) {
+ corbaString.setBasetype(CorbaConstants.NT_CORBA_WSTRING);
+ } else {
+ // should never get here
+ throw new RuntimeException("StringVisitor attempted to visit an invalid node");
+ }
+ corbaString.setQName(new QName(typeMap.getTargetNamespace(), identifierNode.toString()));
+ corbaString.setType(Constants.XSD_STRING);
+ corbaString.setRepositoryID(CorbaConstants.REPO_STRING
+ + identifierNode.toString()
+ + CorbaConstants.IDL_VERSION);
+
+ typeMap.getStructOrExceptionOrUnion().add(corbaString);
+
+ }
+
} else {
// typedef used to define an alias
- generateAlias(TypesUtils.getPrimitiveCorbaTypeNameNode(typedefNode.getFirstChild()),
+ generateAlias(identifierNode,
schemaType,
corbaType);
+
+ schemaType = getSchemaType();
+ corbaType = getCorbaType();
+
+ DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(getScope(),
+ schemas,
+ schema,
+ typeMap,
+ schemaType,
+ corbaType);
+ declaratorVisitor.visit(identifierNode);
+
}
- // declaration phase
- schemaType = getSchemaType();
- corbaType = getCorbaType();
- DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(schemas, schema, typeMap);
- declaratorVisitor.visit(typedefNode.getFirstChild().getNextSibling(),
- schemaType,
- corbaType);
+ setSchemaType(schemaType);
+ setCorbaType(corbaType);
}
private void generateAlias(AST identifierNode,
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/UnionVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/UnionVisitor.java?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/UnionVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/UnionVisitor.java Fri Nov 3 06:37:41 2006
@@ -97,8 +97,13 @@
XmlSchemaType schemaType = unionSchemaComplexType;
CorbaTypeImpl corbaType = corbaUnion;
// declaration phase
- DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(schemas, schema, typeMap);
- declaratorVisitor.visit(identifierNode, schemaType, corbaType);
+ DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(getScope(),
+ schemas,
+ schema,
+ typeMap,
+ schemaType,
+ corbaType);
+ declaratorVisitor.visit(identifierNode);
// REVISIT: are these assignments needed?
setSchemaType(unionSchemaComplexType);
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_String.wsdl
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_String.wsdl?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_String.wsdl (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_String.wsdl Fri Nov 3 06:37:41 2006
@@ -30,10 +30,10 @@
<corba:struct xmlns:ns4="http://schemas.apache.org/yoko/idl/String" xmlns="http://schemas.apache.org/yoko/idl/String/typemap" repositoryID="IDL:strStruct:1.0" name="strStruct" type="ns4:strStruct">
<corba:member name="unboundedStr" idltype="corba:string" />
<corba:member name="boundedStr10" idltype="string10" />
- <corba:member name="unboundedWStr" idltype="corba:string" />
+ <corba:member name="unboundedWStr" idltype="corba:wstring" />
<corba:member name="boundedWStr20" idltype="wstring20" />
- <corba:member name="myStringStruct" idltype="myString" />
- <corba:member name="myWStringStruct" idltype="myWString" />
+ <corba:member name="myStringStruct" idltype="corba:string" />
+ <corba:member name="myWStringStruct" idltype="corba:string" />
</corba:struct>
</corba:typeMapping>
<wsdl:types>
@@ -58,14 +58,6 @@
<xs:restriction base="wstring20">
</xs:restriction>
</xs:simpleType>
- <xs:simpleType name="myString">
- <xs:restriction base="xs:string">
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="myWString">
- <xs:restriction base="xs:string">
- </xs:restriction>
- </xs:simpleType>
<xs:complexType name="strStruct">
<xs:sequence>
<xs:element name="unboundedStr" type="xs:string">
@@ -76,9 +68,9 @@
</xs:element>
<xs:element name="boundedWStr20" type="wstring20">
</xs:element>
- <xs:element name="myStringStruct" type="myString">
+ <xs:element name="myStringStruct" type="xs:string">
</xs:element>
- <xs:element name="myWStringStruct" type="myWString">
+ <xs:element name="myWStringStruct" type="xs:string">
</xs:element>
</xs:sequence>
</xs:complexType>
@@ -95,7 +87,7 @@
<xs:element name="combineStringsResponse">
<xs:complexType>
<xs:sequence>
- <xs:element name="return" type="myString">
+ <xs:element name="return" type="xs:string">
</xs:element>
</xs:sequence>
</xs:complexType>
@@ -113,7 +105,7 @@
<xs:element name="combineWstringsResponse">
<xs:complexType>
<xs:sequence>
- <xs:element name="return" type="myWString">
+ <xs:element name="return" type="xs:string">
</xs:element>
</xs:sequence>
</xs:complexType>
@@ -148,7 +140,7 @@
<corba:operation name="combineStrings">
<corba:param xmlns="http://schemas.apache.org/yoko/idl/String/typemap" mode="in" name="string10Parm" idltype="string10" />
<corba:param xmlns="http://schemas.apache.org/yoko/idl/String/typemap" mode="in" name="myString10Parm" idltype="myString10" />
- <corba:return xmlns="http://schemas.apache.org/yoko/idl/String/typemap" name="return" idltype="myString" />
+ <corba:return name="return" idltype="corba:string" />
</corba:operation>
<wsdl:input name="combineStringsRequest">
</wsdl:input>
@@ -159,7 +151,7 @@
<corba:operation name="combineWstrings">
<corba:param xmlns="http://schemas.apache.org/yoko/idl/String/typemap" mode="in" name="wstring20Parm" idltype="wstring20" />
<corba:param xmlns="http://schemas.apache.org/yoko/idl/String/typemap" mode="in" name="myWString20Parm" idltype="myWString20" />
- <corba:return xmlns="http://schemas.apache.org/yoko/idl/String/typemap" name="return" idltype="myWString" />
+ <corba:return name="return" idltype="corba:string" />
</corba:operation>
<wsdl:input name="combineWstringsRequest">
</wsdl:input>
Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_Typedef.wsdl
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_Typedef.wsdl?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_Typedef.wsdl (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_Typedef.wsdl Fri Nov 3 06:37:41 2006
@@ -36,7 +36,7 @@
<corba:alias xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.apache.org/yoko/idl/Typedef/typemap" basetype="corba:string" repositoryID="IDL:aString:1.0" name="aString" type="xs:string" />
<corba:fixed xmlns:ns4="http://schemas.apache.org/yoko/idl/Typedef" xmlns="http://schemas.apache.org/yoko/idl/Typedef/typemap" scale="2" digits="5" repositoryID="IDL:Fixed52:1.0" name="Fixed52" type="ns4:Fixed52" />
<corba:alias xmlns:ns4="http://schemas.apache.org/yoko/idl/Typedef" xmlns="http://schemas.apache.org/yoko/idl/Typedef/typemap" basetype="SeqLong" repositoryID="IDL:mySeqLong:1.0" name="mySeqLong" type="ns4:SeqLong" />
- <corba:alias xmlns:ns4="http://schemas.apache.org/yoko/idl/Typedef" xmlns="http://schemas.apache.org/yoko/idl/Typedef/typemap" basetype="aString" repositoryID="IDL:myString:1.0" name="myString" type="ns4:aString" />
+ <corba:alias xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.apache.org/yoko/idl/Typedef/typemap" basetype="corba:string" repositoryID="IDL:myString:1.0" name="myString" type="xs:string" />
<corba:alias xmlns:ns4="http://schemas.apache.org/yoko/idl/Typedef" xmlns="http://schemas.apache.org/yoko/idl/Typedef/typemap" basetype="Fixed52" repositoryID="IDL:myFixed52:1.0" name="myFixed52" type="ns4:Fixed52" />
<corba:struct xmlns:ns4="http://schemas.apache.org/yoko/idl/Typedef" xmlns="http://schemas.apache.org/yoko/idl/Typedef/typemap" repositoryID="IDL:aStruct:1.0" name="aStruct" type="ns4:aStruct">
<corba:member name="aStructMyLong" idltype="myLong" />
@@ -139,10 +139,6 @@
</xs:element>
</xs:sequence>
</xs:complexType>
- <xs:simpleType name="aString">
- <xs:restriction base="xs:string">
- </xs:restriction>
- </xs:simpleType>
<xs:simpleType name="Fixed52">
<xs:restriction base="xs:decimal">
<xs:totalDigits value="5">
@@ -156,7 +152,7 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="myString">
- <xs:restriction base="aString">
+ <xs:restriction base="xs:string">
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="myFixed52">