You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yoko-commits@incubator.apache.org by br...@apache.org on 2006/06/09 17:40:21 UTC

svn commit: r413106 - in /incubator/yoko/trunk/tools/src: main/java/org/apache/yoko/tools/ main/java/org/apache/yoko/tools/common/ main/java/org/apache/yoko/tools/processors/idl/ main/java/org/apache/yoko/tools/processors/wsdl/ test/resources/idl/

Author: bravi
Date: Fri Jun  9 10:40:20 2006
New Revision: 413106

URL: http://svn.apache.org/viewvc?rev=413106&view=rev
Log:
Updating the idltowsdl tool to add the wsdl:service when generating the wsdl. Jira: http://issues.apache.org/jira/browse/YOKO-41

Modified:
    incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/IDLToWSDL.java
    incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/common/ToolCorbaConstants.java
    incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/idl/IDLToWSDLProcessor.java
    incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToCorbaBinding.java
    incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToIDLAction.java
    incubator/yoko/trunk/tools/src/test/resources/idl/expected_HelloWorld.wsdl

Modified: incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/IDLToWSDL.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/IDLToWSDL.java?rev=413106&r1=413105&r2=413106&view=diff
==============================================================================
--- incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/IDLToWSDL.java (original)
+++ incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/IDLToWSDL.java Fri Jun  9 10:40:20 2006
@@ -88,7 +88,10 @@
         if (env.optionSet(ToolConstants.CFG_OUTPUTDIR)) {
             env.put(ToolConstants.CFG_OUTPUTDIR, doc.getParameter(ToolConstants.CFG_OUTPUTDIR));
         }
-
+        if (env.optionSet(ToolCorbaConstants.CFG_ADDRESS)) {
+            env.put(ToolCorbaConstants.CFG_ADDRESS, doc.getParameter(ToolCorbaConstants.CFG_ADDRESS));
+        }
+        
         //need to add all the other options
     }
 

Modified: incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/common/ToolCorbaConstants.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/common/ToolCorbaConstants.java?rev=413106&r1=413105&r2=413106&view=diff
==============================================================================
--- incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/common/ToolCorbaConstants.java (original)
+++ incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/common/ToolCorbaConstants.java Fri Jun  9 10:40:20 2006
@@ -12,4 +12,5 @@
     public static final String CFG_TNS = "tns";
     public static final String CFG_SCHEMA = "schema";
     public static final String CFG_IMPORTSCHEMA = "importschema";
+    public static final String CFG_ADDRESS = "address";
 }

Modified: incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/idl/IDLToWSDLProcessor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/idl/IDLToWSDLProcessor.java?rev=413106&r1=413105&r2=413106&view=diff
==============================================================================
--- incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/idl/IDLToWSDLProcessor.java (original)
+++ incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/idl/IDLToWSDLProcessor.java Fri Jun  9 10:40:20 2006
@@ -6,11 +6,15 @@
 import java.util.Map;
 import java.util.StringTokenizer;
 
+import javax.wsdl.Binding;
 import javax.wsdl.Definition;
+import javax.wsdl.Port;
+import javax.wsdl.Service;
 import javax.xml.namespace.QName;
 
 import antlr.collections.AST;
 
+import org.apache.schemas.yoko.bindings.corba.AddressType;
 import org.apache.yoko.tools.common.CORBAConstants;
 import org.apache.yoko.tools.common.ToolCorbaConstants;
 import org.apache.yoko.tools.processors.wsdl.WSDLToCorbaBinding;
@@ -73,10 +77,10 @@
                 QName portType = (QName) it.next();
                 corbaBinding.addInterfaceName(portType.getLocalPart());
             }
-            corbaBinding.generateCORBABinding(def);
+            Binding[] bindings = corbaBinding.generateCORBABinding(def);
+            generateCORBAService(def, bindings);
             visitor.writeDefinition(outStream);
         } catch (Exception ex) {
-            ex.printStackTrace();
             throw new ToolException(ex.getMessage(), ex);
         }
     }
@@ -100,6 +104,30 @@
             fileName = new String(fileName.substring(0, fileName.length() - 4));
         }
         return fileName;
+    }
+
+    public void generateCORBAService(Definition def, Binding[] bindings) throws Exception {
+        for (int i = 0; i < bindings.length; i++) {
+            String portTypeName = bindings[i].getPortType().getQName().getLocalPart();
+            QName serviceName = new QName(def.getTargetNamespace(),
+                                          portTypeName + "CORBAService");
+            Service service = def.createService();
+            service.setQName(serviceName);
+            Port port = def.createPort();
+            port.setName(portTypeName + "CORBAPort");
+            AddressType address =
+                (AddressType) def.getExtensionRegistry().createExtension(Port.class,
+                                                                         CORBAConstants.NE_CORBA_ADDRESS);
+            String addr = (String) env.get(ToolCorbaConstants.CFG_ADDRESS);
+            if (addr == null) {
+                addr = "IOR:";
+            }
+            address.setLocation(addr);
+            port.addExtensibilityElement(address);
+            service.addPort(port);
+            port.setBinding(bindings[i]);
+            def.addService(service);
+        }
     }
     
 }

Modified: incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToCorbaBinding.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToCorbaBinding.java?rev=413106&r1=413105&r2=413106&view=diff
==============================================================================
--- incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToCorbaBinding.java (original)
+++ incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToCorbaBinding.java Fri Jun  9 10:40:20 2006
@@ -15,6 +15,7 @@
 import javax.wsdl.BindingOutput;
 import javax.wsdl.Definition;
 import javax.wsdl.Operation;
+import javax.wsdl.Port;
 import javax.wsdl.PortType;
 import javax.wsdl.WSDLException;
 import javax.wsdl.extensions.ExtensionRegistry;
@@ -97,7 +98,7 @@
         return def;
     }
 
-    public void generateCORBABinding(Definition definition) throws Exception {    
+    public Binding[] generateCORBABinding(Definition definition) throws Exception {    
         def = definition;
         if (extReg == null) {
             extReg = def.getExtensionRegistry();
@@ -154,18 +155,7 @@
             } else {
                 PortType portType = null;
                 if (portTypes.size() > 1) {
-                    StringBuffer sb = new StringBuffer();
-                    org.objectweb.celtix.common.i18n.Message msgDef = 
-                        new org.objectweb.celtix.common.i18n.Message(
-                            "Multiple PortTypes defined in wsdl", LOG);
-                    sb.append(msgDef.toString());
-                    Iterator it2 = portTypes.keySet().iterator();
-                    int cnt = 0;
-                    while (it2.hasNext()) {
-                        cnt++;
-                        sb.append("  " + cnt + " --> " + ((QName) it2.next()).getLocalPart());
-                    }
-                    throw new Exception(sb.toString());
+                    throwMultiplePortTypeException(portTypes);
                 } else {
                     portType = (PortType) portTypes.keySet().iterator().next();
                     interfaceNames.add(portType.getQName().getLocalPart());
@@ -175,12 +165,28 @@
             }
         }
 
+        Binding[] bindings = new Binding[intfs.size()];
         for (int i = 0; i < intfs.size(); i++) {
-            generateCORBABinding(def, (PortType) intfs.get(i));
+            bindings[i] = generateCORBABinding(def, (PortType) intfs.get(i));
+        }
+        return bindings;
+    }
+
+    private void throwMultiplePortTypeException(Map portTypes) throws Exception {
+        StringBuffer sb = new StringBuffer();
+        org.objectweb.celtix.common.i18n.Message msgDef = 
+            new org.objectweb.celtix.common.i18n.Message("Multiple PortTypes defined in wsdl", LOG);
+        sb.append(msgDef.toString());
+        Iterator it2 = portTypes.keySet().iterator();
+        int cnt = 0;
+        while (it2.hasNext()) {
+            cnt++;
+            sb.append("  " + cnt + " --> " + ((QName) it2.next()).getLocalPart());
         }
+        throw new Exception(sb.toString());
     }
 
-    private void generateCORBABinding(Definition definition, PortType portType) throws Exception {
+    private Binding generateCORBABinding(Definition definition, PortType portType) throws Exception {
         QName bqname = null;
 
         if (extReg == null) {
@@ -257,6 +263,7 @@
         } catch (Exception ex) {
             ex.printStackTrace();
         }
+        return binding;
     }
 
     private void addBindingOperations(Definition definition, PortType portType, Binding binding) 
@@ -294,19 +301,21 @@
     }
 
     public void addExtensions(ExtensionRegistry extRegistry) throws JAXBException {
-        try {
-                      
+        try {                      
             JAXBExtensionHelper.addExtensions(extReg, Binding.class, BindingType.class);
             JAXBExtensionHelper.addExtensions(extReg, BindingOperation.class,
                                               org.apache.schemas.yoko.bindings.corba.OperationType.class);
             JAXBExtensionHelper.addExtensions(extReg, Definition.class, TypeMappingType.class);
+            JAXBExtensionHelper.addExtensions(extReg, Port.class,
+                                              org.apache.schemas.yoko.bindings.corba.AddressType.class);
 
             extReg.mapExtensionTypes(Binding.class, CORBAConstants.NE_CORBA_BINDING, BindingType.class);
             extReg.mapExtensionTypes(BindingOperation.class, CORBAConstants.NE_CORBA_OPERATION,
                                      org.apache.schemas.yoko.bindings.corba.OperationType.class);
             extReg.mapExtensionTypes(Definition.class, CORBAConstants.NE_CORBA_TYPEMAPPING,
                                      TypeMappingType.class);
-
+            extReg.mapExtensionTypes(Port.class, CORBAConstants.NE_CORBA_ADDRESS,
+                                     org.apache.schemas.yoko.bindings.corba.AddressType.class);
         } catch (javax.xml.bind.JAXBException ex) {
             LOG.log(Level.SEVERE, "Failing to serialize/deserialize extensions", ex);
             throw new JAXBException(ex.getMessage());

Modified: incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToIDLAction.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToIDLAction.java?rev=413106&r1=413105&r2=413106&view=diff
==============================================================================
--- incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToIDLAction.java (original)
+++ incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToIDLAction.java Fri Jun  9 10:40:20 2006
@@ -13,6 +13,7 @@
 import javax.wsdl.Binding;
 import javax.wsdl.BindingOperation;
 import javax.wsdl.Definition;
+import javax.wsdl.Port;
 import javax.wsdl.extensions.ExtensionRegistry;
 import javax.xml.bind.JAXBException;
 import javax.xml.namespace.QName;
@@ -96,12 +97,16 @@
             JAXBExtensionHelper.addExtensions(extReg, BindingOperation.class,
                                               org.apache.schemas.yoko.bindings.corba.OperationType.class);
             JAXBExtensionHelper.addExtensions(extReg, Definition.class, TypeMappingType.class);
+            JAXBExtensionHelper.addExtensions(extReg, Port.class,
+                                              org.apache.schemas.yoko.bindings.corba.AddressType.class);
 
             extReg.mapExtensionTypes(Binding.class, CORBAConstants.NE_CORBA_BINDING, BindingType.class);
             extReg.mapExtensionTypes(BindingOperation.class, CORBAConstants.NE_CORBA_OPERATION,
                                      org.apache.schemas.yoko.bindings.corba.OperationType.class);
             extReg.mapExtensionTypes(Definition.class, CORBAConstants.NE_CORBA_TYPEMAPPING,
                                      TypeMappingType.class);
+            extReg.mapExtensionTypes(Port.class, CORBAConstants.NE_CORBA_ADDRESS,
+                                     org.apache.schemas.yoko.bindings.corba.AddressType.class);
 
         } catch (javax.xml.bind.JAXBException ex) {
             LOG.log(Level.SEVERE, "Failing to serialize/deserialize extensions", ex);

Modified: incubator/yoko/trunk/tools/src/test/resources/idl/expected_HelloWorld.wsdl
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/test/resources/idl/expected_HelloWorld.wsdl?rev=413106&r1=413105&r2=413106&view=diff
==============================================================================
--- incubator/yoko/trunk/tools/src/test/resources/idl/expected_HelloWorld.wsdl (original)
+++ incubator/yoko/trunk/tools/src/test/resources/idl/expected_HelloWorld.wsdl Fri Jun  9 10:40:20 2006
@@ -23,5 +23,8 @@
       </wsdl:output>
     </wsdl:operation>
   </wsdl:binding>
+  <wsdl:service name="HelloWorldCORBAService">
+    <wsdl:port name="HelloWorldCORBAPort" binding="tns:HelloWorldCORBABinding">
+<corba:address location="IOR:" />    </wsdl:port>
+  </wsdl:service>
 <corba:typeMapping targetNamespace="http://schemas.apache.org/yoko/idl/HelloWorld/corba/typemap/" /></wsdl:definitions>
-