You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by na...@apache.org on 2008/08/30 01:40:21 UTC

svn commit: r690427 - in /webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws: CLArgParser.java WSDL2Ws.java info/WSDLInfo.java

Author: nadiramra
Date: Fri Aug 29 16:40:21 2008
New Revision: 690427

URL: http://svn.apache.org/viewvc?rev=690427&view=rev
Log:
Refactor to put code in proper classes.

Modified:
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CLArgParser.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/WSDLInfo.java

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CLArgParser.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CLArgParser.java?rev=690427&r1=690426&r2=690427&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CLArgParser.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CLArgParser.java Fri Aug 29 16:40:21 2008
@@ -22,14 +22,21 @@
 
 package org.apache.axis.wsdl.wsdl2ws;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Hashtable;
 
+/**
+ * Parsers user-specified options on the command.
+ * 
+ */
 public class CLArgParser 
 {
     private boolean optionsAreValid = true;
-    public Hashtable bag;
-    public ArrayList args;
+    
+    public Hashtable bag  = new Hashtable();
+    public ArrayList args = new ArrayList();
 
     /**
      * Not very good argument parser, could be improved.  For example, there can be no spaces between
@@ -37,10 +44,7 @@
      * In addition, only single character options are allowed.
      */
     public CLArgParser(String[] args) 
-    {
-        this.bag = new Hashtable();
-        this.args = new ArrayList();
-        
+    {        
         for (int i = 0; i < args.length; i++) 
         {
             if (!args[i].startsWith("-"))
@@ -79,28 +83,116 @@
             }
         }
     }
+    
+    /**
+     * Return output directory.
+     * 
+     * @return
+     * @throws IOException
+     */
+    public String getOutputDirectory() throws IOException
+    {
+        String targetoutputLocation = getOptionBykey("o");
+        if (targetoutputLocation == null)
+            targetoutputLocation = "." + File.separator;
+        return (new File(targetoutputLocation)).getCanonicalPath();
+    }
+    
+    /**
+     * Return whether to generate wrapper-style
+     * 
+     * @return
+     */
+    public boolean isWrapperStyle()
+    {
+        String wsdlWrapStyle = getOptionBykey("w");
+        if (wsdlWrapStyle == null || wsdlWrapStyle.equalsIgnoreCase("wrapped"))
+            return true;
+        
+        return false;
+    }
+    
+    /**
+     * Return binding name.
+     * 
+     * @return
+     */
+    public String getBinding()
+    {
+        return getOptionBykey("b");
+    }
+    
+    /**
+     * Return target language.
+     * @return
+     */
+    public String getTargetLanguage()
+    {
+        String language = getOptionBykey("l");
+        if (language == null)
+            language = "c++";
+        return language;
+    }
 
     /**
-     * This method checks that we do not have extraneous inputs to the tool that we do not support
-     * @return true if the args are all supported false otherwise.
+     * Return verbose information
+     * 
+     * @return
      */
-    public boolean areOptionsValid()
+    public boolean beVerbose()
     {
-        return optionsAreValid;
-    }    
+        return isSet("v");
+    }
     
     /**
-     * These are direct arguments not - type options
-     * @param i
+     * Return timeout value
+     * 
+     * @return
+     */
+    public long getTimeout()
+    {
+        String t = getOptionBykey("t");
+        if (t == null)
+            t = "0";
+        return Long.parseLong(t);
+    }
+    
+    /**
+     * Return target engine.
+     * 
+     * @return
+     */
+    public String getTargetEngine()
+    {
+        String targetEngine = getOptionBykey("s");
+        if (targetEngine == null)
+            targetEngine = "server";
+        
+        return targetEngine;
+    }
+    
+    /**
+     * Return URI to WSDL
+     * 
+     * @return
      */
-    public String getArgument(int i) 
+    public String getURIToWSDL()
     {
-        Object obj = args.get(i);
-        if(obj == null) 
-            return null;
-        else 
-            return (String)obj;
+        if (args.size() > 0)
+            return (String)args.get(0);
+        
+        return null;
     }
+    
+    /**
+     * This method checks that we do not have extraneous inputs to the tool that we do not support
+     * 
+     * @return true if the args are all supported false otherwise.
+     */
+    public boolean areOptionsValid()
+    {
+        return optionsAreValid;
+    }    
 
     /**
      * These are direct arguments not - type options
@@ -110,11 +202,23 @@
         return this.args.size();
     }
 
+    /**
+     * Return the value specified for an option.
+     * 
+     * @param key
+     * @return
+     */
     public String getOptionBykey(String key) 
     {
         return (String) bag.get(key);
     }
 
+    /**
+     * Determines whether an option is set.
+     * 
+     * @param key
+     * @return
+     */
     public boolean isSet(String key) 
     {
         return bag.containsKey(key);

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java?rev=690427&r1=690426&r2=690427&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java Fri Aug 29 16:40:21 2008
@@ -17,7 +17,6 @@
 
 package org.apache.axis.wsdl.wsdl2ws;
 
-import java.io.File;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
@@ -64,12 +63,9 @@
 {
     public static boolean c_verbose = false;
 
-    private String  c_language;
-    private boolean c_wsdlWrappingStyle;
-    private boolean c_userRequestedWSDLWrappingStyle = false;
-    private String  c_targetoutputLocation = null;
-    private String  c_targetEngine = null;
-        
+    // Command line arguments
+    private CLArgParser c_cmdLineArgs = null;
+            
     // WSDL parser symbol table
     private SymbolTable c_symbolTable;
     
@@ -101,22 +97,11 @@
      */
     public static void main(String[] args) throws Exception
     {
-        // Get parameters and validate
-        CLArgParser data = new CLArgParser(args);
-        
-        if (!data.areOptionsValid() || data.isSet("h") || data.getArgumentCount() != 1)
-        {
-            usage();
-            return;
-        }
-
         // Kick off code generation
         try
         {
-            WSDL2Ws gen = new WSDL2Ws(data);
+            WSDL2Ws gen = new WSDL2Ws(args);
             gen.generateWrappers();
-
-            System.out.println("\nCode generation completed. Generated files in directory '" + gen.getTargetOutputLocation() + "'.");
         }
         catch (Exception e)
         {
@@ -128,58 +113,40 @@
     /**
      * Gathers the parameters passed in and parses the WSDL file, generating the symbol table. 
      * 
-     * @param cmdLineArgs
+     * @param args
      * @throws WrapperFault
      */
-    public WSDL2Ws(CLArgParser cmdLineArgs) throws WrapperFault
+    public WSDL2Ws(String[] args) throws WrapperFault
     {
         try
         {
             // ==================================================
             // Process the parameters
             // ==================================================            
+
+            // Get parameters and validate
+            c_cmdLineArgs = new CLArgParser(args);
+            if (!c_cmdLineArgs.areOptionsValid() 
+                    || c_cmdLineArgs.isSet("h") || c_cmdLineArgs.getArgumentCount() != 1)
+            {
+                usage();
+                return;
+            }
             
             // Verbose mode?
-            if (cmdLineArgs.isSet("v"))
-                c_verbose = true;
-            
-            // Target location - we resolve to canonical path and use path in completion message later on.
-            c_targetoutputLocation = cmdLineArgs.getOptionBykey("o");
-            if (c_targetoutputLocation == null)
-                c_targetoutputLocation = "." + File.separator;
-            c_targetoutputLocation = (new File(c_targetoutputLocation)).getCanonicalPath();
+            c_verbose = c_cmdLineArgs.beVerbose();
             
             // language c or c++ - CUtils.setLanguage MUST be invoked at the very beginning!
-            c_language = cmdLineArgs.getOptionBykey("l");
-            if (c_language == null)
-                c_language = "c++";
-            CUtils.setLanguage(c_language);
-            
-            // generate artifacts for server, client or both?
-            c_targetEngine = cmdLineArgs.getOptionBykey("s");
-            if (c_targetEngine == null)
-                c_targetEngine = "server";
-            
-            // Wrapped or unwrapped? The default will be wrapped. 
-            String wsdlWrapStyle = cmdLineArgs.getOptionBykey("w");
-            if (wsdlWrapStyle == null)
-                c_wsdlWrappingStyle = true;
-            else if (wsdlWrapStyle.equalsIgnoreCase("wrapped"))
-            {
-                c_wsdlWrappingStyle = true;
-                c_userRequestedWSDLWrappingStyle = true;
-            }
-            else
-                c_wsdlWrappingStyle = false;            
+            CUtils.setLanguage(c_cmdLineArgs.getTargetLanguage());
             
             // ==================================================
             // Parse the WSDL file
             // ==================================================
             
-            c_wsdlInfo = new WSDLInfo(cmdLineArgs.getArgument(0));
+            c_wsdlInfo = new WSDLInfo(c_cmdLineArgs.getURIToWSDL());
             c_wsdlInfo.setVerbose(c_verbose);
-            c_wsdlInfo.setTimeout(cmdLineArgs.getOptionBykey("t")); 
-            c_wsdlInfo.setNoWrapperStyle(c_wsdlWrappingStyle == false);
+            c_wsdlInfo.setTimeout(c_cmdLineArgs.getTimeout()); 
+            c_wsdlInfo.setNoWrapperStyle(c_cmdLineArgs.isWrapperStyle() == false);
 
             c_symbolTable = c_wsdlInfo.parse();
             
@@ -245,12 +212,17 @@
         // Wrapper info
         WrapperInfo wrapperInfo = 
             new WrapperInfo(bindingEntry.getBindingStyle().getName(), 
-                            c_language, c_targetoutputLocation, c_targetEngine,
+                            CUtils.getLanguage(), 
+                            c_cmdLineArgs.getOutputDirectory(), 
+                            c_cmdLineArgs.getTargetEngine(),
                             c_wsdlInfo.getTargetNameSpaceOfWSDL());
         
         // Service info
+        boolean userRequestedWSDLWrappingStyle = c_cmdLineArgs.isSet("w") && c_cmdLineArgs.isWrapperStyle();
         String serviceName       = WSDLInfo.getServiceName(bindingEntry);
-        ArrayList serviceMethods = c_wsdlInfo.processServiceMethods(bindingEntry, c_wsdlWrappingStyle, c_userRequestedWSDLWrappingStyle);
+        ArrayList serviceMethods = c_wsdlInfo.processServiceMethods(bindingEntry, 
+                                                                    c_cmdLineArgs.isWrapperStyle(), 
+                                                                    userRequestedWSDLWrappingStyle);
         ServiceInfo serviceInfo  = new ServiceInfo(serviceName, serviceMethods, WSDLInfo.getTargetEndPointURI(port));
         
         // Context
@@ -277,19 +249,13 @@
         // Generate the artifacts
         // ================================================== 
         
+        // Generate code
         wsg.generate();
+        
+        // Indicate code generation complete and show where stored.
+        System.out.println("\nCode generation completed. Generated files in directory '" + c_cmdLineArgs.getOutputDirectory() + "'.");
     }    
     
-    /**
-     * Returns absolute path to where the generated code will be located. 
-     * 
-     * @return the absolute path to the target location
-     */
-    public String getTargetOutputLocation()
-    {
-        return c_targetoutputLocation;
-    }
-    
     // The following 3 exposeXXX methods attempts to expose anonymous types so that 
     // the types are externalized to the user.  
     

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/WSDLInfo.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/WSDLInfo.java?rev=690427&r1=690426&r2=690427&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/WSDLInfo.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/WSDLInfo.java Fri Aug 29 16:40:21 2008
@@ -210,12 +210,9 @@
      * 
      * @param t  timeout value in seconds. Null implies 0 timeout (no timeout).
      */
-    public void setTimeout(String t)
+    public void setTimeout(long t)
     {
-        if (t == null)
-            t = "0"; 
-        
-        c_timeout = Long.parseLong(t);
+        c_timeout = t;
     }
     
     /**