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/27 16:09:33 UTC
svn commit: r468436 - in
/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl:
OperationVisitor.java ParamDclVisitor.java ParamTypeSpecVisitor.java
PortTypeVisitor.java
Author: mvescovi
Date: Fri Oct 27 09:09:32 2006
New Revision: 468436
URL: http://svn.apache.org/viewvc?view=rev&rev=468436
Log:
Initial refactor of <op_dcl> IDL grammar rule and its derivation rules.
Added:
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamDclVisitor.java (with props)
incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamTypeSpecVisitor.java (with props)
Modified:
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
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=468436&r1=468435&r2=468436
==============================================================================
--- 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 Oct 27 09:09:32 2006
@@ -20,32 +20,78 @@
package org.apache.yoko.tools.processors.idl;
import javax.wsdl.Binding;
+import javax.wsdl.BindingFault;
+import javax.wsdl.BindingInput;
import javax.wsdl.BindingOperation;
+import javax.wsdl.BindingOutput;
import javax.wsdl.Definition;
+import javax.wsdl.Fault;
+import javax.wsdl.Input;
+import javax.wsdl.Message;
import javax.wsdl.Operation;
+import javax.wsdl.Output;
+import javax.wsdl.Part;
import javax.wsdl.PortType;
import javax.wsdl.WSDLException;
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;
import org.apache.schemas.yoko.bindings.corba.OperationType;
+import org.apache.schemas.yoko.bindings.corba.RaisesType;
+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.XmlSchemaComplexType;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaSequence;
+import org.apache.ws.commons.schema.XmlSchemaType;
import org.apache.yoko.wsdl.CorbaConstants;
+import org.apache.yoko.wsdl.CorbaTypeImpl;
public class OperationVisitor implements ASTVisitor {
+ private static final String REQUEST_SUFFIX = "Request";
+ private static final String RESPONSE_SUFFIX = "Response";
+
+ private static final String IN_PARAMETER = "inparameter";
+ private static final String OUT_PARAMETER = "outparameter";
+ private static final String INOUT_PARAMETER = "inoutparameter";
+ private static final String RETURN_PARAMETER = "return";
+
+ private XmlSchemaCollection schemas;
+ private XmlSchema schema;
+ private TypeMappingType typeMap;
+
private Definition definition;
private TypesVisitor typesVisitor;
private ExtensionRegistry extReg;
private PortType portType;
private Binding binding;
- public OperationVisitor(Definition wsdlDefinition,
+ private Message inputMsg;
+ private Message outputMsg;
+
+ private Part inputPart;
+ private Part outputPart;
+
+ private OperationType corbaOperation;
+
+ public OperationVisitor(XmlSchemaCollection xmlSchemas,
+ XmlSchema xmlSchema,
+ TypeMappingType typeMapRef,
+ Definition wsdlDefinition,
TypesVisitor typeVisitor,
PortType wsdlPortType,
Binding wsdlBinding) {
+ schemas = xmlSchemas;
+ schema = xmlSchema;
+ typeMap = typeMapRef;
definition = wsdlDefinition;
typesVisitor = typeVisitor;
extReg = definition.getExtensionRegistry();
@@ -53,7 +99,7 @@
binding = wsdlBinding;
}
- public static boolean accept(AST node) {
+ public static boolean accept(XmlSchemaCollection schemas, XmlSchema schema, AST node) {
boolean result = false;
AST node2 = node.getFirstChild();
if (node2.getType() == IDLTokenTypes.LITERAL_oneway) {
@@ -63,51 +109,280 @@
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
+ || StringVisitor.accept(node2)
+ || ScopedNameVisitor.accept(schemas, schema, node2);
}
return result;
}
public void visit(AST node) {
- MessageVisitor msgVisitor = new MessageVisitor(definition, typesVisitor);
- Operation op = definition.createOperation();
- op.setName(node.toString());
- op.setUndefined(false);
- portType.addOperation(op);
- BindingOperation bindingOperation = createBindingOperation(binding, op);
- msgVisitor.setOperation(op);
- msgVisitor.setBindingOperation(bindingOperation);
- AST node2 = node.getFirstChild();
- if (node2 != null && node2.getType() == IDLTokenTypes.LITERAL_oneway) {
- // oneway operations map to operations with input message
- msgVisitor.createInputMessage();
+ // <op_dcl> ::= [<op_attribute>] <op_type_spec>
+ // <identifier> <parameter_dcls>
+ // [<raises_expr>] [<context_expr>]
+ // <op_attribute> ::= "oneway"
+ // <op_type_spec> ::= <param_type_spec>
+ // | "void"
+ // <parameter_dcls> ::= "(" <param_dcl> {"," <param_dcl>}* ")"
+ // | "(" ")"
+ // <raises_expr> ::= "raises" "(" <scoped_name> {"," <scoped_name>}* ")"
+ // <context_expr> ::= "context" "(" <string_literal> {"," <string_literal>}* ")"
+
+
+ Operation operation = generateOperation(node.toString());
+
+ BindingOperation bindingOperation = generateBindingOperation(binding, operation);
+
+ XmlSchemaSequence inputWrappingSequence = new XmlSchemaSequence();
+ XmlSchemaElement inputElement = generateWrapper(new QName(schema.getTargetNamespace(),
+ operation.getName()),
+ inputWrappingSequence);
+ inputMsg = generateInputMessage(operation, bindingOperation);
+ inputPart = generateInputPart(inputMsg, inputElement);
+
+ // <op_attribute>
+ node = node.getFirstChild();
+ XmlSchemaSequence outputWrappingSequence = null;
+ XmlSchemaElement outputElement = null;
+ if (node != null && (node.getType() == IDLTokenTypes.LITERAL_oneway)) {
+ // oneway operations map to operations with only input message
+ // no outputMsg nor outputPart need be created
+ node = node.getNextSibling();
} else {
// normal operations map to request-response operations
// with input and output messages
- msgVisitor.createInputMessage();
- msgVisitor.createOutputMessage();
+ outputWrappingSequence = new XmlSchemaSequence();
+ outputElement = generateWrapper(new QName(schema.getTargetNamespace(),
+ operation.getName() + RESPONSE_SUFFIX),
+ outputWrappingSequence);
+ outputMsg = generateOutputMessage(operation, bindingOperation);
+ outputPart = generateOutputPart(outputMsg, outputElement);
}
- msgVisitor.visit(node);
+
+ // <op_type_spec>
+ visitOpTypeSpec(node, outputWrappingSequence);
+
+ // <parameter_dcls>
+ node = node.getNextSibling();
+ while (ParamDclVisitor.accept(node)) {
+ ParamDclVisitor visitor = new ParamDclVisitor(schemas,
+ schema,
+ typeMap,
+ inputWrappingSequence,
+ outputWrappingSequence,
+ corbaOperation);
+ visitor.visit(node);
+
+ node = node.getNextSibling();
+ }
+
+ // <raises_expr>
+ if (node != null
+ && node.getType() == IDLTokenTypes.LITERAL_raises) {
+ node = node.getFirstChild();
+
+ while (node != null) {
+// ScopedNameVisitor visitor = new ScopedNameVisitor(schemas,
+// schema,
+// typeMap);
+// visitor.visit(node);
+// XmlSchemaType schemaType = visitor.getSchemaType();
+// CorbaTypeImpl corbaType = visitor.getCorbaType();
+
+ createFaultMessage(node, operation, bindingOperation);
+
+ node = node.getNextSibling();
+ }
+ }
+
}
- private BindingOperation createBindingOperation(Binding wsdlBinding, Operation op) {
+ private Operation generateOperation(String name) {
+ Operation op = definition.createOperation();
+ op.setName(name);
+ op.setUndefined(false);
+ portType.addOperation(op);
+ return op;
+ }
+
+ private BindingOperation generateBindingOperation(Binding wsdlBinding, Operation op) {
BindingOperation bindingOperation = definition.createBindingOperation();
- OperationType operationType = null;
+ //OperationType operationType = null;
try {
- operationType = (OperationType)extReg.createExtension(BindingOperation.class,
- CorbaConstants.NE_CORBA_OPERATION);
+ corbaOperation = (OperationType)extReg.createExtension(BindingOperation.class,
+ CorbaConstants.NE_CORBA_OPERATION);
} catch (WSDLException ex) {
throw new RuntimeException(ex);
}
- operationType.setName(op.getName());
- bindingOperation.addExtensibilityElement(operationType);
+ corbaOperation.setName(op.getName());
+ bindingOperation.addExtensibilityElement(corbaOperation);
bindingOperation.setOperation(op);
bindingOperation.setName(op.getName());
binding.addBindingOperation(bindingOperation);
return bindingOperation;
}
+
+ public Message generateInputMessage(Operation operation, BindingOperation bindingOperation) {
+ Message msg = definition.createMessage();
+ msg.setQName(new QName(definition.getTargetNamespace(), operation.getName()));
+ msg.setUndefined(false);
+
+ String inputName = operation.getName() + REQUEST_SUFFIX;
+ Input input = definition.createInput();
+ input.setName(inputName);
+ input.setMessage(msg);
+
+ BindingInput bindingInput = definition.createBindingInput();
+ bindingInput.setName(inputName);
+
+ bindingOperation.setBindingInput(bindingInput);
+ operation.setInput(input);
+
+ definition.addMessage(msg);
+
+ return msg;
+ }
+
+ public Message generateOutputMessage(Operation operation, BindingOperation bindingOperation) {
+ Message msg = definition.createMessage();
+ msg.setQName(new QName(definition.getTargetNamespace(),
+ operation.getName() + RESPONSE_SUFFIX));
+ msg.setUndefined(false);
+
+ String outputName = operation.getName() + RESPONSE_SUFFIX;
+ Output output = definition.createOutput();
+ output.setName(outputName);
+ output.setMessage(msg);
+
+ BindingOutput bindingOutput = definition.createBindingOutput();
+ bindingOutput.setName(outputName);
+
+ bindingOperation.setBindingOutput(bindingOutput);
+ operation.setOutput(output);
+
+ definition.addMessage(msg);
+
+ return msg;
+ }
+
+ private Part generateInputPart(Message inputMessage, XmlSchemaElement element) {
+ // message - part
+ Part part = definition.createPart();
+ //QName element = inputMsg.getQName();
+ part.setName(IN_PARAMETER);
+ part.setElementName(element.getQName());
+ //typesVisitor.addWrapper(element, inWrappingSequence);
+ inputMessage.addPart(part);
+ return part;
+ }
+
+ private Part generateOutputPart(Message outputMessage, XmlSchemaElement element) {
+ // message - part
+ Part part = definition.createPart();
+ //QName element = outputMsg.getQName();
+ part.setName(OUT_PARAMETER);
+ part.setElementName(element.getQName());
+ //typesVisitor.addWrapper(element, outWrappingSequence);
+ outputMessage.addPart(part);
+ return part;
+ }
+
+ /*-
+ * Build the Wrapped Document Style wrapping elements
+ * i.e. <xs:element name="...">
+ * <xs:complexType>
+ * <xs:sequence>
+ * ...
+ * </xs:sequence>
+ * </xs:complexType>
+ * </xs:element>
+ */
+ private XmlSchemaElement generateWrapper(QName el, XmlSchemaSequence wrappingSequence) {
+ XmlSchemaComplexType schemaComplexType = new XmlSchemaComplexType(schema);
+ schemaComplexType.setParticle(wrappingSequence);
+
+ XmlSchemaElement wrappingSchemaElement = new XmlSchemaElement();
+ wrappingSchemaElement.setQName(el);
+ wrappingSchemaElement.setName(el.getLocalPart());
+ wrappingSchemaElement.setSchemaType(schemaComplexType);
+
+ schema.getElements().add(el, wrappingSchemaElement);
+ schema.getItems().add(wrappingSchemaElement);
+
+ return wrappingSchemaElement;
+ }
+
+ private XmlSchemaElement addElement(XmlSchemaSequence schemaSequence,
+ XmlSchemaType schemaType,
+ String name) {
+ XmlSchemaElement element = new XmlSchemaElement();
+ element.setName(name);
+ //element.setQName(new QName(schema.getTargetNamespace(), name));
+ element.setSchemaTypeName(schemaType.getQName());
+
+ schemaSequence.getItems().add(element);
+
+ return element;
+ }
+
+ private void visitOpTypeSpec(AST node, XmlSchemaSequence outputWrappingSequence) {
+ if (node.getType() == IDLTokenTypes.LITERAL_void) {
+ // nothing to do here, move along
+ return;
+ } else {
+ ParamTypeSpecVisitor visitor = new ParamTypeSpecVisitor(schemas, schema, typeMap);
+ visitor.visit(node);
+
+ XmlSchemaType schemaType = visitor.getSchemaType();
+ CorbaTypeImpl corbaType = visitor.getCorbaType();
+
+ addElement(outputWrappingSequence, schemaType, RETURN_PARAMETER);
+ addCorbaReturn(corbaType, RETURN_PARAMETER);
+ }
+ }
+
+ private void addCorbaReturn(CorbaTypeImpl corbaType, String partName) {
+ ArgType param = new ArgType();
+ param.setName(partName);
+ param.setIdltype(corbaType.getQName());
+ corbaOperation.setReturn(param);
+ }
+
+ private void createFaultMessage(AST node,
+ Operation operation,
+ BindingOperation bindingOperation) {
+ String exceptionName = node.toString();
+
+ // message
+ Message faultMsg = definition.createMessage();
+ faultMsg.setQName(new QName(definition.getTargetNamespace(), exceptionName));
+ faultMsg.setUndefined(false);
+
+ // message - part
+ Part part = definition.createPart();
+ part.setName("exception");
+ // REVISIT: should be reading QName from exception XmlSchemaElement
+ // part.setElementName(element.getQName());
+ part.setElementName(new QName(definition.getTargetNamespace(), exceptionName));
+ faultMsg.addPart(part);
+
+ // porttype - operation - fault
+ Fault fault = definition.createFault();
+ fault.setMessage(faultMsg);
+ fault.setName(faultMsg.getQName().getLocalPart());
+ operation.addFault(fault);
+
+ // binding - operation - corba:operation - corba:raises
+ RaisesType raisesType = new RaisesType();
+ raisesType.setException(new QName(typesVisitor.getCorbaTypeMapping().getTargetNamespace(),
+ exceptionName));
+ corbaOperation.getRaises().add(raisesType);
+
+ // binding - operation - fault
+ BindingFault bindingFault = definition.createBindingFault();
+ bindingFault.setName(faultMsg.getQName().getLocalPart());
+ bindingOperation.addBindingFault(bindingFault);
+
+ definition.addMessage(faultMsg);
+ }
}
Added: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamDclVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamDclVisitor.java?view=auto&rev=468436
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamDclVisitor.java (added)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamDclVisitor.java Fri Oct 27 09:09:32 2006
@@ -0,0 +1,127 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+
+package org.apache.yoko.tools.processors.idl;
+
+import antlr.collections.AST;
+
+import org.apache.schemas.yoko.bindings.corba.ModeType;
+import org.apache.schemas.yoko.bindings.corba.OperationType;
+import org.apache.schemas.yoko.bindings.corba.ParamType;
+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.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaSequence;
+import org.apache.ws.commons.schema.XmlSchemaType;
+
+import org.apache.yoko.wsdl.CorbaTypeImpl;
+
+public class ParamDclVisitor extends TypeSpecVisitorBase {
+
+ private XmlSchemaCollection schemas;
+ private XmlSchema schema;
+ private TypeMappingType typeMap;
+ private XmlSchemaSequence inWrappingSequence;
+ private XmlSchemaSequence outWrappingSequence;
+ private OperationType corbaOperation;
+
+ public ParamDclVisitor(XmlSchemaCollection xmlSchemas,
+ XmlSchema xmlSchema,
+ TypeMappingType corbaTypeMap,
+ XmlSchemaSequence inWrapSeq,
+ XmlSchemaSequence outWrapSeq,
+ OperationType corbaOp) {
+ super(xmlSchemas, xmlSchema, corbaTypeMap);
+ schemas = xmlSchemas;
+ schema = xmlSchema;
+ typeMap = corbaTypeMap;
+ inWrappingSequence = inWrapSeq;
+ outWrappingSequence = outWrapSeq;
+ corbaOperation = corbaOp;
+ }
+
+ public static boolean accept(AST node) {
+ boolean result = false;
+ if (node != null) {
+ int type = node.getType();
+ result = type == IDLTokenTypes.LITERAL_in
+ || type == IDLTokenTypes.LITERAL_out
+ || type == IDLTokenTypes.LITERAL_inout;
+ }
+ return result;
+ }
+
+ public void visit(AST node) {
+ // <param_dcl> ::= <param_attribute> <param_type_spec> <simple_declarator>
+ // <param_attribute> ::= "in"
+ // | "out"
+ // | "inout"
+
+ AST typeNode = node.getFirstChild();
+ AST nameNode = typeNode.getNextSibling();
+
+ ParamTypeSpecVisitor visitor = new ParamTypeSpecVisitor(schemas, schema, typeMap);
+ visitor.visit(typeNode);
+ XmlSchemaType schemaType = visitor.getSchemaType();
+ CorbaTypeImpl corbaType = visitor.getCorbaType();
+
+ switch (node.getType()) {
+ case IDLTokenTypes.LITERAL_in:
+ addElement(inWrappingSequence, schemaType, nameNode.toString());
+ addCorbaParam(corbaType, ModeType.IN, nameNode.toString());
+ break;
+ case IDLTokenTypes.LITERAL_out:
+ addElement(outWrappingSequence, schemaType, nameNode.toString());
+ addCorbaParam(corbaType, ModeType.OUT, nameNode.toString());
+ break;
+ case IDLTokenTypes.LITERAL_inout:
+ addElement(inWrappingSequence, schemaType, nameNode.toString());
+ addElement(outWrappingSequence, schemaType, nameNode.toString());
+ addCorbaParam(corbaType, ModeType.INOUT, nameNode.toString());
+ break;
+ default:
+ throw new RuntimeException("[ParamDclVisitor: illegal IDL!]");
+ }
+
+
+ setSchemaType(schemaType);
+ setCorbaType(corbaType);
+ }
+
+ private XmlSchemaElement addElement(XmlSchemaSequence schemaSequence,
+ XmlSchemaType schemaType,
+ String name) {
+ XmlSchemaElement element = new XmlSchemaElement();
+ element.setName(name);
+ element.setSchemaTypeName(schemaType.getQName());
+ schemaSequence.getItems().add(element);
+ return element;
+ }
+
+ private void addCorbaParam(CorbaTypeImpl corbaType, ModeType mode, String partName) {
+ ParamType param = new ParamType();
+ param.setName(partName);
+ param.setMode(mode);
+ param.setIdltype(corbaType.getQName());
+ corbaOperation.getParam().add(param);
+ }
+
+}
Propchange: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamDclVisitor.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: 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=auto&rev=468436
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamTypeSpecVisitor.java (added)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamTypeSpecVisitor.java Fri Oct 27 09:09:32 2006
@@ -0,0 +1,75 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+
+package org.apache.yoko.tools.processors.idl;
+
+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;
+
+public class ParamTypeSpecVisitor extends TypeSpecVisitorBase {
+
+ private XmlSchemaCollection schemas;
+ private XmlSchema schema;
+ private TypeMappingType typeMap;
+
+ public ParamTypeSpecVisitor(XmlSchemaCollection xmlSchemas,
+ XmlSchema xmlSchema,
+ TypeMappingType corbaTypeMap) {
+ super(xmlSchemas, xmlSchema, corbaTypeMap);
+ schemas = xmlSchemas;
+ schema = xmlSchema;
+ typeMap = corbaTypeMap;
+ }
+
+ public void visit(AST node) {
+ // <param_type_spec> ::= <base_type_spec>
+ // | <string_type>
+ // | <wstring_type>
+ // | <scoped_name>
+
+
+ TypeSpecVisitor visitor = null;
+
+
+ if (PrimitiveTypesVisitor.accept(node)) {
+ // base_type_spec
+ visitor = new PrimitiveTypesVisitor(schemas, schema, typeMap);
+
+ } else if (StringVisitor.accept(node)) {
+ // string_type_spec
+ // wstring_type_spec
+ visitor = new StringVisitor(schemas, schema, typeMap);
+
+ } else if (ScopedNameVisitor.accept(schemas, schema, node)) {
+ // scoped_name
+ visitor = new ScopedNameVisitor(schemas, schema, typeMap);
+
+ }
+
+
+ visitor.visit(node);
+
+ setSchemaType(visitor.getSchemaType());
+ setCorbaType(visitor.getCorbaType());
+ }
+}
Propchange: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamTypeSpecVisitor.java
------------------------------------------------------------------------------
svn:eol-style = native
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=468436&r1=468435&r2=468436
==============================================================================
--- 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 Oct 27 09:09:32 2006
@@ -115,13 +115,20 @@
while (exportNode != null) {
if (TypeDclVisitor.accept(exportNode)) {
- TypeDclVisitor visitor = new TypeDclVisitor(schemas, schema, typeMap, typesVisitor);
+ TypeDclVisitor visitor = new TypeDclVisitor(schemas,
+ schema,
+ typeMap,
+ typesVisitor);
visitor.visit(exportNode);
} else if (ConstVisitor.accept(exportNode)) {
- ConstVisitor visitor = new ConstVisitor(schemas, schema, typeMap);
+ ConstVisitor visitor = new ConstVisitor(schemas,
+ schema,
+ typeMap);
visitor.visit(exportNode);
} else if (ExceptionVisitor.accept(exportNode)) {
- ExceptionVisitor visitor = new ExceptionVisitor(schemas, schema, typeMap);
+ ExceptionVisitor visitor = new ExceptionVisitor(schemas,
+ schema,
+ typeMap);
visitor.visit(exportNode);
} else if (AttributeVisitor.accept(exportNode)) {
AttributeVisitor attributeVisitor = new AttributeVisitor(definition,
@@ -129,8 +136,11 @@
portType,
binding);
attributeVisitor.visit(exportNode);
- } else if (OperationVisitor.accept(exportNode)) {
- OperationVisitor visitor = new OperationVisitor(definition,
+ } else if (OperationVisitor.accept(schemas, schema, exportNode)) {
+ OperationVisitor visitor = new OperationVisitor(schemas,
+ schema,
+ typeMap,
+ definition,
typesVisitor,
portType,
binding);